BigMazy
05.11.2008, 16:29
Добрый день! Появилась проблема - не получается решить.
Использую сокеты (модуль Socket) для получения данных whois.
Запросы отправляются в ripn на 43 порт.
Необходимо подключить сокет через прокси-сервер.
Как это сделать, у меня не получается.
Буду рад помощи!!!
На форуме нашел подобный код, но на пхп. Переписать его на перл не получается:
Код
// socks_connect( proxy_host, proxy_port, destination_host, destination_port )
function socks_connect($host, $port, $dh, $dp)
{
$f = fsockopen($host, $port) or die("Can't connect to proxy");
$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))
die("Invalid SOCKS reply");
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))
die("Invalid SOCKS reply");
return $f;
}
Использую сокеты (модуль Socket) для получения данных whois.
Запросы отправляются в ripn на 43 порт.
Необходимо подключить сокет через прокси-сервер.
Как это сделать, у меня не получается.
Буду рад помощи!!!
На форуме нашел подобный код, но на пхп. Переписать его на перл не получается:
Код
// socks_connect( proxy_host, proxy_port, destination_host, destination_port )
function socks_connect($host, $port, $dh, $dp)
{
$f = fsockopen($host, $port) or die("Can't connect to proxy");
$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))
die("Invalid SOCKS reply");
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))
die("Invalid SOCKS reply");
return $f;
}