Проверка типа проксей (socks или http) скриптом

thoth777

Гуру форума
Регистрация
28 Ноя 2008
Сообщения
302
Реакции
98
Доброго времени суток, коллеги! Поиск ничего не дал, а необходимость - большая.

Есть список проксей вида ip : port
Как скриптом определить - сокс это или http.
С http все понятно - достаточно курлом получить какую-нибудь тестовую страницу. Но соксы, в отличие от http проксей, поддерживают и другие протоколы, как это проверить?
Как и куда оптимальнее стучаться и каким образом можно определить версию сокса (4 там или 5)?

заранее признателен за помощь.

UPD.
нашел такую штуку: curl_setopt($curl, CURLOPT_PROXYTYPE,4);
и curl_setopt($curl, CURLOPT_PROXYTYPE,CURLPROXY_HTTP);
но может как-то можно проще?
 
Сокеты - это тот ещё гемор. Работа через них отличается от работы простых проксей, так что на автомате с ними работать нельзя- обязательно нужно указывать тип проксей.
немного инфы


оттуда

Для тех кто использует CURL

Простое задание курл-опции для работы соединения через прокси:
curl_setopt($ch, CURLOPT_PROXY, ‘XXX.XXX.XXX.XXX:port’);
Задание курл-опций для работы через SOCKS4:
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
curl_setopt($ch, CURLOPT_PROXY, ‘XXX.XXX.XXX.XXX:port’);
Задание курл-опций для работы через SOCKS5:
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
curl_setopt($ch, CURLOPT_PROXY, ‘XXX.XXX.XXX.XXX:port’);
Задание курл-опции для работы через прокси с авторизацией, 1 вариант:
curl_setopt($ch, CURLOPT_PROXY, ‘login:password@XXX.XXX.XXX.XXX:port’);
Задание курл-опций для работы через прокси с авторизацией, 2 вариант:
curl_setopt ($ch, CURLOPT_PROXYUSERPWD, ‘login:password’);
curl_setopt($ch, CURLOPT_PROXY, ‘XXX.XXX.XXX.XXX:port’);


Я сам сталкивался с такой проблемой, использования соксов. Взял рабочий SOCKS4 . Курл успешно работал с ним при задании опции curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); (Некоторые соксы поддерживают и 4 и 5 коннект, но эту я проверил через пхпсокеты- только 4)
Для паблик проксей, после всех попыток прочеканить список состоящий из 4 - результат получился спорный. Если ставить CURLPROXY_SOCKS5 то рабочих оказалось в 2 раза меньше нежели ставить SOCKS4. Но сами прокси получались всё время разными и успешный коннект проходил примерно с попытки 3-й. Тк что хз.
Если тестировать прокси - то последовательно пробуем SOCKS5 и SOCKS4 и можно ещё попробовать включть HTTPPROXYTUNNEL
 
Proxy Checker определял без проблем. Только проект этот закрыли, но у меня где-то валялась лицензия. Если ещё актуально, можно попробовать.
 
Про определении версии KillDead дед уже написал, тут я думаю все понятно.

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

Если же нет ищи сервисы которые предоставляют такой функционал для чекинга проксей скриптами и программами.

Кстати самому интересно есть ли такие сервисы, было бы полезно.
 
И стоит упомянуть о CURLOPT_CONNECTTIMEOUT, без него замучаешься.
В моей системе схема такая:
Скрипт через разные типы подключений (как указал KillDead) получает или нет ответ скрипта-пинговалки.
В свою очередь скрипт пинговалка возвращает все данные $_SERVER, такие как 'HTTP_X_FORWARDED_FOR'. По ним можно определить анонимность, про это читаем Для просмотра ссылки Войди или Зарегистрируйся.
 
Назад
Сверху