Парсинг — это задача, к вып? ... Руководство по просмотру веб-страниц без блокировки
Руководство по просмотру веб-страниц без блокировки...
Парсинг — это задача, к выполнению которой необходимо подходить ответственно, чтобы не нанести вред веб-сайтам, с которых производится парсинг. Веб-краулеры могут извлекать данные значительно быстрее и глубже, чем люди, поэтому некачественные методы парсинга могут повлиять на скорость работы сайта. Хотя большинство веб-сайтов не имеют методов борьбы с краулингом, некоторые веб-сайты используют процедуры, которые могут привести к ограничению веб-краулинга, поскольку они противодействуют свободному доступу к данным.
Если краулер делает несколько запросов в секунду и загружает огромные файлы, недостаточно мощный сервер будет с трудом справляться с многочисленными запросами краулеров. Некоторые администраторы сайтов не любят пауков и пытаются ограничить их доступ, потому что веб-краулеры, парсеры или пауки (все термины используются как взаимозаменяемые) не привлекают посетителей сайта и, как им кажется, влияют на производительность сайта. В этой статье мы рассмотрим лучшие техники веб-краулинга, чтобы избежать блокировки антипарсинговыми программами или программами обнаружения ботов при просмотре веб-страниц.
Что такое веб-краулер бот?
Краулинг — это технический термин для автоматического доступа к веб-сайту и получения данных с помощью программы, поэтому их называют «веб-краулерами». Веб-краулер, часто известный как паук или поисковый бот, загружает и индексирует контент со всего Интернета. Цель такого бота — изучить (почти) каждую веб-страницу в Интернете, чтобы получить информацию в случае необходимости.
Поисковые системы почти всегда управляют такими ботами. Поисковые системы могут выдавать соответствующие ссылки в ответ на поисковые запросы пользователей, применяя поисковый алгоритм к данным, собранным веб-гусеницами, формируя список веб-страниц, которые появляются после того, как пользователь набирает запрос в Google или Bing (или другой поисковой системе). Веб-бота можно сравнить с человеком, который перебирает все книги в неорганизованной библиотеке и создает картотеку, чтобы любой посетитель библиотеки мог быстро и легко найти нужную информацию. Организатор изучает название, краткое содержание и часть внутреннего содержания каждой книги, чтобы понять, о чем она, чтобы помочь классифицировать и сортировать книги библиотеки по темам.
Однако, в отличие от библиотеки, в Интернете нет осязаемых стопок книг, что затрудняет определение того, правильно ли каталогизирован весь соответствующий контент, или же значительная его часть была пропущена. Веб-бот начинает с набора известных веб-страниц, затем переходит по гиперссылкам с этих страниц на другие страницы, затем по гиперссылкам с этих страниц на другие страницы и так далее, пытаясь обнаружить весь релевантный материал в Интернете. Сколько всего общедоступного Интернета просматривается ботами поисковых систем, точно неизвестно. По некоторым данным, всего 40-70 процентов Интернета — или миллиарды веб-страниц — проиндексированы для поиска. Согласно некоторым источникам, только 40-70 процентов Интернета — или миллиарды веб-страниц — проиндексированы для поиска.
Как работают веб-краулеры?
Интернет развивается и расширяется быстрыми темпами. Боты веб-краулеров начинают работу с «затравки» или списка известных URL-адресов, поскольку невозможно определить, сколько всего веб-страниц существует в Интернете. Они начинают с просмотра сайтов по этим URL-адресам. Просматривая эти страницы, они находят ссылки на другие URL-адреса и добавляют их в список страниц для следующего просмотра.
Этот процесс может продолжаться бесконечно, учитывая огромное количество веб-страниц в Интернете, которые могут быть проиндексированы для поиска. С другой стороны, веб-краулер будет следовать определенным правилам, которые позволяют ему более избирательно подходить к выбору страниц, в каком порядке их следует просматривать и как часто их следует просматривать для проверки обновлений содержимого. Большинство веб-краулеров не предназначены для просмотра всего общедоступного Интернета; вместо этого они выбирают, какие страницы просматривать в первую очередь, основываясь на количестве других страниц, ссылающихся на них, количестве посетителей и других факторах, которые указывают на вероятность того, что страница содержит важную информацию.
Идея заключается в том, что веб-страница, на которую ссылается множество других веб-страниц и которая получает большой трафик, скорее всего, содержит высококачественную, авторитетную информацию, поэтому ее индексирование поисковой системой особенно важно — так же, как библиотека должна позаботиться о том, чтобы сохранить большое количество копий книги, которую берут многие люди.
Пересмотр веб-страниц: Содержимое Интернета постоянно обновляется, удаляется или перемещается. Веб-краулеры должны регулярно просматривать страницы, чтобы убедиться, что индексируется самая последняя информация.
Требования к файлу robots.txt: Веб-краулеры используют протокол robots.txt для определения того, какие страницы следует просматривать (также известный как протокол исключения роботов). Перед просмотром страницы они проверяют файл robots.txt, размещенный на веб-сервере страницы. Файл robots.txt — это текстовый файл, содержащий правила для любых ботов, которые пытаются получить доступ к размещенному веб-сайту или приложению. Эти правила определяют, какие страницы разрешено просматривать ботам и по каким ссылкам они могут переходить. В качестве примера посмотрите на файл robots.txt на сайте Cloudflare.com.
Все эти характеристики по-разному взвешиваются в секретных алгоритмах, которые каждая поисковая система закладывает в свои боты-пауки. Веб-боты разных поисковых систем действуют немного по-разному, но конечная цель у них одна: получать и индексировать содержимое веб-страниц.
Каковы примеры веб-краулеров?
Веб-краулеры есть у всех популярных поисковых систем, а у крупных поисковых систем их много и они имеют разную направленность. Например, у Google есть основной поисковый робот под названием Googlebot, который работает как на мобильных, так и на настольных компьютерах. Однако у Google есть и несколько других ботов, включая Googlebot Images, Googlebot Videos, Googlebot News и Ads Bot.
Вот еще несколько веб-ботов, с которыми вы можете столкнуться:
- DuckDuckBot для DuckDuckGo
- Yandex Bot для Yandex
- Baiduspider для Baidu
- Yahoo! Slurp для Yahoo!
- Bing также имеет стандартный веб-краулер под названием Bingbot
Почему веб-краулеры важны для SEO?
Если вы хотите повысить рейтинг вашего сайта, то веб-гусеницы должны добраться до ваших страниц и прочитать их. С помощью краулинга поисковые системы впервые узнают о ваших сайтах, но частый краулинг позволяет им видеть обновления, которые вы делаете, и быть в курсе свежести вашего контента. Поскольку активность веб-краулеров распространяется на период после начала вашей SEO-кампании, вы можете рассматривать ее как проактивную технику, помогающую вам появиться в результатах поиска и улучшить пользовательский опыт.
Управление бюджетом краулеров
Непрерывная работа веб-краулеров гарантирует, что ваш недавно опубликованный контент появится на страницах результатов поисковых систем (SERP). С другой стороны, Google и большинство других поисковых систем не позволяют вам бесконечно ползать.
У Google есть бюджет ползания, который направляет ботов в следующих направлениях:
- Как часто следует выполнять сканирование?
- Какие страницы следует сканировать?
- Какова максимальная нагрузка на сервер, которую можно считать приемлемой?
К счастью, бюджет на переползание установлен. В противном случае ползунки и посетители могут привести к перегрузке вашего сайта. Если у вас возникли проблемы с Googlebot, вы можете изменить его в Google Search Console. Если вы хотите, чтобы ваш сайт работал бесперебойно, вы можете регулировать наполнение сайта с помощью ограничений скорости наполнения и потребности в наполнении. Ограничение скорости ползания позволяет следить за получением данных с сайта, чтобы не снижать скорость загрузки и не допускать всплеска ошибок. Спрос на ползание отражает интерес Google и его пользователей к вашему сайту. Поэтому, если ваш сайт еще не имеет большого числа пользователей, Googlebot не будет посещать его так же часто, как популярные сайты.
Камни преткновения для веб-гусениц
Существует несколько вариантов того, как помешать веб-краулерам специально просматривать ваши страницы. Эти блокировки могут защитить важные, избыточные или нерелевантные страницы от появления в SERP по ключевым словам. Метатег noindex — это первое препятствие, поскольку он не позволяет поисковым системам индексировать и ранжировать страницу. Не индексировать страницы администраторов, страницы благодарности и результаты внутреннего поиска — обычно хорошая идея. Файл robots.txt — еще один камень преткновения для поисковых машин. Эта директива не является решающей, поскольку поисковые системы могут игнорировать файлы robots.txt, но она полезна для управления бюджетом поисковых систем.
В чем разница между веб-краулингом и парсингом?
Веб-краулер, часто называемый «пауком», — это автономный бот, который работает в Интернете для индексирования и поиска контента, следуя внутренним связям на веб-страницах. В целом, термин «краулер» относится к способности программы самостоятельно перемещаться по веб-сайтам, возможно, без четкой конечной цели или задачи, постоянно исследуя, что может предложить сайт или сеть. Поисковые системы, такие как Google, Bing и другие, используют веб-краулеры для извлечения контента для URL, проверки этой страницы на наличие других ссылок, получения URL для этих ссылок и так далее.
С другой стороны, парсинг — это практика извлечения определенных данных с веб-сайта. В отличие от парсинга, парсер ищет конкретную информацию на определенных сайтах или страницах.
Однако прежде чем приступить к парсингу, необходимо выполнить определенный вид парсинга, чтобы найти нужную информацию. Парсинг данных подразумевает определенное копирование, например, сохранение всех ключевых слов, изображений и URL-адресов с веб-страницы. Веб-ползание просто копирует то, что уже есть, тогда как парсинг извлекает конкретные данные для анализа или генерирует что-то новое.
Поиск в Интернете — это то, что выполняют Google, Yahoo, Bing и другие поисковые системы при поиске информации. Парсинг — это техника извлечения данных с определенных веб-сайтов, например, данных о фондовом рынке, деловых запросов и продуктов поставщиков.
13 советов о том, как ползать по веб-сайтам без блокировки
ROBOTS.TXT
Прежде всего, вы должны понять, что такое файл robots.txt и как он функционирует. Этот файл содержит стандартные правила парсинга. Другими словами, он уведомляет поисковые системы о том, какие страницы или файлы они могут и не могут запрашивать с вашего сайта. В основном это используется для того, чтобы предотвратить перегрузку сайта запросами. Многие сайты разрешают GOOGLE парсить их содержимое. Файл robots.txt можно увидеть на сайтах по адресу http://example.com/robots.txt. User-agent: * или Disallow:/ в файле robots.txt некоторых сайтов указывает на то, что они не хотят, чтобы их страницы подвергались парсингу. Антипарсинговые механизмы работают на основе простого правила: это бот или человек? Чтобы принять решение, он должен проанализировать это правило, используя заданные критерии. Антипарсинговые механизмы ссылаются на следующие пункты: Вас классифицируют как «бота», если вы парсите страницы быстрее, чем это может сделать человек. Во время парсинг держите в уме одну и ту же схему. Например, предположим, вы собираете фотографии или ссылки с каждой страницы целевого домена. Если вы занимаетесь парсингом с одного и того же IP в течение длительного времени. User-Agent недоступен. Возможно, вы используете браузер, который не использует заголовки, например Tor Browser. Если вы будете помнить об этих факторах при парсинг веб-сайта, вы сможете парсить любой веб-сайт в Интернете. Я уверен, что если вы не будете забывать об этих факторах при парсинге веб-сайта, вы сможете парсить любой веб-сайт в Интернете.
Ротация IP-адресов
Это самый простой подход для антипарсинговых систем, чтобы застать вас врасплох. Вы будете запрещены, если продолжите использовать один и тот же IP-адрес для каждого запроса. В результате для каждого успешного запроса на парсинг вы должны использовать другой IP-адрес. Перед выполнением HTTP-запроса вы должны иметь пул из как минимум 10 IP-адресов. Чтобы избежать блокировки, вы можете использовать прокси-сервисы, такие как Scrapingdog или любой другой прокси-сервис. Перед выполнением запроса я включил небольшой фрагмент кода на языке python, который можно использовать для создания пула новых IP-адресов. Это вернет ответ в формате JSON с тремя свойствами: IP, порт и страна. Этот API прокси вернет IP-адреса, основанные на коде страны. Однако для сайтов с продвинутыми механизмами обнаружения ботов необходимо использовать либо мобильный, либо домашний прокси. Для таких сервисов можно использовать Scrapingdog. Общее количество IP-адресов в мире фиксировано. Воспользовавшись этими услугами, вы получите доступ к миллионам IP-адресов, которые можно использовать для парсинга миллионов страниц. Это лучшее, что вы можете сделать, если хотите заниматься парсингом в течение длительного времени.
User-Agent
Заголовок запроса User-Agent представляет собой строку символов, которая позволяет серверам и сетевым аналогам идентифицировать приложение, операционную систему, производителя и/или версию запрашивающего агента пользователя. Некоторые веб-сайты блокируют определенные запросы, если User-Agent не принадлежит основному браузеру. Многие веб-сайты не позволят вам читать их содержимое, если пользовательский агент не установлен. Вы можете узнать, какой у вас user agent, поискав его в Google. http://www.whatsmyuseragent.com/ Вы также можете проверить свою строку user-string здесь: http://www.whatsmyuseragent.com/ Функция защиты от парсинга, используемая при блокировке IP-адресов, использует аналогичную технику. Вы будете заблокированы в мгновение ока, если будете использовать один и тот же пользовательский агент для каждого запроса. Каков же ответ? Решение простое: либо сгенерировать список юзер-агентов, либо использовать утилиты, такие как поддельные юзер-агенты. Я пробовал оба метода, но для эффективности рекомендую использовать библиотеку.
Парсинг должен быть более медленным, со случайными интервалами между ними.
Как вы, вероятно, знаете, скорость, с которой люди и боты просматривают веб-страницы, существенно различается. Боты могут парсить сайты с бешеной скоростью. Никому не выгодно делать быстрые, ненужные или случайные запросы к веб-сайту. Сайт может упасть в результате такого избытка запросов. Чтобы избежать этой ошибки, сделайте бота программно «спящим» между заданиями по парсингу. Система защиты от парсинга сделает вашего бота более человечным. Это также не окажет негативного влияния на сайт. Параллельные запросы используются для того, чтобы спарсить как можно меньше страниц. Установите таймер на 10-20 секунд, прежде чем продолжить парсинг. Используйте методы дросселирования скорости сканирования, которые автоматически регулируют скорость сканирования в зависимости от нагрузки на паука и сайт, который вы сканируете. После нескольких пробных запусков отрегулируйте скорость ползания паука до оптимального уровня. Поскольку среда меняется со временем, делайте это регулярно.
Обнаружение изменений на сайте и изменений в шаблоне сканирования
Люди, как правило, не выполняют повторяющиеся задачи, просматривая сайт со случайными событиями. С другой стороны, боты для парсинг настроены на то, чтобы ползать по веб-сайту таким же образом. Некоторые веб-сайты, как я уже говорил, имеют отличные функции защиты от парсинга. Они поймают вашего бота и запретят его на неопределенный срок.
Как же сделать так, чтобы ваш бот не был обнаружен? Этого можно добиться, включив случайные нажатия на страницы, движения мыши и случайные действия, которые заставляют паука выглядеть человеком.
Другая проблема заключается в том, что многие сайты изменяют свои макеты по разным причинам, и в результате ваш парсер не сможет предоставить нужные вам данные. Для этого вам понадобится сложная система мониторинга, которая сможет обнаружить изменения в макете сайта и уведомить вас об этом. После этого вы сможете использовать эти данные в своем парсере, чтобы заставить его работать правильно.
Заголовки
Когда ваш браузер отправляет запрос на веб-сайт, он передает список заголовков. Сайт анализирует вашу идентификацию с помощью заголовков. Вы можете использовать эти заголовки, чтобы ваш парсер выглядел более человечным. Просто скопируйте их и вставьте в объект заголовка вашего кода. Это создаст впечатление, что ваш запрос исходит от реального браузера. Более того, используя ротацию IP и User-Agent, ваш парсер будет непробиваемым. Любой сайт, как динамический, так и статический, может быть спарсен. Используя эти стратегии, вы сможете победить 99,99% антипарсерских устройств.
Теперь существует заголовок под названием «Referer». Это заголовок запроса HTTP, который сообщает сайту, откуда вы пришли. Часто бывает полезно настроить все так, чтобы казалось, что вы пришли из Google; это можно сделать с помощью заголовка «Referer»: «https://www.google.com/»
Если вы собираете сайты в Великобритании или Индии, вы можете использовать https://www.google.co.uk или google.in. Так ваш запрос будет выглядеть более подлинным и естественным. С помощью такой программы, как https://www.similarweb.com, вы можете найти самые популярные рефереры любого сайта; часто это могут быть сайты социальных сетей, такие как Youtube или Facebook.
Браузер без опережения
Содержание веб-сайтов отображается по-разному в зависимости от используемого браузера. Различные браузеры по-разному отображают определенные элементы. Возьмем, к примеру, поиск Google. Если браузер (определяемый по агенту пользователя) имеет расширенные возможности, сайт может отображать более «богатый» контент — более динамичный и стилизованный материал, который в значительной степени опирается на Javascript и CSS. Проблема в том, что при парсинге материал создается кодом JS, а не необработанным HTML-ответом, передаваемым сервером. Вам может понадобиться использовать безголовый браузер (или попросить Scrapingdog сделать это за вас!), чтобы спарсить эти веб-сайты.
Selenium и Puppeteer, например, предоставляют API для управления браузерами и парсинга динамических веб-сайтов. Следует подчеркнуть, что для того, чтобы сделать эти браузеры необнаруживаемыми, необходимо проделать большую работу. Однако это самый эффективный метод парсинга страниц. Вы также можете использовать некоторые безбраузерные сервисы для запуска экземпляра браузера на их серверах вместо того, чтобы увеличивать нагрузку на ваш сервер. На их сервисах вы можете открыть до 100 экземпляров одновременно. В целом, это беспроигрышная ситуация для сектора парсинга.
Услуги по решению проблемы капчи
На многих сайтах используется ReCaptcha от Google, которая позволяет пройти тест. Если тест пройден в течение определенного времени, считается, что вы не бот, а реальный человек. Если вы часто парсите сайт, сайт в конце концов заблокирует вас. Вместо онлайн-страниц вы начнете видеть страницы с капчей. Scrapingdog — это одна из служб, которая может помочь вам обойти эти ограничения. Поскольку некоторые из этих служб решения CAPTCHA являются медленными и дорогими, вы, возможно, захотите проверить, является ли парсинг сайтов, требующих постоянного решения CAPTCHA, все еще экономически эффективным.
Ловушки Honeypot
Для выявления взлома или парсинга существуют скрытые ссылки. В действительности это программа, имитирующая поведение реальной системы. На некоторых сайтах в системах установлены «медовые точки», невидимые для обычных пользователей, но доступные для ботов и парсеров. Если ссылка имеет CSS-свойства «display: none» или «visibility: hidden», вам не следует нажимать на нее; в противном случае сайт сможет правильно идентифицировать вас как программного парсера, отпечатать свойства ваших запросов и быстро забанить вас. Honeypots — это один из самых простых способов для знающих веб-мастеров обнаружить краулеров, поэтому убедитесь, что вы проверяете каждую страницу на наличие краулеров.
Кэш Google
Время от времени Google кэширует дубликаты некоторых веб-страниц. Поэтому, вместо того, чтобы посылать запрос на этот сайт, вы можете послать запрос на его кэшированную копию. Просто добавьте «http://webcache.googleusercontent.com/search?q=cache:» к URL. Например, вы можете отправить запрос «http://webcache.googleusercontent.com/search?q=cache:https://www.scrapingdog.com/docs», чтобы получить документацию Scrapingdog. Однако помните, что эту стратегию следует использовать только для сайтов, не содержащих важной информации, которая часто меняется. Например, Linkedin дал указание Google не кэшировать свои данные. Кроме того, Google создает кэшированную копию веб-страницы по истечении определенного времени. Это также зависит от популярности сайта.
Парсинг из кэша Google
В крайнем случае, вы можете взять данные из кэш-копии сайта Google, а не с самого сайта, особенно для материалов, которые не часто меняются. Просто добавьте «http://webcache.googleusercontent.com/search?q=cache:» в начало URL-адреса (например, чтобы спарсить документацию для API Scraper, спарсите «http://webcache.googleusercontent.com/search?q=cache:https://www.scraperapi.com/documentation»).
Это отличный обходной путь для нечувствительных ко времени данных на сайтах, которые невероятно сложно спарсить. Хотя парсинг из кэша Google более надежен, чем парсинг с сайта, который активно пытается заблокировать ваши парсеры, имейте в виду, что это не надежное решение; например, некоторые сайты, такие как LinkedIn, активно просят Google не кэшировать их данные, а данные менее популярных сайтов могут быть устаревшими, поскольку Google определяет, как часто они должны просматривать сайт, основываясь на p-значении сайта.
Держитесь подальше от JavaScript.
Данные, вложенные в элементы JavaScript, трудно получить. На сайтах используется множество различных функций JavaScript для отображения содержимого в зависимости от действий пользователя. Стандартной практикой является показ фотографий товаров в окне поиска только после того, как пользователь ввел определенную информацию. Утечки памяти, нестабильность программы и, в редких случаях, откровенные сбои — все это может быть вызвано JavaScript. Работа с динамическими функциями может быть очень сложной. Если это возможно, избегайте использования JavaScript. Чтобы сэкономить деньги, ползайте в непиковые часы.
Поскольку они не читают содержимое, большинство краулеров просматривают страницы гораздо быстрее, чем обычный пользователь. В результате одна неограниченная программа веб-ползания будет оказывать большее влияние на спрос на сервер, чем обычный пользователь Интернета. С другой стороны, ползание в периоды высокой нагрузки может пагубно сказаться на пользовательском опыте из-за замедления обслуживания. Оптимальное время для сканирования веб-сайта зависит от конкретного случая, но для начала лучше всего использовать непиковые часы вскоре после полуночи (в зависимости от сервиса).
Не парсите изображения.
Изображения — это элементы, содержащие много данных, которые часто защищены авторским правом. Это не только потребует большей пропускной способности и места для хранения, но и увеличит вероятность нарушения чьих-либо прав. Кроме того, поскольку изображения требуют большого объема данных, они часто скрыты в компонентах JavaScript (например, за ленивой загрузкой), что усложняет процесс сбора данных и замедляет работу парсера. Для извлечения фотографий из JS-элементов необходимо создать и использовать более продвинутый процесс парсинга (такой, который заставляет сайт загружать все содержимое).
Заключение
Надеемся, вы получили несколько советов о том, как парсить популярные сайты, не попадая в черный список и не занося свой IP-адрес в черный список. Хотя в большинстве случаев достаточно ротации IP-адресов и подходящих заголовков HTTP-запросов, вам может понадобиться прибегнуть к более сложным подходам, таким как использование браузера без заголовков или кэша Google для получения нужной вам информации. При парсинге всегда важно учитывать мнение веб-мастеров и других пользователей сайта; поэтому, если вы заметили, что сайт замедляется, уменьшите скорость запроса. Это особенно важно при поиске небольших сайтов, которые могут не располагать возможностями хостинга крупных компаний.
Несомненно, использование прокси-сервиса может помочь вам решить проблемы и преодолеть методы защиты от парсинга, применяемые целевыми сайтами. В конце концов, решение остается за вами, и оно будет основано на ваших требованиях к парсингу, бюджете и технологических требованиях. Если вам понравилась информация из этой статьи, поделитесь ею со своими друзьями, партнерами и сотрудниками. Вы можете эффективно выполнять парсинг веб-страниц, если будете соблюдать меры предосторожности. Обязательно следуйте этим 13 советам, чтобы избежать блокировки во время парсинга на сайте.