Библиотека для работы с Web на PHP

logo

Давным-давно, когда в моде еще был PHP4, я написал несложную библиотеку на PHP для работы с Web. Эта библиотека была достаточно примитивной, состояла из одного-единственного класса, содержала какие-то ошибки, но, тем не менее, она работала и была вполне юзабельной, поддерживала различные типы прокси-серверов, chunked-содержимое, сжатое содержимое и еще всякие приятные мелочи.

Однако, пришло время расширить функционал библиотеки, а заодно и полностью переписать ее с использованием новых возможностей ООП PHP5.

Итак, вот основные фишки новой библиотеки в сравнении со старой (жирным отмечены самые интересные особенности):

Характеристика Websock2 Websock
PHP4 - +
Не требует cURL + +
HTTP + +
HTTPS + -
GET-и POST-запросы + +
Удобная работа с HTTP-заголовками + -
File uploads + -
Автоматическое отслеживание cookies + -
Автоматическая обработка HTTP-редиректов + -
Установка referer при редиректах + -
Basic-аутентификация + -
Digest-аутентификация + -
Автоматическая basic/digest аутентификация + -
Chunked encoding + +
GZIPped-содержимое + +
Deflated-содержимое + -
HTTP-прокси + +
HTTP-прокси в режиме HTTPS + -
SOCKS4-прокси + -
SOCKS4a-прокси + -
SOCKS5-прокси + +
Аутентификация прокси + +
Цепочки прокси + -
Отслеживание таймаутов операций + -
Сокеты через file и socket_*-функции + +
Перехват HTTP-редиректов + -
Перехват чтения HTTP-заголовков и содержимого + -
Скачивание/загрузка очень больших файлов + -
Сделано по RFC + -
Удобная архитектура, простая расширяемость + -

Как видно из таблицы, новая библиотека содержит намного больше функций, чем старая. Более того, новая библиотека хорошо задокументирована (на английском) и содержит большое количество примеров.

Скачать архив (библиотека + примеры + документация): Websock2
Просмотреть документацию и примеры использования

Пожелания и вопросы можно оставлять в комментариях к посту или на нашем форуме.

На GitHub

Софт

На этой странице представлен список софта (программ, скриптов, библиотек), который выложен в блоге, по категориям.

Сложность софта - это абстрактная характеристика, вмещающая в себя сложность использования и сборки (если это исходники), а также необходимость возможных доработок софта софта. Можете читать эту характеристику примерно так:

1 Программу сможет использовать даже дилетант.
2

Программу сможет использовать любой, но, вероятно, придется установить дополнительные утилиты и разобраться с параметрами командной строки.
3 Программу сможет использовать человек, имеющий определенную усидчивость. Лучше быть технарем.
4 Для использования этой программы очень желательны технические навыки, а лучше - навыки программирования.
5 Вы должны быть программистом, чтобы это использовать.

Для совсем непонятливых:
Сорс - исходный код программы.
Бинарник(и) - собранный вариант программы, готовый (или почти готовый) к запуску.
Если программа написана на скриптовом языке (PHP/Perl/JS и т.д.), то у нее есть только сорс, который запускается с помощью соответствующего интерпретатора.

Актуальный софт

Ссылка Описание Язык ОС Сложность
Плагин предпросмотра ссылок и картинок в Skype Сорс и бинарник C++ Windows 1
Статический деобфускатор .bat-файлов Сорс и бинарник C++ Любая 2
Тривиальный стилер биткоинов Сорс и бинарник MASM Windows 3
Качалка для сервиса Яндекс.Музыка - Perl Любая 2
Простой контроль целостности процесса под Linux Только сорс C Linux 5
Кроссплатформенный упаковщик PE-файлов Только PE32. Сорс и бинарник C++ Любая 2
Простой контроль целостности процесса под Windows Только сорс C Windows 5
Flash Info Changer Изменение информации, выдаваемой плагином flash в браузерах. Сорс + бинарник. C++, C# Windows 3
Менеджер плагинов для клиента LastFM Сорс и бинарник C++ Windows 2
Winamp QIP 2005 x-status plugin Плагин для QIP 2005 и Winamp, меняющий x-статусы в зависимости от прослушиваемой композиции. Сорс + бинарник. MASM Windows 1
Утилита для скрытия процессов под Windows Базируется на драйвере Frost. Сорс + бинарник. C Windows 4
RFID-ридер/writer Требует аппаратное обеспечение. Бинарники + сорс. C++ Windows 2
PHP Generic Eval Unpacker Распаковщик PHP. Исполняет PHP-код. Сорс + бинарники. C++ Windows 3
Утилита для чтения MBS Сорс + бинарники C Windows 2
Статический деобфускатор некоторых PHP-скриптов Позволяет произвести деобфускацию и отвязку скриптов такого типа PHP Любая 3
Распаковщик perl-скриптов, упакованных PerlApp Сорс + бинарники C++ Windows 2
Генератор аккаунтов Позволяет генерировать списки рандомных аккаунтов вида email:pass. Сорс и бинарники. C++ Любая 2
Полиморфный криптор-обфускатор JavaScript/HTML/VBS - PHP Любая 2
Regexp HTTP-proxy HTTP-прокси с возможностью замены контента с использованием регулярных выражений. Perl Любая 3
SSH Bruteforce Сорс и бинарники C++ Windows 1
Socks5 Server - Perl Любая 2
Шифрующий архиватор с автораспаковщиком Сорс и бинарник C++ Windows 1
PHP Obfuscator 1.5 - PHP Любая 2
Tetris Сорс и бинарник C++ Windows 1
Simple PE Dumper Только бинарник C++ Windows 4
Инжектор кода Инжектинг - это подгрузка своего кода в сторонний процесс. Сорс и бинарник. MASM Windows 5
Simple Engine Scanner Сканирует выбранные url по заданной базе движков и пытается определить тип движка и его уязвимости. Сорс на Perl и бинарник на C# (редактор базы движков). C#, Perl Windows / Любая 3
Simple mp3 broadcaster Вещает MP3 в сеть. Perl Любая 2
KWM bruteforce Сорс + бинарник C++ Windows 2
PFX bruteforce Сорс + бинарник C++ Windows 2
Simple AJAX Chat Простой ajax-чат. PHP, JavaScript, HTML Любая 2
Proxy Checker Lite 1.3 Сорс и бинарники MASM Windows 2
SSH tool Выполнение команд по SSH на множестве машин Perl Любая 3
JavaScript-игры Сапер, Судоку, Крестики-нолики, ASCII-аркадка с самолетами и прокачкой уровней HTML, JavaScript Любая 1
StepFucker Программа для безошибочного прохождения треков в игре StepMania. Бинарник+сорс. MASM Windows 1
Универсальный конвертер текста 1.0 Программа для различных преобразований текстовых данных. Сорс и бинарник. MASM Windows 2
Ajax Text Shell 2.0 Web-shell PHP Любая 2
People search [beta] Поиск профилей людей по никнейму через гугл. Краткая характеристика человека, icq, e-mail'ы. PHP Любая 2
Site File Checker Контроль и проверка сайта на наличие различных веб-шеллов и вредоносных файлов. PHP Любая 2
Качалка видео для Collegehumor - Perl Любая 2

Библиотеки

Здесь перечислены не готовые (или почти готовые) для использования программы или скрипты, а только вспомогательные библиотеки или утилиты для программистов.

Ссылка Описание Язык ОС
Библиотека логирования необрабатываемых исключений Позволяет логировать удаленно необработанные исключения, из-за которых та или иная программа упала. C Windows
Библиотека для работы с PE-файлами (PE Bliss) Позволяет читать и писать содержимое различных структур PE-файлов на высоком уровне. C++ Любая
Библиотека для работы с USB Позволяет отслеживать появление и исчезновение USB-устройств в Windows, контролировать безопасное извлечение. C++ Windows
Классы для работы с HTTP(S) - C++ Любая
Вызов функции без импорта Набор макросов, предоставляющих возможность вызова функций из динамических библиотек без создания явной записи в таблице импорта. MASM Windows
Класс-инжектор Позволяет производить инжект DLL в сторонние процессы. C++ Windows
Капча с использованием HTML5 Нестандартная капча, которую сложно распознать в автоматическом режиме. HTML, PHP Любая
Модуль для работы с Web - Perl Любая
Drag-drop-капча Нестандартная капча, которую сложно распознать в автоматическом режиме. PHP, JavaScript, HTML Любая
Капча-калькулятор Нестандартная капча, которую сложно распознать в автоматическом режиме. PHP, HTML Любая
Пакет для компиляции MASM32 Сборка MASM32 и набор батников и дополнительных макросов для облегчения компиляции исходников на MASM. BATCH, MASM Windows
Библиотека для работы с http - MASM Windows
Пример работы с anti-captcha на perl Библиотека для работы с сервисом Anticaptcha (Antigate). Perl Любая
Пример работы с антикапчей на VB Библиотека для работы с сервисом Anticaptcha (Antigate). Visual Basic 6 Windows
Работа с антикапчей на ассемблере Библиотека для работы с сервисом Anticaptcha. MASM Windows
Класс для работы с сокетами Поддерживает HTTP, SOCKS5, HTTP Proxy с авторизацией и без нее, gzip и т.д. PHP Любая
Библиотека для работы с Web Поддерживает HTTP(S), Cookies, basic/digest аутентификацию, SOCKS4(a), SOCKS5, HTTP Proxy с авторизацией и без нее, цепочки прокси gzip/deflate, редиректы, аплоад файлов и многое другое. Обновление библиотеки websock.php PHP5 Любая

Неактуальный софт

Несмотря на потерю актуальности, мы все еще храним этот софт в блоге, так как он может оказаться полезным для обучения. Кроме того, его кто-то может пожелать актуализировать (а нам пока лень, или надобности нет).

Ссылка Описание Причина неактуальности Язык ОС Сложность
Упаковщик PE-файлов (exe, dll) Сорс и бинарник. Был написан новый, более крутой и кроссплатформенный вариант упаковщика. C++ Windows 3
Управление клиентом LastFM через панель задач Добавляет несколько кнопок в панели задач для управления клиентом LastFM. Сорс и бинарник. На последних версиях LastFM может не работать. C++ Windows 2
VKontakte NoAd Удаляет всю рекламу со странички ВКонтакте. Только бинарник. Запросы ВКонтакте поменялись. C# Windows 1
Simple Mail.ru Regger - Запросы Mail.ru поменялись. Perl Любая 2
LastFM broadcast add-on Позволяет транслировать музыку с клиента LastFM по сети. Сорс и бинарник. На последних версиях LastFM может не работать. MASM Windows 2
.NET Reactor Header Fixer Правит .NET-заголовки после обфускации программой .NET Reactor, позволяя открыть ее в .NET Reflector'е. Только бинарник. Вероятно, не сработает для последних версий .NET Reactor. C++ Windows 4
Exe2Pdf Упаковывает EXE-файл внутрь PDF, позволяя его запустить в Adobe Reader не слишком заметно для пользователя. Только бинарник. Не сработает в последних версиях Adobe Reader. C#, JavaScript, VBS Windows 1
Small VK notifier Сообщает о наличии новых сообщений вконтакте через уведомление в трейбаре. Запросы ВКонтакте поменялись. Perl Любая 2
Yet Another Odnoklassniki Sender Рассылка в Одноклассниках. Запросы в Одноклассниках поменялись. Perl Любая 2
Invatar — скрипт раздачи инвайтов для различных сервисов Раздача инвайтов для различных сервисов. Работает на плагинах. Все плагины протухли, потому что запросы для соответствующих сервисов поменялись. PHP Любая 3
Mini Facebook Sender Рассылка по Facebook. Запросы в Facebook поменялись. Perl Любая 2
Плагин WordPress A-stat Плагин для WordPress, выводящий статистику заработка в разных партнерках. В последних версиях WordPress работать, скорее всего, не будет. Кроме того, в сервисах, которые есть в плагине, давно поменялись запросы. Perl Любая 2
VK Link Checker Программа проверки, заблокирована ли та или иная ссылка ВКонтакте (away.php). Только бинарник. Запросы ВКонтакте изменились. C# Windows 2
DX TDS Система распределения трафика. Неактуальная система определения версий браузеров и ОС. Потенциально несовместимо с новыми версиями PHP. PHP Любая 3
PHP Obfuscator 1.4 Обфускатор PHP-скриптов. Появилась более актуальная версия. PHP Любая 2
Скрипт рассылки по last.fm Скрипт рассылок по LastFM. Запросы в LastFM поменялись. Perl Любая 2
Скрипт рассылки по otvet.mail.ru - Запросы в otvet.mail.ru поменялись. Perl Любая 2
Скрипт скачивания музыки с LastFM - Запросы в LastFM поменялись. Perl Любая 2
Mail.Ru agent sender Скрипт рассылок по Mail.ru агенту. Запросы в Mail.Ru agent поменялись. Perl Любая 2
Forum Detector 1.0 beta Скрипт определения движка форума. База скрипта очень давно не обновлялась. Есть более свежая альтернатива (с возможностью создания своей БД) - Simple Engine Scanner. PHP Любая 2
PHP Obfuscator 1.3 extended Обфускатор PHP-скриптов. Появилась более актуальная версия. PHP Любая 2
VKontakte sender Скрипт рассылок ВКонтакте. Запросы ВКонтакте поменялись. Perl Любая 2
Веб брутфорс mail.ru - Запросы в Mail.ru поменялись, изменилась защита от брутофорса. Perl Любая 2

Классы для работы с HTTP(S) на C++

Написал кроссплатформенную библиотеку (набор классов) для работы с HTTP(S) на C++, используя последние концепции программирования. Пока что это, пожалуй, beta, так как тестировал я ее совсем мало.

Для сборки библиотеки потребуется собранный Boost (желательно версии 1.48 или выше). Если планируется включение функционала для работы с SSL (HTTPS), то потребуется еще собранная библиотека OpenSSL. Также в обязательном порядке требуется поддержка компилятором C++11. Сами заголовочные файлы библиотеки не включают ни заголовочные файлы boost, ни OpenSSL.

Для тех, кто захочет использовать библиотеку для написания чего-то жестоко многопоточного (конечно, спамеров, а что же еще подобное пишут с дохера потоками), учтите, что каждый запрос создает 1 дополнительный фоновый поток, т.е. количество потоков, используемых приложением, увеличивается вдвое. Такая особенность работы связана с тем, что в своем ядре библиотека использует boost::asio::io_service для контроля времени выполнения запроса (словом, внутри библиотеки всё происходит асинхронно).

Краткое описание возможностей класса:
[+] GET/POST/прочие запросы с использованием HTTP/1.0
[+] Поддержка HTTPS
[+] Поддержка multipart-POST запросов с возможностью загрузки произвольного количества файлов любого размера
[+] Автоматический менеджмент Cookies
[+] Автоматические переходы по Location-редиректам
[+] Поддержка скачивания больших файлов
[+] Поддержка HTTP/HTTPS/SOCKS5-прокси с авторизацией и без
[+] Возможность добавлять собственные HTTP-заголовки в запрос
[+] Поддержка автоматической обработки параметров (urlencode)
[+] Возможность задать таймаут на любой запрос
[+] Множество вспомогательных функций (urlencode, base64 и т.п.)

Классы потоконебезопасны, организация синхронизации должна производиться на вашей стороне в случае использования одного и того же экземпляра какого-либо класса в нескольких потоках сразу.

Далее я по пунктам приведу краткое описание возможностей библиотеки с примерами.
Читать далее «Классы для работы с HTTP(S) на C++»