Node.js + Playwright Stealth: 5분 안에 Cloudflare 1020 우회하기
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
웹 크롤링/스크래핑 개발자, 반자동/자동화 도구 사용자
난이도: 중급 (Node.js 및 Playwright 기초 지식 필요)
핵심 요약
playwright-extra-plugin-stealth
플러그인을 통해 headless 브라우저 감지 회피 가능- 거주형 프록시(residential proxies)와 User-Agent 회전으로 IP 차단 방지
- 랜덤 딜레이 및 마우스 이동 시뮬레이션으로 자동화 감지 회피
섹션별 세부 요약
1. 기초 Playwright 설정
npm install playwright
명령어로 Playwright 설치chromium.launch()
로 브라우저 인스턴스 생성page.goto()
로 페이지 로딩 후page.content()
로 HTML 내용 추출- 문제점: 반자동 보호 기술(예: CAPTCHA, 1020 에러)으로 인한 크롤링 실패 가능성
2. Stealth 플러그인 추가
npm install playwright-extra playwright-extra-plugin-stealth
로 플러그인 설치chromium.use(stealth())
로 navigator.webdriver 속성 숨기기- 효과: 자동화 감지 회피율 상승, 1020 에러 발생 가능성 감소
3. 거주형 프록시 통합
- 프록시 배열(
residentialProxies
) 생성 후 랜덤 선택 chromium.launch({ proxy: { server: proxy } })
로 프록시 적용- 효과: IP 주소 회전으로 프록시 블랙리스트 회피
4. 헤더 및 User-Agent 회전
- User-Agent 배열 생성 후 랜덤 선택:
```javascript
const userAgents = ['Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36', ...];
```
extraHTTPHeaders
로'Accept-Language'
,'Accept'
헤더 추가- 효과: 브라우저 감지 기술 우회
5. 랜덤 딜레이 및 네비게이션 트윅
randomDelay()
함수로 1~3초 랜덤 딜레이 적용page.mouse.move()
로 마우스 이동,window.scrollBy()
로 스크롤 시뮬레이션- 효과: 자동화 추적 회피
6. 최종 스크립트
- 모든 설정 통합: 프록시, User-Agent, 헤더, 딜레이, 마우스 이동
- 코드 예시:
```javascript
const { chromium } = require('playwright-extra');
const stealth = require('playwright-extra-plugin-stealth');
chromium.use(stealth());
```
결론
- 1020 에러 우회를 위해 Stealth 플러그인 + 프록시 + 헤더 회전 조합 필수
- CAPTCHA 해결 기능 추가가 추천되며, Cloudflare 기술은 지속적으로 업데이트됨
- GitHub 저장소 및 HasData 블로그에서 실제 성능 데이터 확인 가능