Недавно я рассказывал о способе, позволяющем обойти капчу Google , которую поисковик использует в случае получения большого числа похожих запросов с одного IP. За прошедшие две недели я придумал, как еще можно ускорить (и не только ускорить) парсинг выдачи Google, чем и хотел бы сейчас поделиться.

1. Используем прокси

Прием с кукисами и tcpdump действительно позволяет обойти защиту от ботов, однако он имеет несколько существенных недостатков. Во-первых, этот прием неудобный — нужно запускать снифер, проходить капчу, прописывать кукис. Во-вторых, он не надежен — кто знает, как долго тема будет оставаться рабочей? И наконец, способ накладывает ограничение на частоту посылки запросов.

Если бы мы слали запросы через http/socks прокси, ни одной из названных проблем у нас не было. Да, названных проблем мы бы избежали, однако получили бы пару новых. Обычно паблик-прокси медленные и быстро умирают. Потому использовать их мы не будем.

Вместо них я решил использовать анонимайзеры. Кто не в курсе, анонимайзеры — это веб-скрипты, предназначенные для скрытия IP, а также вырезания рекламы из страниц и некоторых других вещей. Пожалуй, самым известным анонимайзером в рунете является Anonymizer.Ru . В сети существуют тысячи анонимайзеров, самый полный список которых можно найти на Proxy.org . Большинство из них работают на скриптах Glype и PHPProxy .

Есть много причин, зачем люди создают сайты-анонимайзеры. Например, можно показывать в начале каждой просматриваемой страницы контекстную рекламу. Или банально собирать пароли от GMail и ВКонтакте. Однако это для нас сейчас не так важно, как то, что анонимайзеры обычно намного быстрее socks-прокси и редко бывают оффлайн. Так от чего бы не слать запросы к Google через них?

Что интересно, искать анонимайзеры мы будем также с помощью Google. Какая ирония. Вот простой запрос, позволяющий собрать список сайтов, на которых работает PHPProxy:

«Rotate13» «Base64» «Strip» inurl:index.php?q=

Строки Rotate13, Base64 и Strip находятся в верхней части страницы, созданной с помощью PHPProxy.

Просмотр страницы через PHPProxy

Как видно на скриншоте (знаю, что он мелковат, но видно же!), URL просматриваемой страницы передается PHPProxy в аргументе q закодированный в Base64 . Собрав пару десятков таких прокси, мы сможем слать все запросы к Google через них, без необходимости обходить капчу и делать задержки между запросами.

2. Генератор url запросов

Вместо того, чтобы при каждой новой задаче писать новый парсер Google, лучше написать универсальный парсер, принимающий на вход собственно запросы к ПС. А возьмем мы эти запросы откуда? Правильно, получим с помощью генератора запросов. Вот пример такого генератора:

#!/usr/bin/perl

use strict ;

my $query = » » Rotate13 «» «» Base64 «» «» Strip «» inurl:index.php?q=»» ;

for my $p ( 0 .. 9 ) {
for my $zone ( qw/.com .net .org .biz .info .de .ru/ ) {
my $q = «»$query site:$zone»» ;
$q =~ s/ /%20/g ;
print «»http://www.google.ru/search?q=»» .
«»$q&num=100&start=${p}00&filter=0 n «» ;
}
}

Правданаписать такой скрипт прощечем новый парсер? Кроме тогоработая со списком запросов мы можем:

  • Перемешать его с помощью команды «cat list.txt | rl > rslt.txt». Посылая запросы вперемешку
EnglishRussianUkrainian