Ikeraq

jo-inc/camofox-browser

エージェントに本物のブラウザを渡し、ページを番号付きの骨組みにして返す

MIT · 商用可 JavaScript ★ 11,688 (今日 +27) 2日前に更新
GitHub で見る jo-inc/camofox-browser
GitHub の説明(原文)
Stealth headless browser for AI agents — bypass Cloudflare, bot detection, and anti-scraping. Drop-in Puppeteer/Playwright replacement.

どういうものか

看板のとおり、これは検知をかわすためのブラウザである。先に断っておくと、弾かれないことと、取得してよいことは別の話だ。相手サイトの利用規約や robots.txt、地域ごとの法令はこの道具では解決しないので、対象ごとに自分で確かめる必要がある。

そのうえで中身を見ると、エージェントに Web を見せようとするときの二つの壁に答えている。ひとつは弾かれること。Playwright や画面なしの Chrome は特徴が知られていて、見分けられて止められる。しかも「見分けられないようにする拡張」を入れると、その拡張自体が新しい目印になってしまう。camofox-browser が土台に使っている Camoufox は、この問題を Firefox のC++の実装そのものを書き換えることで解いている。CPU のコア数、WebGL の描画装置名、音声処理、画面の大きさ、WebRTC といった、正体がばれる値を JavaScript から見える前の段階で差し替えてしまう。上から被せる細工がないので、細工の跡が見えない。

もうひとつの壁はページが重すぎること。生の HTML をそのままモデルに読ませれば、装飾やスクリプトで場所を食い尽くす。このプロジェクトはそこに手を入れていて、返すのは HTML ではなく支援技術向けの構造(アクセシビリティ・スナップショット)。README によれば生の HTML より9割ほど小さい。そのうえで、押せる要素や入力欄に e1 e2 e3 という通し番号を振って返す。エージェントは座標や CSS の指定を組み立てる必要がなく、「e7 を押す」「e3 に打ち込む」と番号で指すだけで済む。大きいページはページ送りで分割して受け取れる。

全体は REST の API サーバーとして動く。タブを作る・進む・押す・打つ・巻物のように送る・画面写真を撮る、といった操作が HTTP で呼べて、OpenClaw 向けのプラグインも用意されている。実運用側の作り込みも厚く、ブラウザは必要になるまで立ち上げず、使わなくなれば落とす(待機中は 40MB 程度)ので、Raspberry Pi や小さな VPS に相乗りさせる前提で設計されている。利用者ごとに Cookie と保存領域を分ける、Cookie ファイルを流し込んでログイン済みの状態で見る、noVNC 経由で人間が手でログインしてその状態をエージェントに引き継ぐ、住宅用プロキシを通して地域と時刻帯を自動で合わせる、といった機能が並ぶ。Google 検索・YouTube 検索・Amazon 検索など、よく使う検索は @google_search のような短縮の呼び出しにまとめられている。

ページを番号付きの骨組みにして返す エージェント (HTTPで頼む) このページを開いて e7 を押して e3 に打ち込んで ブラウザサーバー 書き換えた Firefox で開く 正体がばれる値は、JSから見える前に差し替え 装飾を落として番号を振る 押せる要素に e1 / e2 / e3 … 返ってくるもの 番号付きの一覧 e1 検索欄 e2 検索ボタン e3 ログイン (生のHTMLより9割小さい) 座標もCSSの指定も組み立てずに済むので、指し間違いが起きにくい
弾かれない工夫と同じくらい、読ませる量を減らす工夫に手が入っている。エージェント向けという看板はここに出ている。

どんなときに使うか

エージェントに実際のサイトを見せたいのに、途中で止められるとき

Playwright で組んだ手順が、ある日から通らなくなった、というときの乗り換え先。ただし API の互換品ではなく、localhost:9377 に立つ REST サーバーなので、呼び出し側は HTTP に書き直すことになる。

ログインが要るページを、エージェントに続けて見せたいとき

人が noVNC の画面で手でログインし、その状態を書き出してエージェントに引き継ぐ道が用意されている。認証だけ人がやって、あとは任せるという分担ができる。

注意点

最初の導入は軽くない。 初回起動時に Camoufox の本体(約300MB)を取得する。README には、Playwright のダウンロード抑止を設定している環境で取得が黙って飛ばされ、実行時に落ちる件への対処や、外部に置いた実行ファイルを指定する方法まで書かれている。閉じた環境に入れるなら、この節を先に読んでおきたい。

動作情報が既定で外に出る。 クラッシュやハングの匿名の報告が自動で送られる設計で、既定で有効。ここは中身を分けて読む必要がある。パスや引数、トークン、IP、ページの中身は送らないと書かれている一方、Google や Amazon のようなよく知られたドメインはそのまま送られる(どのサイトで失敗したかを集めるのが目的のため)。伏せられるのは、それ以外のドメインをハッシュ化したものだけだ。CAMOFOX_CRASH_REPORT_ENABLED=false で止められ、送り先を自分の場所に変えることもできる。

個人サービスの副産物という出自。 作者は「jo」という個人向けAIエージェントのチームで、README の冒頭にその案内が入る。悪いことではないが、単体のプロジェクトとしての長期の維持がどうなるかは、別に見ておいたほうがいい。

ライセンスは MIT。

開発の様子

9 か月
公開してからの期間。2026-01-26 が最初のコミットです
22 回
リリースの回数です
49 人
開発に参加した人数です
2 日前
最後のコミットです
238 件
未解決の Issue とプルリクエストの合計です(GitHub はこの2つを同じ数に含めます)

ほかの候補

browser-use/browser-use
人と同じようにブラウザを触らせて、Web上の手作業をAIに任せる
D4Vinci/Scrapling
サイトの作りが変わっても、取り出す場所を自力で探し直す
firecrawl/firecrawl
「取れなかった」で終わるページを取り切って、そのまま読める形で返す
X で共有 この記事がよかったら

この記事の更新日は 2026-09-09 です。 内容は公開されている README と GitHub のデータに基づいています。 数値は GitHub から取得したもの、警告は判定の基準にある条件での自動判定です。事実誤認を見つけた場合はお知らせください。