ПредишенСледващото

Ако някога се опита да напише парсер Google въпрос, вие вероятно знаете, че има редица мерки срещу използването на тази търсачка. В тази статия ще разгледаме няколко техники за заобикаляне на тези мерки.

Допълнение: Малко по-удобно, по мое мнение, начин на разбор на Google е описано в поста и малко повече за Google рана. Въпреки това, тази статия е интересно, така че продължавайте да четете!

За да добиете визуална бележка, аз нарисува малко скрипт, за да Perl:

/http\:\/\/(?:www\.)([0-9a-z-]+\.ru)\//ig;
отпечатате STDERR ">>". # 40; скаларни @sites # 41. "Сайтове намерени \ п";
освен ако # 40; скаларни @sites # 41; # 123;
отпечатате STDERR ">> спане 60 секунди \ н.";
спи 60;
Иди NEW_ATTEMPT;
# 125;
печат "\ L $ _ \ E \ Н" за # 40; @sites # 41; ;
сън 6;
# 125;
# 125;

Script задача - да получите списък с няколко хиляди случайни обекти в зоната на RU. В бъдеще може да се използва за това, което някои изследвания. Например, можете да вземете проба от 10 000 места и определяне на CMS. които те се използват.

Така че това, което са усложненията, които ни чакат, когато разбор издаване на Google? На първо място, това е тест за потребителя агент. Ако е настроен към «Wget / ...», търсачката ще откаже да изпълни заявката. На второ място - тестът за разграничаване. Прекалено честото използване на Google с подобни искания са пренасочени към потребителското sorry.google.com, където е поканен да въведете символите от картинката. И на трето място, когато голям брой заявки от една ПР, системата може да бъде помолен да му се даде почивка за няколко минути, дори ако сме преминали на CAPTCHA.

Първият проблем за решаване е много прост - просто погледнете User-агент на браузъра и изберете подходящия инструмент, чрез който зареждането на страницата (Wget, къдри, рис, ...). Аз съм в скриптове обикновено използват Wget, което може да се маскира като ognelis използване ключ -user-агент.

С CAPTCHA малко по-сложно. Напишете за преобразуване - задача, много трудно, все пак, и може да бъде решен. Но за щастие, се е разпаднала подобен тест не е необходимо - просто минават през нея веднъж. На първо място, изчистване на бисквитките. За да работите с плъгина бисквитка използвам Бисквитеното чудовище Addon:

Ние обикалят защита от ботове в Google, програмист бележки

След това пуснете ни анализатора и изчакайте, докато Google започва да се закълна, че нашите искания подозрително приличат на дейността на компютърни вируси.


заявка = 11, страница = 0
Намерени >> 0 сайтове
>> спи 60 секунди.
^ C

Спрете анализатор и въведете всяка заявка на Google. Браузърът трябва да покаже нещо като това:

Ние обикалят защита от ботове в Google, програмист бележки

Нищо пълнене, стартирайте Tcpdump на като корен:

Tcpdump -А -s 1500 DST google.ru и порт 80

-A ключови средства, които искате да покажете на прихванатите пакети в табличен формат, «-s 1500" - че всеки пакет трябва да бъдат показани само първите 1500 байта (по подразбиране - 68). Ако приемем, че в Ethernet мрежи, това е максималния позволен размер на пакета, ще ги видите в тяхната цялост. Останалата част от екипа е ясно.

Минаваме на CAPTCHA, спрете Tcpdump и погледнете заловените пакети бисквитки:

Rip от HTTP заявка бисквитка (Cookie: ...) и да направим тази в нашия скрипт:

. $ = "Opt---no бисквитки --header" Cookie. S = Съжалявам = BZXzL3t3l_-lBy59IEcOPQ; ";

Това е всичко - каквото и да стане капитан! Учудващо е, че Google от време на време не иска да отиде отново. Може би в момента на изчисляване е Cookie живот?

И последният проблем - това е, когато Google ще започне издаването на страницата, като показаната в предишния екрана, само без капитан. Тя има две решения - или да правят закъснението между повиквания към Google (виж кода на скрипта), или ако времето изтича, работи чрез списък прокси.

Мисля, че в този случай, няма нужда да се бърза - можете да оставите парсера да работят през нощта и на сутринта да получите списък от няколко хиляди сайтове. Между другото, ако този списък с някого е необходимо - ето го.

Подобно на този пост? Споделете с другите:

(Трябва да включите JS)

Подкрепете проекта - споделете линка, благодаря!