今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
今日の優良食堂 · ギット飯が代わりに導入・分析

daijro/camoufox

Webスクレイピングとエージェント向けのオープンソース反検出ブラウザです。

Playwrightのコードはそのままに、camoufoxを起動するだけでnavigatorやWebGL、フォント、WebRTCの指紋が自動でローテーションされ、ブラウザが1台ごとに別人のように振る舞い始めます。ChromiumではなくFirefoxのSpidermonkeyエンジンを使うため、WAFのエンジンレベル検知をすり抜けられる点が実際に効いてきます。しかもメモリは200MBほどで済むので、AIエージェントを何十インスタンスも並べてクラウドで回しても、大規模スクレイピングでIP遮断に怯えることなく安心して任せられます。

01 / 概要
何をするものか一文で言うと
ひとことでWebスクレイピングとエージェント向けのオープンソース反検出ブラウザです。

Camoufoxは、Webスクレイピングや AIエージェント向けに設計されたFirefoxベースのアンチ検知ブラウザです。JavaScriptによる後付けの偽装ではなく、Firefox本体のC++コードにパッチを当ててnavigator情報やWebGL、canvasなどのフィンガープリントを書き換えます。Playwrightから独自のJugglerプロトコル経由で操作できる点も特徴です。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

ビルドはDockerfileとMakefile起点で進みます。まずFirefoxソースを取得し、additions/以下のパッチをmozilla-centralに適用します。additions/camoucfg/MaskConfig.hppが、navigator.webdriverや画面情報などフィンガープリント偽装ロジックをC++レベルで実装しています。additions/juggler以下は、Chrome DevTools Protocolに似た独自プロトコルで、PageHandlerやTargetRegistryなどがPlaywrightからの操作を仲介します。仕上げにmultibuild.pyが各OS向けバイナリを生成し、dist/へ出力します。build-testerディレクトリには、navigator.webdriverや自動化用グローバル変数、SpiderMonkey固有のエラースタック形式などをチェックするTypeScript製の検証スクリプトがあり、偽装の一貫性を継続的に確認しています。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    Dockerfileを見ると、Ubuntu上でbuild-essentialやrustc、golang-goなど大量の依存を入れてからmake setup-minimalとmake mozbootstrapを実行するため、初回ビルドは長時間かかると分かります。

  2. STEP 02

    コンテナ起動時のENTRYPOINTはpython3 ./multibuild.pyなので、実行するとFirefox本体のクロスプラットフォームビルドが走り、dist/にバイナリが出力される流れです。

  3. STEP 03

    pythonlib経由でPlaywrightから使う場合、build-tester/requirements.txtにplaywright<1.61という制約があり、新しいPlaywrightだとviewport.isMobile送信でコンテキスト作成が失敗する既知の問題があります。

  4. STEP 04

    build-tester/scripts/server.pyはローカルにHTTPサーバーを立て、test_page_template.htmlとchecks-bundle.jsを配信し、そこへCamoufoxでアクセスしてフィンガープリント検証を行う設計です。

  5. STEP 05

    collectors.tsやcore.tsを見ると、canvas・audio・WebGLのハッシュ収集に加え、navigator.webdriverやCDPスタックリークなど自動化検知シグナルを網羅的にチェックしていることが分かります。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

手元でビルド・実行すれば、navigator.webdriverがfalseで、Playwright系グローバル変数やCDPスタックの痕跡がなく、SpiderMonkey固有のエラー形式を保ったFirefoxバイナリが手に入ります。加えてbuild-testerを回せば、どの偽装項目が本物のFirefoxと一致しているかをカテゴリ別のpass・fail結果として確認できます。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

READMEに「開発中で本番運用には向かない場合がある」と明記されており、安定運用を前提にはできません。

02

ブラウザ本体の開発はCloverLabsAI/camoufoxやVulpineOSへ移っており、このリポジトリはチェックポイントをマージする本流コピーという位置付けです。

03

ビルドはFirefox本体をソースから丸ごとコンパイルするため、ディスク容量とビルド時間の要求が大きく、ccacheなしだと毎回コールドビルドになる旨の注記もあります。

04

PlaywrightはCamoufoxのJugglerプロトコルに合わせてバージョンが1.61未満に固定されており、最新のPlaywrightをそのまま組み合わせることはできません。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

スクレイピングやAIエージェント用途で、JS注入型の偽装では検知されやすいと感じている開発者に向いています。MaskConfig.hppやJuggler実装、build-testerの検証コードまで実在する具体的な実装が確認でき、単なる謳い文句ではなくC++レベルの改変である点は判断材料として信頼できます。ただしビルドの重さと開発中という位置付けは、実際に触る前に理解しておくべきです。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する