Как избежать блокировки
Существует множество причин, по которым скрапер может быть заблокирован. Рассмотрим две основные. Первая - это плохой или заблокированный IP-адрес. Об этом можно узнать подробнее в руководстве по управлению прокси. Вторая причина - это цифровые отпечатки браузера, которые мы подробно рассмотрим в этом руководстве. Для более глубокого понимания механизмов блокировки и изучения полезных приемов рекомендуем ознакомиться с курсом по анти-скрапингу в Apify Academy.
Цифровой отпечаток браузера - это набор характеристик и особенностей браузера, которые могут указывать на то, является ли браузер ботом или реальным пользователем. Более того, большинство браузеров имеют уникальные характеристики, позволяющие сайту отслеживать браузер даже при использовании разных IP-адресов. Именно поэтому при веб-скрапинге важно менять цифровые отпечатки браузера, что значительно снижает вероятность блокировки.
Использование цифровых отпечатков браузера
Изменение цифровых отпечатков браузера может быть утомительным процессом. К счастью, Crawlee предоставляет эту функцию без необходимости дополнительной настройки - использование отпечатков включено по умолчанию и доступно в PlaywrightCrawler
и PuppeteerCrawler
. Таким образом, при создании скрапера с использованием одного из этих краулеров, отпечатки будут автоматически генерироваться для браузера и операционной системы по умолчанию.
Настройка цифровых отпечатков браузера
В некоторых случаях может потребоваться ограничить используемые отпечатки - например, указать определенную операционную систему, локаль или браузер. Это также возможно в Crawlee - алгоритм генерации можно настроить с учетом конкретной версии браузера и многих других параметров. Рассмотрим примеры:
- PlaywrightCrawler
- PuppeteerCrawler
import { PlaywrightCrawler } from 'crawlee';
import { BrowserName, DeviceCategory, OperatingSystemsName } from '@crawlee/browser-pool';
const crawler = new PlaywrightCrawler({
browserPoolOptions: {
useFingerprints: true, // это значение по умолчанию
fingerprintOptions: {
fingerprintGeneratorOptions: {
browsers: [
{
name: BrowserName.edge,
minVersion: 96,
},
],
devices: [DeviceCategory.desktop],
operatingSystems: [OperatingSystemsName.windows],
},
},
},
// ...
});
import { PuppeteerCrawler } from 'crawlee';
import { BrowserName, DeviceCategory } from '@crawlee/browser-pool';
const crawler = new PuppeteerCrawler({
browserPoolOptions: {
useFingerprints: true, // это значение по умолчанию
fingerprintOptions: {
fingerprintGeneratorOptions: {
browsers: [BrowserName.chrome, BrowserName.firefox],
devices: [DeviceCategory.mobile],
locales: ['en-US'],
},
},
},
// ...
});
Отключение цифровых отпечатков браузера
Иногда может потребоваться полностью отключить использование цифровых отпечатков браузера. В Crawlee это сделать очень просто. Достаточно установить параметр useFingerprints
в опциях browserPoolOptions
в значение false
:
- PlaywrightCrawler
- PuppeteerCrawler
import { PlaywrightCrawler } from 'crawlee';
const crawler = new PlaywrightCrawler({
browserPoolOptions: {
useFingerprints: false,
},
// ...
});
import { PuppeteerCrawler } from 'crawlee';
const crawler = new PuppeteerCrawler({
browserPoolOptions: {
useFingerprints: false,
},
// ...
});
Полезные ссылки