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

Тема в разделе "PHP", создана пользователем thoth777, 3 янв 2012.

Модераторы: latteo
  1. thoth777

    thoth777

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

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

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

    UPD.
    нашел такую штуку: curl_setopt($curl, CURLOPT_PROXYTYPE,4);
    и curl_setopt($curl, CURLOPT_PROXYTYPE,CURLPROXY_HTTP);
    но может как-то можно проще?
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Сокеты - это тот ещё гемор. Работа через них отличается от работы простых проксей, так что на автомате с ними работать нельзя- обязательно нужно указывать тип проксей.
    немного инфы


    оттуда


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

    Invesys Создатель

    Регистр.:
    1 сен 2009
    Сообщения:
    13
    Симпатии:
    0
    Proxy Checker определял без проблем. Только проект этот закрыли, но у меня где-то валялась лицензия. Если ещё актуально, можно попробовать.
     
  4. trooll

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    Про определении версии KillDead дед уже написал, тут я думаю все понятно.

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

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

    Кстати самому интересно есть ли такие сервисы, было бы полезно.
     
  5. breorey

    breorey Писатель

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