このプロジェクトについて
Pydollは、WebDriverを使わずにChromiumベースのブラウザを自動化するためのPythonライブラリです。WebSocket経由でDevTools Protocolを通じて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、フォント、タイムゾーン、ロケールを上書きし、値を一貫させます。READMEによれば、注入された上書きはtoStringやプロトタイプのイントロスペクションを生き延び、Web Workerにも伝播します。また、Pydollはフィンガープリントを生成したり同梱したりしないこと、サンプルプロファイルは参照用にすぎないことも記されています。
- 構造化抽出: Pydanticモデルを定義し、tab.extract()またはtab.extract_all()を呼び出すことで、型付きで検証済みのデータを取得できます。CSS/XPathの自動検出、属性ターゲティング、カスタム変換、ネストされたモデルに対応します。
- Shadow DOMとiframe: クローズドなものを含むshadow root、およびクロスオリジンiframeを、同じfind/query/click APIでサポートします。
- ネットワーク制御: 広告やトラッカーをブロックするリクエスト傍受、API発見のためのトラフィック監視、HAR 1.2の記録と再生、ブラウザセッションを継承する認証済みHTTPリクエスト。
- ページバンドル: ページとそのアセットをzipとして保存し、オプションでアセットを単一のHTMLファイルにインライン化します。
- 並行性とリモート接続: 複数のタブと分離されたブラウザコンテキスト、さらにDocker内やリモートサーバー上のブラウザへの接続。
- カスタムリカバリロジックと指数バックオフを備えたリトライデコレータ。
インストールはpip install pydoll-pythonで行い、WebDriverバイナリや外部依存は不要です。READMEは、プロジェクトが現在1人で維持されていること、開発はより落ち着いたペースで続いていること、プロジェクトが1万スターに達したらFirefoxサポートを目標として計画していることを述べています。また、Turnstileのバイパスは魔法のバイパスではなく、環境とIPの評判に依存すると述べています。
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.