본문으로 건너뛰기

세션 관리

Crawlee에서 SessionPool은 프록시 IP 주소와 쿠키, 그리고 기타 사용자 정의 설정의 로테이션을 처리할 수 있게 해주는 클래스입니다.

SessionPool을 사용하면 차단되거나 작동하지 않는 프록시를 필터링할 수 있어, 액터가 이미 알려진 차단/비작동 프록시를 통해 불필요한 재시도를 하지 않는다는 장점이 있습니다. 또한 쿠키, 인증 토큰, 특정 헤더와 같이 IP 주소와 밀접하게 연관된 정보를 저장할 수 있습니다. 특정 IP에서만 쿠키와 식별자를 사용함으로써 차단될 가능성을 줄일 수 있습니다. 마지막으로, IP 주소의 균등한 로테이션이 가능합니다 - SessionPool은 무작위로 세션을 선택하므로 사용 가능한 IP 풀이 작더라도 특정 IP가 과도하게 사용되는 것을 방지할 수 있습니다.

차단 방지에 대한 자세한 내용은 차단 방지 가이드를 참조하세요.

다음은 Session pool 사용 예시입니다:

import { CheerioCrawler, ProxyConfiguration } from 'crawlee';

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

const crawler = new CheerioCrawler({
// 프록시 IP 세션 회전 논리를 사용하려면 프록시 사용을 켜야 합니다.
proxyConfiguration,
// 세션 풀 활성화 (기본값은 true).
useSessionPool: true,
// 기본 세션 풀 구성 재정의.
sessionPoolOptions: { maxPoolSize: 100 },
// 크롤러가 세션별로 쿠키를 저장하려면 true로 설정하고,
// 쿠키 헤더를 요청에 자동으로 설정합니다(기본값은 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 구성의 기본 사항입니다. Session pool이 작동하는 IP를 찾고 풀을 구축하는 데 시간이 필요하므로, 안정화될 때까지는 많은 오류가 발생할 수 있다는 점을 유의해 주세요.