Анонимайзер как замена прокси. Проверка анонимайзеров на валидность

Скрипт для составления и проверки списка веб-прокси

Наткнулся на любопытную заметку под названием «И еще немного про 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, которая затем парсится на предмет наличия в ней правильного заголовка. Если заголовок присутствует — считаем прокси рабочим, иначе — переносим в список нерабочих:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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), содержащие, соответственно, списки прошедших и не прошедших валидацию анонимайзеров.

Валидные анонимайзеры, как уже говорилось выше, можно подключить к парсеру, а невалидные — время от времени проверять заново (список валидных не перезаписывается, а дополняется), а в общем-то использование найденных веб-прокси зависит от наличия собственных идей у каждого, коих я и желаю вам побольше на прощание!



Category Рубрики: Интернет, Кодинг, Поисковики | Tag Метки: , , , , , , | Comments 13 комментариев »

13 комментариев

  1. Антон says:

    Отличная статья, уверен будет полезным для многих. Жаль, мой технический уровень не позволяет воспользоваться этим.

    • dimio says:

      Воспользоваться-то вроде не сложно — скачал программу, запустил, получил результат.

      • Антон says:

        Дмитрий, как Вы думаете, это можно будет использовать для постинга в разные акки одной блоговой системы?

        • dimio says:

          Думаю, что можно. Проверить не сложно — достаточно руками зайти через анонимайзер и проделать нужные действия.

  2. Спасибо за упоминание моего блога 🙂 Сайт у Вас кстати интересный, подписался.

  3. Ден says:

    вот это здорово! хорошая статья!

  4. anka says:

    Я всегда пользуюсь сайтом dostupest.ru, на других вырусов можно поймать

  5. Денис says:

    Подскажите, пожалуйста, как можно подключить к парсеру валидные анонимайзеры?

    • dimio says:

      «Помимо создания списка веб-прокси, скрипт может проверить уже существующий список на валидность, достаточно передать ему через опцию -i имя файла, содержащего список прокси:
      anocheck.pl -i proxy.txt»

  6. Денис says:

    В преимуществах анонимайзера, вы написали, что можно «научить» работе через веб-прокси свою программу. Вот я и спрашиваю, как это сделать, например с Keycollector. Это реально?

    • dimio says:

      Если такая возможность предусмотрена разработчиком или вы сами можете в программу изменения вносить — более чем реально.
      Можно попробовать и другой путь — сделать прослойку, которая будет принимать запросы от программы как обычный прокси и переадресовывать их через анонимайзер.

  7. Sergey says:

    Хороший бесплатный анонимайзер: [ссылка]

Добавить комментарий