Дополнен 13 лет назад
Всё ответ найден. Вот функция, после её вызова можно работать как с обычной соксой открытой fsockopen
function socks_connect($host, $port, $dh, $dp) //адрес скоса, порт сокса, адрес сайта, порт сайта.
{
$result=true;
$f = fsockopen($host, $port, $er, $err, 10) 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%6));
$r = fread($f, 10);
if(!(ord($r[0])==5 and ord($r[1])==0))
return false;
else
return $f;
}
else
return $result;
}
else
return $result;
}