Сегодня рассмотрим как такие программы как Bleach и ProxyHunter проверяют https прокси на валидность. Рассмотрим принципиальные отличия и сходства.

[ProxyHunter]
Принцип проверки: программа пытается загрузить страницу через прокси, если в ней найден определенный фрагмент, значит прокс рабочий. Адрес страницы и фрагмент для проверки указывается пользователем в настройках. Что в таком случае мы про него знаем? Да практически ничего, время получения ответа только, никакой подробной информации.

[Bleach и подобные]
Программа Bleach из комплекта FPL, Proxyfire (не Proxifier!) и подобные — здесь принцип работы очень схож, однако есть кардинальное отличие. Вместо того, чтобы грузить страницу, указанную пользователем, как делает ProxyHunter, программа грузит некий таинственный скрипт под не менее таинственным названием — Proxyjudge. Judge в переводе с английского — судья, то есть сам скрипт нам выдает информацию о том прокси сервере, через который мы на него зашли.

[принцип работы]
Как же это работает? Что мы получаем от скрипта?
Как я уже говорил, принцип работы аналогичен программе proxyhunter — идёт загрузка Proxyjudge и, если загрузить не удалось, наш прокси отсеивается как Timed out. А вот если всё загрузилось на ура… Ты уже понял, что ни о каком фрагменте, с которым мы сравниваем код загруженной страницы, в помине нет.
Хочу упомянуть, что чаще всего этот скрипт носит имя azenv.php, AZENV — что же это такое? Как ты догадался, это аббревиатура. Здесь сокращено AZ Environment Variables — переменные окружающей среды от А-Я (очень весёлый вольный перевод). Хех, уже наводит на некоторые мысли, не так ли?
Пойдём дальше, пойдём в гугл. Вводим запрос inurl:azenv.php и видим списочек скриптов на разных сайтах. Переходим по одному из них, и, если нам повезло, перед нами предстаёт список вида переменная = значение. Переменные в общем случае такие: HTTP_HOST, HTTP_X_REAL_IP, HTTP_X_FORWARDED_FOR, HTTP_CONNECTION, HTTP_USER_AGENT, HTTP_ACCEPT, HTTP_ACCEPT_LANGUAGE, HTTP_ACCEPT_CHARSET, HTTP_ACCEPT_ENCODING, HTTP_REFERER, REMOTE_ADDR, REMOTE_PORT, REQUEST_METHOD, REQUEST_URI, REQUEST_TIME. Отсюда можно подчерпнуть нехило информации о запросе, ip, клиенте. По этим данным, полученным через прокси, программа и определяет тип прокси: если проблескивает ip компа, на котором работает Bleach, значит прокс прозрачный, если нашего ip там не видать, но понятно что запрос через прокси, значит anonimous, если всё чисто и не отличишь от прямого запроса, значит high anonimous.

[плюсы и минусы]
Главное преимущество очевидно — информативность. Но есть и недостаток — proxyhunter проверяет по таким сайтам как google.com, yahoo.com, а у нас обычный скрипт, на обычном хостинге, порою даже бесплатном, который постоянно грузит большое количество народу, в много потоков, что, порой, замедляет сам процесс проверки, бывает что и сайт ложится — проверка прокси очень схожа с denial of service (DoS).

(c) crystalbit, http://parsers.info

Решением проблемы и пошаговым написанием своего proxyjudge на php займёмся во второй части статьи.
Подпишись на rss и узнаешь первым

И напоследок картинка внешнего hdd:
внешний жесткий диск