헤드리스 브라우저 없이 Cloudflare CAPTCHA 풀이
원제 Cloudflare Turnstile solver library (no headless browser required)
114 포인트댓글 31
Key Point
Cloudflare의 CAPTCHA를 자동으로 우회하는 도구가 공개되면서 웹 보안과 봇 차단의 유효성 문제가 대두된다.
핵심 요약
- cfsolve는 헤드리스 브라우저 없이 Cloudflare Turnstile 위젯과 챌린지 페이지를 풀이하는 Rust 라이브러리 및 CLI 도구다.
- Turnstile 위젯 풀이에는 페이지 URL, 사이트키, 선택적으로 페이지 HTML이 필요하며, 챌린지 페이지는 직접 페칭하거나 HTML을 제공해야 한다.
- 브라우저 프로필(프로필 파일과 브라우저 체크 응답 JSON)로 특정 브라우저를 흉내내며, 현재 Safari와 Chromium 프로필을 지원한다.
- CLI 명령 예시로 주어진 페이지에서 특정 사이트키의 위젯을 풀이할 수 있고, --blank-page 옵션으로 사이트키만으로도 풀이 가능하다.
- 라이브러리로 사용할 때는 경로 의존성과 vendor/ 내 패치된 의존성을 Cargo.toml에 추가해야 하며, Browser 객체를 로드해 여러 작업에 공유할 수 있다.
- Turnstile 위젯은 PageSource::Navigate(페이지 로드), PageSource::Blank(사이트키만 사용), PageSource::Html(이미 로드된 페이지 HTML)로 풀이할 수 있다.
- browser.clear()로 챌린지 페이지를 가져와 cf_clearance 쿠키를 얻을 수 있으며, 같은 IP와 User-Agent에서만 유효하다.
- browser.solve()로 위젯 또는 챌린지 페이지를 자동 판별해 Token이나 cf_clearance를 반환할 수 있다.
- HTTP/HTTPS/SOCKS5 프록시를 Options로 설정 가능하며, 디버그 출력을 위해 Sink를 구현할 수 있다.
- Error::Network, Error::Rejected, Error::Challenged는 재시도 가능하고, Error::Blocked, Error::NotChallenged, Error::Config, Error::Unsupported는 재시도할 수 없다.
- 라이선스는 MIT이나 vendor/ 내 패치된 의존성은 각각의 라이선스를 유지한다.