アップデート一覧に戻る
New releaseSep 18, 2026

invisible_playwright v0.20.0

Playwrightをアンチボットに見つからないようにするので、CAPTCHAは不要:同じAPI、アンチ検出ステルスヘッドレスFirefox、未検出のフィンガープリント、ボット検出のバイパス、PythonによるWebスクレイピングとブラウザ自動化。

共有
invisible_playwright

Playwrightはアンチボットやキャプチャに検知されます。
これは検知されないフィンガープリントを持つアンチ検知Firefox上で動作し、既存のPlaywrightコードと互換性があります。

invisible_playwright - 5/5 detection suites passed

仕組み

アンチボットは2つの質問を投げかけ、reCAPTCHA、hCaptcha、Cloudflare Turnstileがその回答を採点します。invisible_playwrightはその両方に「はい」と答えます。

1. これは本物のブラウザか? はい。C++ソースレベルでパッチを当てたFirefoxです。

  • ブラウザのフィンガープリントはページに注入されるのではなく、エンジン内部で設定されます: navigator、screen、GPU/WebGL、canvas、フォント、オーディオ、WebRTC、タイムゾーン、ネットワーク。ヘッドレスでもヘッド付きでも、どちらでも同じ値になります。
  • JSシムも、オーバーライドも、読み取られる継ぎ目もありません。

2. 本物の人間が使っているか? はい。操作はドライバー内で人間らしく処理されます。

  • すべてのクリック、ホバー、ドラッグは、カーソルがテレポートすることなく、人間のタイミングで自然なマウス軌跡をたどります。
  • 各入力は本物のマウスとバイト単位で同一です: 本物の入力ソース、圧力、信頼されたイベント。

インストール

pip install invisible-playwright
python -m invisible_playwright fetch      # one-time download, sha256-verified: 240 MB (Windows) / 262 MB (Linux x86_64) / 253 MB (Linux arm64), about 550 MB unpacked

Python 3.11以降が必要です。

対応プラットフォーム: Windows x86_64、Linux x86_64 / arm64。


使い方

セッションごとのランダムなフィンガープリント

PlaywrightのAPI、同期・非同期ともに、コード変更なしで。 同じオブジェクト、同じ呼び出し、同じ戻り値。一部のサーフェスは対象外です - トレーシング、HAR、CDP、APIリクエストコンテキスト - これらは静かに誤動作するのではなく、理由を述べた一文で拒否します。すでにPlaywrightを使っているなら、切り替えは2行です:

- from playwright.sync_api import sync_playwright
- with sync_playwright() as p:
-     browser = p.firefox.launch()
+ from invisible_playwright import InvisiblePlaywright
+ with InvisiblePlaywright() as browser:

すべてのセッションは固有のフィンガープリント(GPU、オーディオ、フォント、画面、約200フィールド)とベジェ曲線のマウス動作を取得します。

同期

from invisible_playwright import InvisiblePlaywright

with InvisiblePlaywright(proxy={"server": "socks5://...", "username": "u", "password": "p"}) as browser:
    page = browser.new_page()
    page.goto("https://example.com")
    page.click("#submit")   # mouse arcs to the button on a Bezier curve

非同期

from invisible_playwright.async_api import InvisiblePlaywright

async with InvisiblePlaywright(proxy={"server": "socks5://...", "username": "u", "password": "p"}) as browser:
    page = await browser.new_page()
    await page.goto("https://example.com")
    await page.click("#submit")

browserオブジェクトはplaywright.sync_api.Browser / playwright.async_api.Browserであり、すべてのPlaywrightメソッドがそのまま動作します。

シードをログに記録して実行を再現できます:

sf = InvisiblePlaywright()
with sf as browser:
    print("seed =", sf.seed)
    # ...

再現可能なフィンガープリント

with InvisiblePlaywright(seed=42) as browser:
    ...   # same GPU, same canvas hash, same audio context, every run

プロキシ

proxy = {
    "server": "socks5://gate.example.com:1080",
    "username": "user",
    "password": "pass",
}
with InvisiblePlaywright(proxy=proxy) as browser:
    ...

対応スキーム: socks5、socks4、http、https。DNSはデフォルトでプロキシ経由でルーティングされ、ローカルへの漏洩はありません。

タイムゾーン

ブラウザのタイムゾーンはtimezone=に従います:

# default: timezone is auto-derived from the egress IP (proxy egress if a
# proxy is set, otherwise the host's own public IP)
with InvisiblePlaywright(proxy=proxy) as browser:
    ...

# explicit IANA zone always wins, the only way to force a specific zone
with InvisiblePlaywright(proxy=proxy, timezone="America/New_York") as browser:
    ...

特定のフィンガープリントフィールドの固定

デフォルトではすべてがseedから導出されます。残りはシード由来のまま、特定の値を強制するには:

with InvisiblePlaywright(
    seed=42,
    pin={
        "gpu.renderer": "ANGLE (AMD, Radeon R9 200 Series Direct3D11 vs_5_0 ps_5_0, D3D11)",
        "gpu.vendor":   "Google Inc. (AMD)",
        "screen.width":  2560,
        "screen.height": 1440,
        "hardware.concurrency": 16,
    },
) as browser:
    ...

GPUの固定は自由な文字列を設定するのではなく、検証済みのペルソナの1つを選択します。約81個のgetParameter値と拡張機能リストがレンダラー名とともに移動し、検出器がそれらを相互照合するためです。プールに存在しない名前を指定すると例外が発生し、エラーには存在する名前が列挙されます。

固定可能なキーの完全なリスト、固定がベイジアンサンプラーとどのように相互作用するか、一般的なパターンについては**docs/pinning.md**を参照してください。


CLI

インストールされるコマンドはinvisible-playwrightで、ハイフン付きです。python -m invisible_playwrightも同じように動作し、PATHに何も必要としません。

invisible-playwright fetch    # download the engine if missing, check every cached
                              # one against the seal, print the path
invisible-playwright version  # wrapper, core and engine versions, and where the
                              # engine is cached

ドキュメント、ガイド、比較

スクリプトを書くよりもプロンプトを出したい場合。 このページはエンジンであり、Pythonライブラリとして提供されています。コードを書かずに使う方法が2つあり、どちらも1行です: すでにお使いのMCPクライアント(Claude Code、Claude Desktop、Cursor)からは、 claude mcp add stealth -- uvx aihawk、詳細は MCPサーバーページを参照してください。または、インターフェースとモデルが含まれ、OpenRouterキーだけが必要な場合は、 uvx aihawk ui --openrouter-key sk-or-...、詳細は AIHawkを参照してください。内部は同じエンジンで、2つ目は1つ目のクライアントです。

これらすべては**wiki**でより読みやすく、検索可能になっており、1つのフラットなリストではなく4つのセクションに整理されています:

  • ドキュメント - インストール、素のPlaywrightからの2行での切り替え、プロキシ/タイムゾーンの 設定、特定フィールドの固定、CLI。
  • ガイド - 検知が実際にどのように 機能するかを7つのグループで解説: ブラウザアイデンティティ、canvas/WebGL/フォント/ オーディオ、ネットワークとWebRTC、自動化レイヤー、AIエージェント、ソースから 解説する検出器自体、そしてテスト。
  • 比較 - Camoufox、Patchright、nodriver、playwright-stealthとの比較、そして一般的に ChromiumよりもFirefoxを選ぶ理由。
  • 統合 - Scrapy、Crawlee、Robot Framework、CodeceptJS、テストランナー、Playwright MCP、そして 適合しないフレームワークを名前を挙げて説明。

どこから始めればよいかわからない場合: Playwrightを検知されなくする3つの方法 は他の多くのページがリンクする地図であり、あるサイトでPlaywrightがボットとして検知される はトラブルシューティングの順序であり、navigator.webdriverはあなたが思うような手がかりではない はこの分野で最も有名なプロパティと、それだけにパッチを当ててもほとんど何も得られない理由を説明しています。

検出器セクションは現在、商用アンチボット製品を名前で取り上げており、それぞれが 自身のドキュメントまたは確認されたリバースエンジニアリングから読まれています: Cloudflare Bot Managementと Turnstile、 DataDome、Kasada、 Akamai Bot Manager、 PerimeterX、hCaptcha、 Imperva、そして 残りのセット。

関連プロジェクト

これの他の部分。 エンジンは3つのうち中央にあり、その周りの2つが ほとんどの人がエンジンにたどり着く方法です:

カテゴリ