실제로 Cloudflare 사이트에서 작동하는 스크래퍼를 만든 방법
Source: Dev.to
스크래핑이 계속 실패하는 이유
현재 대부분의 스크래퍼를 망치는 요인은 세 가지입니다.
- JavaScript 렌더링 – 많은 사이트가 빈 HTML 쉘만 제공하고 React 또는 Vue로 하이드레이션합니다. URL을 직접 가져오면 ID만 있는 “만 반환되고 다른 내용은 없습니다.
- 봇 탐지 – Cloudflare, PerimeterX, DataDome 등은 브라우저를 지문화합니다. 플러그인 누락, 잘못된 화면 해상도, 혹은 완벽하게 타이밍된 마우스 움직임이 차단을 유발합니다. 일반 Playwright 스크립트는 약 30 초 내에 실패합니다.
- IP 평판 – 데이터센터 IP는 코드가 실행되기도 전에 차단됩니다. AWS, Hetzner, DigitalOcean 등과 같은 제공업체는 많은 대상 사이트에서 기본적으로 차단됩니다.
각 문제를 개별적으로 해결할 수도 있지만, 그냥 신경 쓰지 않을 수도 있습니다.
내가 만든 것
anybrowse는 URL을 받아 깨끗한 Markdown을 반환합니다. 이것이 전부인 API입니다.
pip install anybrowse
from anybrowse import AnybrowseClient
client = AnybrowseClient()
result = client.scrape("https://techcrunch.com")
print(result.markdown)
내부적으로는 패치된 Chromium을 무작위 지문과 함께 실행하고, 첫 시도가 실패하면 주거용 ISP 프록시로 전환하며, Chrome을 특별히 프로파일링하는 사이트를 위해 Firefox‑기반 엔진(Camoufox)을 사용합니다. CAPTCHA 해결은 CapSolver를 통해 내장되어 있습니다.
AI 에이전트를 위해, Claude Desktop, Cursor, Windsurf와 바로 사용할 수 있는 MCP 서버가 있습니다:
{
"mcpServers": {
"anybrowse": {
"type": "streamable-http",
"url": "https://anybrowse.dev/mcp"
}
}
}
에이전트는 스크랩, 크롤링, 검색, 배치 스크랩, 구조화된 추출 도구를 얻게 됩니다. 검색 엔드포인트는 Brave Search API를 통해 동작하므로 Google에서 타임아웃되는 대신 실제 결과를 반환합니다.
솔직한 수치
- 90 % 성공률 일반 웹사이트에서.
- LinkedIn과 Twitter는 대부분의 콘텐츠에 로그인 필요 때문에 여전히 어렵습니다.
- 유료 장벽은 스크래핑으로 해결되지 않는 별도의 문제입니다.
남은 10 % 실패는 주로 공격적인 요청당 CAPTCHA와 엄격한 로그인 벽 때문입니다. CapSolver가 도움이 되지만 마법은 아닙니다.
사용해 보기
- 하루에 10회 무료 스크랩, 회원가입·신용카드 필요 없음.
- 더 필요하면 $5에 3,000회 스크랩 크레딧 팩을 구매할 수 있습니다.
anybrowse.dev • GitHub • Docs