Наткнулся на любопытную заметку под названием «И еще немного про Google Hack«, в которой автор описывает использование анонимайзеров (пример анонимайзера — сайт Anonymouse) вместо публичных прокси для обхода капчи в Google.
Такой способ использования анонимайзеров мне тоже приглянулся и я решил написать свой скрипт для сбора и проверки на валидность списка публичных веб-прокси.
Преимущества анонимайзера перед «классическим» публичным прокси
- Анонимайзеры, в отличает от публичных прокси, редко умирают и практически всегда доступны онлайн
- Анонимайзеры обычно обеспечивают скорость работы выше, чем у публичных прокси или Tor
- Список рабочих анонимайзеров собрать проще, чем список рабочих (и при этом достаточно быстрых) «классических» прокси. Конечно, всегда есть возможность купить список прокси, но не всегда есть желание это делать.
- Анонимайзер будет скрывать не только ваш IP-адрес, но и, в зависимости от настроек, может скрыть cookies, user-agent и т.п. «хвосты»
- Работе через веб-прокси проще «научить» свою программу — достаточно передавать закодированную строку интерфейсу анонимайзера
Для чего может пригодиться и чем может быть полезен анонимайзер (веб-прокси)?
- для использование совместно с парсером выдачи поисковых систем — чтобы обходить капчу, выдаваемую ПС при поступлении большого количества запросов с одного адреса
- отправив запросы к нужному сайту через разные анонимайзеры, можно накрутить счетчик посещений (эта гипотеза требует проверки)
- для постинга скриптами в различные форумы, для постинга комментариев на сайты
- при любом другом парсинге, где существует опасность бана, анонимайзер также пригодится (например при парсинге каталога с сайта nakolesah.ru, о котором я упоминал)
Собираем список публичных веб-прокси
Сборку и проверку списка анонимайзеров мы доверим perl-скрипту, некоторые фрагменты которого будут приведены ниже, а полный текст как обычно доступен для загрузки в разделе «Софт» (там же он будет и обновляться).
Чтобы запустить скрипт в режиме составления списка прокси, нужно передать через опцию -i значение google или ajax:
anocheck.pl -i google
Расшифровка опций:
- google — для поиска публичных веб-прокси используется парсинг выдачи веб-поиска Google. Список в этом случае получается достаточно большой, но существует вероятность получить капчу или временный бан
- ajax — список прокси получается из запроса к Google API для поиска. На выходе всего 8 результатов, но нет капчи.
Мне представляется оптимальным такой вариант использования скрипта — первичный список прокси составляется с помощью опции google, затем на проверку передается файл со списком.
Для поиска анонимайзеров, работающих на движках PHPProxy и Glype используются следующие параметры запроса:
# 1 - на движке PHPProxy
my $phproxy_sreq = '"Rotate13" "Base64" "Strip" inurl:index.php?q=';
# 2 - на движке Glype
my $glype_sreq = '"Encode URL" "Allow Cookies" "Remove Scripts" inurl:browse.php?u=';
Далее следует парсинг результатов выдачи Google и занесение адресов найденных веб-прокси в список:
# 1 - искать основанные на движке PHProxy
while ($source =~ m#<h3 class="r"><a href="(https?://w{0,3}\.?[\w-]+\.[a-z]{2,4}[/\w-]*/index\.php)\?q#ig) {
$proxy_list->{$1}++;
}
# 2 - искать работающие на Glype
while ($source =~ m#<h3 class="r"><a href="(https?://w{0,3}\.?[\w-]+\.[a-z]{2,4}[/\w-]*/browse\.php)\?u#ig) {
$proxy_list->{$1}++;
}
Проверка анонимайзеров на валидность
Помимо создания списка веб-прокси, скрипт может проверить уже существующий список на валидность, достаточно передать ему через опцию -i имя файла, содержащего список прокси:
anocheck.pl -i proxy.txt
Механизм проверки найденных прокси на валидность тоже не сложен (его идею я взял из заметки, указанной в первом абзаце) — на каждый найденный анонимайзер отправляется запрос на открытие главной страницы Google, которая затем парсится на предмет наличия в ней правильного заголовка. Если заголовок присутствует — считаем прокси рабочим, иначе — переносим в список нерабочих:
foreach my $proxy_url (keys %$proxy_list) {
my $response = $ua->get( $proxy_url.'?q='.encode_base64('http://www.google.com') );
#warn "Error: $response->status_line\n" unless $response->is_success;
if ($response->decoded_content =~ m#<title>Google</title>#) {
printf ("%-45s %10s", $proxy_url, "\x1b[32m [OK]\x1b[0m\n");
}
else {
printf ("%-45s %10s", $proxy_url, "\x1b[31m [ERROR]\x1b[0m\n");
push(@bad_proxy, $proxy_url);
delete($proxy_list->{$proxy_url});
}
}
Результаты валидации списка прокси
В результате проверки прокси на валидность получаются два файла (по умолчанию имеющие имена good.txt и bad.txt), содержащие, соответственно, списки прошедших и не прошедших валидацию анонимайзеров.
Валидные анонимайзеры, как уже говорилось выше, можно подключить к парсеру, а невалидные — время от времени проверять заново (список валидных не перезаписывается, а дополняется), а в общем-то использование найденных веб-прокси зависит от наличия собственных идей у каждого, коих я и желаю вам побольше на прощание!
Отличная статья, уверен будет полезным для многих. Жаль, мой технический уровень не позволяет воспользоваться этим.
Воспользоваться-то вроде не сложно — скачал программу, запустил, получил результат.
Дмитрий, как Вы думаете, это можно будет использовать для постинга в разные акки одной блоговой системы?
Думаю, что можно. Проверить не сложно — достаточно руками зайти через анонимайзер и проделать нужные действия.
Спасибо за упоминание моего блога 🙂 Сайт у Вас кстати интересный, подписался.
И Вам спасибо на добром слове, рад знакомству так сказать 🙂
вот это здорово! хорошая статья!
Я всегда пользуюсь сайтом dostupest.ru, на других вырусов можно поймать
Подскажите, пожалуйста, как можно подключить к парсеру валидные анонимайзеры?
«Помимо создания списка веб-прокси, скрипт может проверить уже существующий список на валидность, достаточно передать ему через опцию -i имя файла, содержащего список прокси:
anocheck.pl -i proxy.txt»
В преимуществах анонимайзера, вы написали, что можно «научить» работе через веб-прокси свою программу. Вот я и спрашиваю, как это сделать, например с Keycollector. Это реально?
Если такая возможность предусмотрена разработчиком или вы сами можете в программу изменения вносить — более чем реально.
Можно попробовать и другой путь — сделать прослойку, которая будет принимать запросы от программы как обычный прокси и переадресовывать их через анонимайзер.
Хороший бесплатный анонимайзер: [ссылка]