who-is1

Уже довольно давно в работе постоянно приходится иметь дело с whois-запросами.
Объемы постоянно росли, доменные зоны менялись, поэтому менялись и методы работы.
Сперва скриптик был крайне простым. Нечто вроде:

А дальше уже парсинг ответа и раскладывание по полочкам нужных значений.

Однако со временем, объем запросов значительно вырос и возникла проблема с лимитами на запросы (RIPN ограничивает количество запросов с одного IP до 30 в минуту). Следовательно, возникла необходимость использовать proxy-сервера. Благо, есть возможность настроить себе сколько угодно proxy-серверов на dedicated-сервере (были бы IP-адреса =).
Скрипт научился работать с whois-серверами с помощью cURL:

Скрипт верой и правдой отработал несколько лет. Однако появилась необходимость расширить диапазон доменных зон. И тут я столкнулся с проблемой – на запросы через прокси, зарубежные whois-серверы отдавали невнятный ответ: “Neither object nor interpretation control keyword found”.
Как ни ковырял cURL, так и не смог заставить скрипт работать правильно. Скорее всего, cURL просто отправляет какие-то заголовки, которые не может интерпретировать whois-сервер. Задача ясна – нужна работа с прокси без использования cURL.
После довольно продолжительного гугления был найден замечательный класс для работы с socks5/socks4/socks4a прокси-серверами от Jinn.
В результате код получился таким:

Осталось только обрамить всё это благополучие в нормальный интерфейс или класс и можно пользоваться =)

anonymous-200213-1

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

Если же потребность в них возникает часто, можно попробовать использовать платные списки, либо пошаманить с настройками Tor / Privoxy, чтобы получить периодически меняющий ip-адрес прокси-сервер. Tor – это, конечно, очень здорово и удобно. Однако, если вопрос стоит не только в смене ip-адреса, но и в скорости работы, лучше подумать над альтернативой.

В моем случае альтернатива уже была. В наличии имелся выделенный сервер с N ip-адресов на нем. Осталось только настроить его так, чтобы можно было ходить в сеть через него, используя весь диапазон имеющихся адресов.

Есть замечательные легковесный и несложный в настройке proxy-сервер под названием 3proxy.

С его помощью можно настраивать http/socks/ftp прокси в считанные минуты – конфиг не сложный и понятный.

По-умолчанию, все запросы он будет отправлять с одного основного ip-адреса, однако можно поступить и по-другому:

Это пример моего конфига. Разумеется, 127.0.0.1 нужно заменить на свой ip-адрес и последние три строки конфига размножить на все свои адреса.

Таким образом, ip-адрес, по которому вы обращаетесь к прокси-серверу, будет использоваться им как исходящий. Т.е. получаем на одном сервере столько проксей, сколько нам нужно (или сколько есть ip-адресов в начилии =).