PHP-класс, позволяющий просто работать с сокетами без лишних усилий.
Способен получить страницу по HTTP/1.1 и с использованием Keep-Alive-соединения, а также нормально парсит страницы с Transfer-Encoding: chunked.
Кроме того, если страница выдаётся в gzip, то есть возможность автоматической распаковки содержимого.
Класс также поддерживает прокси и может парсить cookies, выдаваемые ему сайтом.
По умолчанию класс работает через функции socket_*** (не поддерживаются денвером), но можно использовать и привычные fsockopen, правда, тогда через Keep-alive работать не получится.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php /* скрипт получает страницу www.google.ru через HTTP/1.1 и Connection: keep-alive. */ require("websock.php"); //подключение файла с классом //укажите в конструкторе третий параметр false, тогда вместо socket_*** будут использоваться fsock-функции $s=new websock('www.google.ru',80); //создание нового сокета //$s->set_proxy('203.162.2.139','80'); //Если надо прокси, его можно установить следующим образом $s->sconnect(); //подключаем сокет $s->set_connection(1,300); //keep-alive: 300 $s->set_proto('1.1'); //HTTP 1.1 $s->get_header('/'); //формируем заголовок для запроса к серверу (получаем корень http://mail.ru/) $s->swrite(); //пишем его в сокет $ret=$s->http11read(); //универсальная функция чтения из сокета, неважно, какие заданы параметры подключения. Читаем всё возвращённое содержимое. print $ret[0]; //$ret[0] - заголовки, $ret[1] - содержимое $s->sclose(); //закрываем соединение ?> |
Ещё пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php /* скрипт просто получает cookies со страницы http://bash.org.ru */ require("websock.php"); //подключение файла с классом $s=new websock('bash.org.ru',80); //создание нового сокета $s->sconnect(); //подключаем сокет $s->get_header('/'); //формируем заголовок для запроса к серверу (получаем корень http://bash.org.ru/) $s->swrite(); //пишем его в сокет $ret=$s->http11read(); //универсальная функция чтения из сокета, неважно, какие заданы параметры подключения. Читаем всё возвращённое содержимое. print $s->get_cookie($ret[0]); //получаем Cookies в виде строки $s->sclose(); //закрываем соединение ?> |
Дополнительные комментарии по всем функциям класса можно найти в его коде.
UPD от 30.03.09: Выкладываю новую версию, в которой добавлена поддержка прокси с паролями, socks5, socks5 с паролями и исправлен парсинг cookies, а также добавлены простые функции get и post.
UPD от 02.04.09: еще некоторые мелкие поправки
UPD от 16.04.09: исправлен косяк при работе с прокси
/* WEBsock class by DX */
дык .. копирайты хотябы указал \=
Зачем указывать, класс мой, я и выложил)
мле ...
я думал тут токо каими постит)
Спасибо большое D_X
Кто скачивал, скачайте снова, были некоторые ошибки небольшие, сейчас поправлено вроде всё
немогбы ты приветси примры работы с запросами для https....,буду благодарен или ссылки какие небудь:)
Этот класс с ssl не работает. Собственно, запрос по ssl в php делается через fsockopen("ssl://сайт",443), но как правило php не поддерживает ssl (не включен или отсутствует соответствующий необходимый модуль).
Поэтому для ssl легче использовать curl.
Еще один косяк исправил при работе с проксями.