アップデート一覧に戻る
New releaseAug 14, 2026

invisible_playwright v0.7.0

Playwright用の無料アンチディテクトブラウザステルス:検出されないヘッドレスFirefoxフィンガープリント。Pythonスクレイピング、reCAPTCHAおよびボット検出バイパス。オープンソース

共有
invisible_playwright

Playwright向け無料のアンチディテクトブラウザステルス:検出されないFirefoxフィンガープリント、ヘッドレスまたはヘッド付き。
PythonウェブスクレイピングとCAPTCHA回避。オープンソースで、あらゆるボット検出テストに合格します。

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. 本物の人間が使っているか? はい。操作はドライバー内で人間らしく処理されます。

  • すべてのクリック、ホバー、ドラッグは、人間らしいタイミングで自然なマウス経路をたどり、カーソルが瞬間移動することはありません。
  • 各入力は本物のマウスとバイト単位で同一です:本物の入力ソース、圧力、信頼されたイベント。

標準のPlaywright APIで駆動されます。詳細な解説:feder-cr/firefox_antidetect_patch


それでもCAPTCHAやアンチボットが表示される?それはプロキシの問題です。

ブラウザが処理されれば、それは変数ではなくなります。それでもチャレンジが表示される場合、問題はブラウザではなく、接続元のIPです。プロキシの約90%は公開されています:誰でも同じアドレスをレンタルできるため、すでに既知であり、サイトがチェックするブロック済みIPリストに載っています。既知のIP上の完璧なブラウザでも、依然として負けます。


インストール

pip install invisible-playwright
python -m invisible_playwright fetch      # 一回限りの約238 MBダウンロード(展開後約544 MB)、sha256検証済み

対応プラットフォーム:Windows x86_64Linux x86_64 / arm64。macOSはサポートされなくなりました(リリースはfirefox-20で終了);Macでは、存在しないバイナリをダウンロードする代わりに、パッケージは明確なメッセージとともに起動時に拒否します。


使用方法

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

100% Playwright互換 - 同期・非同期、すべてのメソッド、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、オーディオ、フォント、screen、約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")   # マウスがベジェ曲線上を弧を描いてボタンへ移動

非同期

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:
    ...   # 毎回同じGPU、同じcanvasハッシュ、同じオーディオコンテキスト

プロキシ

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

対応スキーム:socks5socks4httphttps。DNSはデフォルトでプロキシ経由でルーティングされ、ローカルリークはありません。

タイムゾーン

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

# デフォルト:タイムゾーンはegress IPから自動導出されます(プロキシ設定時はプロキシのegress、
# それ以外はホスト自身のパブリックIP)
with InvisiblePlaywright(proxy=proxy) as browser:
    ...

# 明示的なIANAゾーンが常に優先され、特定のゾーンを強制する唯一の方法
with InvisiblePlaywright(proxy=proxy, timezone="America/New_York") as browser:
    ...

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

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

with InvisiblePlaywright(
    seed=42,
    pin={
        "gpu.renderer": "ANGLE (NVIDIA, NVIDIA GeForce RTX 4090 Direct3D11)",
        "gpu.vendor":   "Google Inc. (NVIDIA)",
        "screen.width":  2560,
        "screen.height": 1440,
        "hardware.concurrency": 16,
    },
) as browser:
    ...

固定可能なキーの完全なリスト、固定とベイズサンプラーの相互作用、一般的なパターンは**docs/pinning.md**にあります。


CLI

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

invisible-playwright fetch    # エンジンがなければダウンロードし、キャッシュされた各エンジンを
                              # シールに対して検証し、パスを表示
invisible-playwright version  # ラッパー、コア、エンジンのバージョン、およびエンジンの
                              # キャッシュ場所

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

すべては**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はあなたが思うような手がかりではない はこの分野で最も有名なプロパティと、それを単独でパッチしてもほとんど得られない理由を説明しています。

関連プロジェクト

オープンソースの隣人たちと、それぞれの用途。

Firefox側

  • Camoufox - C++レベルでもパッチするアンチディテクトFirefox。より広い範囲をカバーし、独自のフィンガープリントデータベースを同梱;このプロジェクトはベイズサンプラーでシードからフィンガープリントを導出するため、1つの数値が1つのマシンを再現します。完全な比較
  • LibreWolf - プライバシーデフォルトを備えたFirefoxフォーク。人々がブラウジングするための設定済みバイナリを提供;これはソースパッチと自動化ラッパーを提供します。
  • arkenfox/user.js - 設定によるFirefoxの堅牢化。設定で十分な場合はそれを使用;このプロジェクトは設定では不十分な場合にC++をパッチします。

Chromium側

どれが適合するかは、問題がどのレイヤーにあるか、そしてFirefoxとChromiumのどちらが必要かによって決まります。Playwrightを検出されないようにする3つの方法は、各レイヤーが何に到達でき、何に到達できないかを、このプロジェクトのコストを含めて詳しく説明しています。

ツールではなくエンジンを選ぶ場合、AIエージェントフレームワークの多くがCDP経由でChromiumを駆動することに注意してください。これがあなたに代わって決定を下します:AIブラウザエージェントとステルス


ライセンス

MIT - LICENSEを参照。パッチされたFirefoxバイナリはMPL-2.0(Firefoxアップストリームライセンス)の下で配布されます。そのバイナリを生成するmozilla-centralに対するC++パッチはfeder-cr/firefox_antidetect_patchにあります。


免責事項

このプロジェクトは教育目的のみです。無保証で現状のまま提供されます。使用方法について一切の責任を負いません。自己責任で、お住まいの地域の法律に従って使用してください。


Built by Federico Elia  LinkedIn

tests License: MIT Python 3.11+ Firefox 151.0 GitHub stars

カテゴリ