Forum Webscript.Ru
Программирование => PHP => Тема начата: Alexandr от 08 Июля 2002, 12:56:53
-
Как к прокси подключиться с помощью PHP?
-
fsockopen().
-
Знаю, я что ч/з
fsockopen()
. Поподробнее плизз.
Надо подключиться и скачать файл по fopen.
-
скачать файл по fopen
Качай через сокет
Поподробнее плизз
Соединяйся с proxy, а через него уже запрашивай документ.
$fp = fsockopen(\'100.100.100.1\', 8000);
$query = \'GET http://we.ru/some.zip HTTP/1.0\\r\\n\'; // и т.д.
-
Понятно! Ща поюзаю!
-
Соединяйся с proxy, а через него уже запрашивай документ.
$fp = fsockopen(\'100.100.100.1\', 8000);
$query = \'GET http://we.ru/some.zip HTTP/1.0\\r\\n\'; // и т.д.
Чёт не выходит, может я где налажал?
Пишу:
$fp=fsockopen(\'195.208.211.201\', 3128);
$query=\'GET http://webscript.ru/ HTTP/1.0
\';
fputs($fp, $query);
echo fgets($fp, 1000);
fclose($fp);
?>
А он мне (локально):
Warning: Supplied argument is not a valid File-Handle resource in d:\\web\\localhost\\www\\_proba.php on line 5
Warning: Supplied argument is not a valid File-Handle resource in d:\\web\\localhost\\www\\_proba.php on line 6
Warning: Supplied argument is not a valid File-Handle resource in d:\\web\\localhost\\www\\_proba.php on line 7
Строки соответственно:
fputs($fp, $query);
echo fgets($fp, 1000);
fclose($fp);
А на серваке вообще ничего не выводит.
-
Попробуй заменить
$fp=fsockopen(\'195.208.211.201\', 3128);
на $fp = fsockopen(\'195.208.211.201\', 3128) or die("Не могу соединиться");
По ходу он у тебя не соединяется. Проверь данные прокси. Кстати, запрос у тебя неверный.
-
Кстати, запрос у тебя неверный.
В смысле?
А как правильно?
-
Хотя бы так:
$query = "GET $url HTTP/1.0\\r\\n".
"Host: la.ru\\r\\n".
"User-agent: melcosoft_browser aka IE\\r\\n".
"\\r\\n";
Но только ошибка у тебя выдается не из-за запроса.
-
Написал:
$fp = fsockopen(\'195.208.211.201\', 3128) or die("Не могу соединиться");
И действительно не робит. Срабатывает die.
IP не битый (в брозере робит).
Help!!!! Please, heeeeelp!!!
-
А с чего бы он у тебя робил? Ты, наверное, самый тормозной сервак нашел. Если хочешь коннектиться именно через него - то поставь в fsockopen timeout побольше.
Либо сходи на http://www.multiproxy.org - там есть список анонимных прокси.
Код $fp=fsockopen(\'machinetransport.com\',80) or die(\'Can"t establish connection\'); работет
-
Ну да. С сайтами заработало.
Например так:
$fp=fsockopen(\'www.samair.ru\', 80) or die(\'Can"t establish connection\');
$query = "GET http://www.samair.ru/cgi/proxycheck.cgi HTTP/1.0\\r\\n\\r\\n";
fputs($fp, $query);
while (!feof($fp)) echo fgets($fp, 1000);
fclose($fp);
Всё ok. Без проблем.
А вот так:
$fp=fsockopen(\'195.239.30.141\', 3128) or die(\'Can"t establish connection\');
$query = "GET http://www.samair.ru/cgi/proxycheck.cgi HTTP/1.0\\r\\n\\r\\n";
fputs($fp, $query);
while (!feof($fp)) echo fgets($fp, 1000);
fclose($fp);
Пишет Can"t establish connection.
Прокси брал с
http://www.samair.ru/xwww/701-800.htm (http://www.samair.ru/xwww/701-800.htm)
Попробовал штуки 3.
Может кто подскажет в чём дело.
Если с самой проксёй, то дайте хоть 1 адрес нормального проки, а если в паге, то, плиз, подправте код.
-
Alexandr, ты лучший! Спасибо за вопросы...
-
Если с самой проксёй, то дайте хоть 1 адрес нормального проки
А ты думаешь, я адрес в примере с потолка брал? И урлик полезный, куда сходить, давал просто так?
-
Maniac точно!!!
пасиба. вродь чёт заворочалось!
Пасиба всем за терпение!
-
Maniac
поставь в fsockopen timeout побольше
Как?
-
Как?
int fsockopen ( string hostname, int port [, int errno [, string errstr [, float timeout]]])
Вот так
-
int fsockopen ( string hostname, int port [, int errno [, string errstr [, float timeout]]])
Круто, а у мя в Котеров\'е написано только
int fsockopen ( string hostname, int port [, int errno [, string errstr]])
-
The timeout parameter was introduced in PHP 3.0.9 and UDP support was added in PHP 4.
У Котерова, видать, устаревшая информация :)
И вообще, рекомендую скачать с php.net мануал...
-
GotZfild
Хотя бы так:
PHP:
$query = "GET $url HTTP/1.0\\r\\n".
"Host: la.ru\\r\\n".
"User-agent: melcosoft_browser aka IE\\r\\n".
"\\r\\n";
Подскажи пожалуйста где можно более подробно про запросі почитать(на русском)?
-
GotZfild
Хотя бы так:
PHP:
$query = "GET $url HTTP/1.0\\r\\n".
"Host: la.ru\\r\\n".
"User-agent: melcosoft_browser aka IE\\r\\n".
"\\r\\n";
Подскажи пожалуйста где можно более подробно про заросы почитать(на русском)?
-
Million и все остальные.
Поймите вы наконецто, что ели вы избрали тернистый путь программиста, то тем самым вы утвердили для себя 2 родных языка: английский и тот на котором говорите. Не выучив английский профессиональный программист из вас не получится.
Уделите пожалуйста время на изучение этого языка.
Если конкретно по твоему вопросу Million, то тебе нужна дока по HTTP- протоколу. Я много всяких док по нему видел, но хорошего ничего. Вроде на citforum-e что-то было. Вот еще можешь почитать http://www.ya.ru/yandsearch?text=http+2068
-
int fsockopen ( string hostname, int port [, int errno [, string errstr [, float timeout]]])
Блин. Чёт ну хочет timeout работать.
Пишу (не рабочий прокси):
$fp=fsockopen(\'dnai-216-15-34-70.cust.dnai.com\', 80, $t, $t2, 0.00000000001) or die("No");
die("Yes");
И жду около 20 сек.
А рабочий прокси нормал.
Как быть?
-
Сходи на PHP.net - там в разделе fsockopen есть пользовательские комментарии - авось помогут.
В качестве одного из способов лечения предлагается set_sock_timeout() после fsockopen
-
08-Jun-2002 03:46
PHP Version 4.2.0/WIN32
$iptoopen="127.0.0.1";
$porttoopen = 2593;
$ltime=time();
$connection = fsockopen ($iptoopen, $porttoopen, &$errno,
&$errstr, 1);
if (!$connection){
echo "Can not Connect: ($errno)-$errstr";
}else{
fputs($connection, "\\n");
socket_set_timeout($connection, 1, 1);
echo "Ok I\'am Connected to the port!";
}
$htime=time();
$ttime=($htime-$ltime);
echo "Time =$ttime Seconds!";
echo "Done! Closing port!";
fclose ($connection);
?>
If the port does not respond, it takes about 21 seconds to come back!
Shouldnt it be 1 second? That is what is stated in the
"fsockopen"?
Похоже с той же проблемой столкнулись.
-
Может кто сможет помочь? Хочу разобраться с socks4\\5.
пишу вот так:
$s_host = "12.39.17.42"; // адрес
$s_port = "1080"; // и порт сокс (socks) сервера
$url = "http://mail.ru/"; // запрашиваемый документ
$fp = fsockopen("$s_host", $s_port, &$errno, &$errstr);
if(!$fp) {
echo "$errstr ($errno)
\\n";
} else {
fputs($fp, "GET $url HTTP/1.0\\r\\n".
"Host: la.ru\\r\\n".
"User-agent: IE 6.0\\r\\n".
"\\r\\n");
while(!feof($fp)) {
echo fgets($fp,1024);
}
fclose($fp);
}
?>
кусок access_log индейца при выполнении скрипта:
localhost.localdomain - - [30/Jul/2002:02:07:23 +0400] "GET /sock.php HTTP/1.1" 200 5
но ничего не происходит. все адреса и порты насстоящие и работающие. если указать порт обычного прокси то всё прекрасно работает - скрипт выдаёт начальную страницу mail.ru.
в чём дело? почему socks-сервер молчит? может я даю ему неправильный запрос?
-
На phpclub-е Slach как-то выкладывал функцию для работы через Socks. Поищи