PDA

Просмотр полной версии : Работа php + socks


gemaglabin
25.04.2007, 07:38
Заметил,что многим лень почитать описание простецкого протокола socks4/socks5 и напиал маленький скриптик,который подконектится к прокси и в случае удачного соединения вернет хендл сокета.Функция socksconnect сама определит какой у вас номер сокса

Использовать так


сокет = socksconnect(айпи сокса,порт сокса,юзер,пасс,куда конектимся,порт сервера,таймаут)
пример
$socket = socksconnect('81.91.1.1','8192','','','ya.ru',80,5 )


http://underwater.itdefence.ru/projects/proxy.txt

hidden
25.04.2007, 08:10
Сознаюсь, не читал)), есть ещё куча всяких интересных вещей чтоб читать.
Кстати, уже не первый раз виду такое, подключаются, запрашивают версию, потом не отключаясь, подключаются снова и тогда уже используют, это так действительно задумано, или всё-же можно выполнить всё за один коннект, включая запрос сразу нескольких страниц?

gemaglabin
25.04.2007, 14:14
Теоретически можно дак не со всем прокатит...

_Great_
25.04.2007, 14:42
я точно такое уже выкладывал гдето=\

gemaglabin
25.04.2007, 14:42
Точно такое же быть не может это я писал ...

_Great_
26.04.2007, 18:42
ну понятно что не слово в слово) смысл абслютно тот же

Isis
26.04.2007, 23:11
_Great_, он мне это пару месяцев назад уже показывал =)
гемо лучший =\хека

Developer
27.04.2007, 20:39
Дайте лучше ссылку на описание Socks :)

Автору респект за скрипт, хоть юзать его не буду, но исходники посмотрю ;)

_Great_
28.04.2007, 18:30
на случай если я не выкладывал:

// 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;
}

В закромах Родины нашел у себя. Частенько юзаю