프로젝트 소개

Pydoll은 WebDriver 없이 Chromium 기반 브라우저를 자동화하는 Python 라이브러리입니다. WebSocket을 통해 DevTools 프로토콜로 Chrome에 직접 연결하므로 드라이버 바이너리도, 노출되는 navigator.webdriver 플래그도 없습니다. API는 비동기이며 완전히 타입이 지정되어 있고, asyncio 위에 구축되었으며 mypy로 검사됩니다. README에 설명된 주요 기능: - 인간화 상호작용: 베지어 곡선을 따른 마우스 이동, 현실적인 타이핑과 스크롤 물리, humanize=True로 활성화됩니다. README는 이것이 브라우저와 IP 평판에 따라 Cloudflare Turnstile이나 reCAPTCHA v3 같은 행동 기반 챌린지를 통과하기에 종종 충분하다고 설명합니다. - 핑거프린트 주입: tab.apply_fingerprint()는 User-Agent, Client Hints, navigator, WebGL, canvas, screen, fonts, timezone, locale을 재정의하며 값을 일관되게 유지합니다. README는 주입된 재정의가 toString과 프로토타입 내성(introspection)을 견디고 Web Worker로 전파된다고 말합니다. 또한 Pydoll은 핑거프린트를 생성하거나 제공하지 않으며, 예시 프로필은 참고용일 뿐이라고 명시합니다. - 구조적 추출: Pydantic 모델을 정의하고 tab.extract() 또는 tab.extract_all()을 호출하면 타입이 지정되고 검증된 데이터를 얻을 수 있으며, CSS/XPath 자동 감지, 속성 타겟팅, 사용자 정의 변환, 중첩 모델을 지원합니다. - Shadow DOM과 iframe: 닫힌 shadow root를 포함한 shadow root와 교차 출처 iframe을 동일한 find/query/click API로 지원합니다. - 네트워크 제어: 광고와 트래커를 차단하는 요청 가로채기, API 탐색을 위한 트래픽 모니터링, HAR 1.2 기록 및 재생, 브라우저 세션을 상속하는 인증된 HTTP 요청. - 페이지 번들: 페이지와 해당 자산을 zip으로 저장하며, 선택적으로 자산을 단일 HTML 파일에 인라인할 수 있습니다. - 동시성과 원격 연결: 여러 탭과 격리된 브라우저 컨텍스트, 그리고 Docker나 원격 서버의 브라우저에 연결. - 사용자 정의 복구 로직과 지수 백오프를 갖춘 재시도 데코레이터. 설치는 pip install pydoll-python으로 하며, WebDriver 바이너리나 외부 의존성이 필요하지 않습니다. README는 현재 프로젝트가 한 사람에 의해 유지되고 있으며 개발이 더 차분한 속도로 계속되고, 프로젝트가 10k 스타에 도달하면 Firefox 지원이 목표로 계획되어 있다고 밝힙니다. 또한 Turnstile 우회는 마법 같은 우회가 아니며 환경과 IP 평판에 의존한다고 명시합니다.