в чем проблема fsockopen? (via socks proxy)

Статус
В этой теме нельзя размещать новые ответы.

x@nder

Постоялец
Регистрация
3 Апр 2007
Сообщения
131
Реакции
8
PHP:
$fp = fsockopen("tcp://85.119.217.109", 1080, $errno, $errstr, 5) or die("$errstr ($errno)");

 $get ="GET /passport?mode=register&msg=mail&retpath=http://mail.yandex.ru HTTP/1.0\r\n";
 $get.="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT5.1; MRA 4.4 (build 01331))\r\n";
 $get.="Accept-Language: ru\r\n";
 $get.="Host: yandex.ru\r\n\r\n";

 fwrite($fp, $get);

 $buffer= fgets($fp);
 while (!feof ($fp)) {
    $buffer.= fgets($fp);
 }

echo $buffer;
с HTTP прокси все работает ок.
но я Хочу заюзать сокс прокси.
Но нифига не работает.
Пробывал на локальной машине с Денвером а также на хостинге.
Прокси пробывал разные.

при выполении скрипта получаю только
HTML:
 [T /pas
или
HTML:
 [T /inf

Что за траблы?
 
socks не знает что такое http, его протоколы прикладного уровня вообще не касаются. для создания соединения через сокс надо по сокс протоколу сказать о своих намерениях и уже в установленный туннель писать http запрос.

сокс протокол крайне простой. реализовать туннель через него не просто, а очень просто. описание пятой версии
Для просмотра ссылки Войди или Зарегистрируйся
 
А есть примеры реализации?
А ещё лучше, может есть готовые классы?
 
я для 5х соксов юзаю сию функцию:

PHP:
function socks_connect($host, $port, $dh, $dp) //адрес скоса, порт сокса, адрес сайта, порт сайта.
{
	$result=true;
	$f = fsockopen($host, $port) or $result=false;
	if($result) 
	{
		$h = gethostbyname($dh);
		preg_match("#(\d+)\.(\d+)\.(\d+)\.(\d+)#", $h, $m);
		fwrite($f, "\x05\x01\x00");
		$r = fread($f, 2);
		if(!(ord($r[0])==5 and ord($r[1])==0)) $result=false;
		if($result)
		{
			fwrite($f, "\x05\x01\x00\x01" . chr($m[1]).chr($m[2]).chr($m[3]).chr($m[4]).chr($dp/256).chr($dp%256));
			$r = fread($f, 10);
			if(!(ord($r[0])==5 and ord($r[1])==0))
				return false;
			else
				return $f;
		}
	}
}
возвращает false если не удалось установить соединение.
использовать так же как fsockopen:

PHP:
$fp=socks_connect('1.2.3.4',1080,'ya.ru',80);
и далее как в примере у автора сабже
 
Всем ответившим спасибо.
Стало все проявлятся что к чему.

По cуществу хочу добавить что нашел массивный класс

Который умееет почти всё.

Возможности и в самом деле впечатляющие.

Class that implements requests to Web resources using the HTTP protocol.

It features:

- May submit HTTP requests with any method, to any page, to any server, connecting to any port.
- Provides support to setup connection and request arguments from a given URL.
- May submit requests via a proxy server with support for authentication if necessary.
- May establish connections via a SOCKS server.
- Supports HTTP direct access or proxy based authentication mechanisms via SASL class library like HTTP Basic, HTTP Digest or NTLM (Windows or Samba).
- Support secure connections (https) via Curl library with SSL support, or at least PHP 4.3.0 with OpenSSL support, or via a non-SSL HTTP proxy server.
- Supports accessing secure pages using SSL certificates and private keys using Curl library
- Supports user defined request headers.
- Supports POST requests with a user defined array of form values.
- Supports POST requests with a user defined request bodies for instance for making requests to SOAP services.
- Supports streaming requests that require uploading large amounts of data of undefined length in small chunks to avoid exceeding PHP memory limits
- Supports requests to sites hosting virtual Web servers.
- Retrieves the HTTP response headers and body data separately.
- Support HTTP 1.1 chunked content encoding
- Supports session and persistent cookies.
- Provides optional handling of redirected pages.
- Supports defining connection and data transfer timeout values.
- Can output connection debug information in plain text or formatted as HTML.
- An add-on class is provided to login to Yahoo sites and perform actions on the behalf of the logged users like exporting the user address book or sending invitation to a group.


Самое главное он не заброшен (тобиш активно выходят новые версии)

Рекомендую всем
 
Всем ответившим спасибо.
Стало все проявлятся что к чему.

По cуществу хочу добавить что нашел массивный класс
*** скрытое содержание ***
Который умееет почти всё.

Возможности и в самом деле впечатляющие.




Самое главное он не заброшен (тобиш активно выходят новые версии)

Рекомендую всем

А кофе он варить умеет? :)

Нет. На самом деле вопрос таков: кто-нить сумел этого монстра с многопоточностью подружить (нeблокирующие сокеты)? Только чур извраты с fnctl или запуском нескольких экземпляров самоё себя не предлагать.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху