アンチスクレイピングシステムに悩まされていませんか?あなただけではありません
スクレイピング開発者なら、一度は経験したことがあるでしょう——
コードを書いて実行したら、突然ウェブページにこんな表示が…
「申し訳ございません、異常なアクセスが検出されました…」
あるいはもっと厳しく、検証の機会すら与えずに403 Forbiddenを返してくることもあります。
Cloudflare、reCAPTCHA、FingerprintJS…これらのアンチスクレイピングシステムはますます賢くなっており、従来のSeleniumやPlaywrightは、まるで「丸裸」のように簡単に見破られてしまいます。
今回紹介するこのオープンソースプロジェクトは、現時点で最も「完璧な偽装」に近い解決策かもしれません。
その名もCloakBrowser。GitHubで既に4,300以上のスターを獲得しています。
01 問題の根源:ブラウザフィンガープリンティング
なぜSeleniumやPlaywrightといったツールは検出されてしまうのでしょうか?
その答えはブラウザフィンガープリントにあります。
あなたが通常のブラウザでウェブサイトにアクセスすると、サイトは膨大な量のブラウザ特性を収集します。具体的には以下のような情報です:
- Canvasのレンダリング結果
- WebGLのレンダリング情報
- フォントリスト
- 画面解像度
- WebRTC IPアドレス
- navigator.webdriverがtrueかどうか
- プラグインリスト
- TLSフィンガープリント
これらの特性が組み合わさることで、ブラウザの「指紋」を形成します。一方、SeleniumやPlaywrightのような自動化ツールは、その特性が固定されているため——例えばnavigator.webdriverは常にtrueを返します——簡単に識別されてしまうのです。
従来の解決策はパッチ適用です。コードにJavaScriptを注入し、これらの特性値を修正します。
しかしこれには問題があります——ブラウザがアップデートされるたびに、パッチが無効になる可能性があるのです。さらに、パッチを適用すること自体が一つの特徴となり、高度な検出システムは「改ざんの痕跡」を識別できます。
02 コア原理:C++ソースコードレベルでの改変
CloakBrowserは全く異なるアプローチを取ります。
ランタイムでパッチを適用するのではなく、ChromiumのC++ソースコードを直接修正し、新しいバイナリとして再コンパイルするのです。
これは何を意味するのでしょうか?
検出サイトが見ているのは本物のブラウザ——なぜなら、それ自体が本物のブラウザだからです。
以下のテストデータをご覧ください(2025年4月実測、Chromium 146環境下):
| 0.9(人間) | ||
| PASS | ||
| PASS | ||
| NORMAL (4/4) |
30以上の検出サイトでテストし、30以上がパスしました。
03 コア機能:何ができるのか?
3.1 49のソースコードレベルパッチ
CloakBrowserはChromiumに対して49のC++レベルでのソースコードパッチを適用しています。
- Canvasフィンガープリント
- WebGLフィンガープリント
- Audioフィンガープリント
- フォントフィンガープリント
- GPUフィンガープリント
- 画面フィンガープリント
- WebRTC IP
- ネットワークタイミング
- 自動化シグナル
- CDP入力動作
各フィンガープリントがソースコードレベルで変更されているため、検出システムからは「改変された痕跡」ではなく、「本物のブラウザ特性」として見えます。
3.2 humanize=True:人間らしい振る舞い
ハードウェアフィンガープリントに加えて、行動検出も重要です。
本物の人間がブラウザを操作する際、マウスの動きは直線ではなく弧を描きます。タイピング時には各文字の間にわずかな間があり、スクロール速度も一定ではありません。
CloakBrowserのhumanize=Trueパラメータを使えば、これらの人間らしい挙動をワンクリックで有効にできます。
- ベジェ曲線によるマウス移動
- 一文字ずつのリアルなタイピング
- 人間らしいスクロールパターンのシミュレーション
3.3 WebRTC IPスプーフィング
プロキシ使用時、通常のブラウザではプロキシIPではなくローカルIPが漏洩する可能性があります。
CloakBrowserの--fingerprint-webrtc-ip=autoオプションは、プロキシIPから自動的に取得し、WebRTC経由で漏洩するIPを偽装します。これにより、検出システムにはローカルIPではなく、プロキシIPが見えるようになります。
3.4 ブラウザプロファイルマネージャー
CloakBrowserは、Multilogin、GoLogin、AdsPowerといった商用ツールの代替となる、セルフホスト型のブラウザプロファイルマネージャーも提供します。
- ユニークなフィンガープリントを持つブラウザプロファイルの作成
- プロキシサポート
- 永続的なセッション
- noVNC経由でブラウザ内での起動と操作
04 クイックスタート:3行のコード、30秒
CloakBrowser最大の利点は、既存コードへの影響がゼロであることです。
既にPlaywrightを使用しているなら、たった3行を変更するだけです。
残りのコードは一切変更不要です。
インストール方法:
初回実行時、CloakBrowserは約200MBのステルスChromiumバイナリを自動ダウンロードし、その後ローカルにキャッシュされます。
05 サポートしているフレームワーク
CloakBrowserは多様なフレームワークと統合できます。
- browser-use:AIエージェントによるブラウザ操作
- Crawl4AI:AIフレンドリーなクローラー
- Scrapling:高性能クローラー
- Stagehand:AI駆動のブラウザ操作
- LangChain:LLMアプリケーションフレームワーク
- Selenium:従来の自動テストツール
基本的に、PlaywrightやPuppeteerベースのフレームワークであれば、CloakBrowserにシームレスに置き換えられます。
06 注意事項
このツールはCAPTCHAを解決できますか?
できません。これは予防策であり、解決策ではありません。
CloakBrowserの目標は、CAPTCHAの出現自体を防ぐことであり、表示されたCAPTCHAを自動で突破することではありません。もし対象サイトがどうしてもCAPTCHAの入力を要求する場合、別途CAPTCHA解決サービスが必要です。
プロキシは自身で用意する必要があります
CloakBrowserにはプロキシ自動切り替え機能は組み込まれていません。プロキシサーバーを自分で用意し、起動時にproxyパラメータを介して渡す必要があります。
ブラウザは自動更新されます
CloakBrowserは自動更新メカニズムを備えており、バックグラウンドで新しいバージョンをチェックし、ダウンロードします。バージョンを固定する必要があるシナリオでは、起動時に特定のバージョンを指定することができます。
最後に
CloakBrowserを使って1週間スクレイピングプロジェクトを運用してみて、最も感じたことは:
優れたツールは、透明であるべきだ。
各ウェブサイトの検出メカニズムを研究する必要も、たくさんの回避策を書く必要も、ブラウザがアップデートされるたびにヒヤヒヤする必要もありません。CloakBrowserは、これらの複雑な問題を低レイヤーで処理します。上位のコードから見れば、インポート元を変更するだけです。
もしアンチスクレイピングでお困りなら、あるいはあなたのAIエージェントに安定したブラウザ環境が必要なら、CloakBrowserは試してみる価値があります。
何しろ、3行のコード、30秒の移行コストです。試しても損はないでしょう。
プロジェクトURL