Перейти к основному содержимому

Управление сессиями

SessionPool - это класс в Crawlee, который позволяет управлять ротацией прокси IP-адресов вместе с cookies и другими пользовательскими настройками.

Основное преимущество использования SessionPool заключается в возможности фильтрации заблокированных или неработающих прокси. Это позволяет избежать повторных запросов через известные нерабочие прокси. Другое преимущество - возможность хранить информацию, тесно связанную с IP-адресом, такую как cookies, токены авторизации и специальные заголовки. Использование cookies и других идентификаторов только с определенным IP снижает вероятность блокировки. И последнее, но не менее важное преимущество - равномерная ротация IP-адресов. SessionPool выбирает сессии случайным образом, что помогает избежать перегрузки небольшого пула доступных IP.

Подробнее о предотвращении блокировки читайте в руководстве по обходу блокировок.

Давайте рассмотрим примеры использования SessionPool:

import { CheerioCrawler, ProxyConfiguration } from 'crawlee';

const proxyConfiguration = new ProxyConfiguration({
/* opts */
});

const crawler = new CheerioCrawler({
// Чтобы использовать логику вращения IP-адресов в сессиях, вы должны включить использование прокси.
proxyConfiguration,
// Включает пул сессий (по умолчанию true).
useSessionPool: true,
// Переопределяет конфигурацию пула сессий по умолчанию.
sessionPoolOptions: { maxPoolSize: 100 },
// Установите в true, если вы хотите, чтобы краулер сохранял cookies на сессию,
// и автоматически устанавливал cookie-заголовок в запрос (по умолчанию true).
persistCookiesPerSession: true,
async requestHandler({ session, $ }) {
const title = $('title').text();

if (title === 'Blocked') {
session.retire();
} else if (title === 'Not sure if blocked, might also be a connection error') {
session.markBad();
} else {
// session.markGood() - этот шаг выполняется автоматически в BasicCrawler.
}
},
});

Это основы настройки SessionPool. Важно помнить, что пулу сессий требуется время для поиска рабочих IP и формирования стабильного пула, поэтому на начальном этапе возможно большое количество ошибок, пока пул не стабилизируется.