
invisible_playwright v0.7.2
Playwright के लिए मुफ़्त एंटीडिटेक्ट ब्राउज़र स्टील्थ: अनडिटेक्टेड हेडलेस फ़ायरफ़ॉक्स फ़िंगरप्रिंट। Python स्क्रैपिंग, रीकैप्चा और बॉट डिटेक्शन बाईपास। ओपन सोर्स
Playwright के लिए मुफ्त एंटीडिटेक्ट ब्राउज़र स्टील्थ: अनडिटेक्टेड Firefox फ़िंगरप्रिंट, हेडलेस या हेडेड।
Python वेब स्क्रैपिंग और कैप्चा बायपास। ओपन सोर्स, और यह हर बॉट डिटेक्शन टेस्ट पास करता है।

यह कैसे काम करता है
एंटी-बॉट दो सवाल पूछते हैं, और reCAPTCHA, hCaptcha और Cloudflare Turnstile जवाबों को स्कोर करते हैं। invisible_playwright दोनों का जवाब हाँ में देता है।
1. क्या यह एक असली ब्राउज़र है? हाँ। यह Firefox है, जिसे C++ स्रोत स्तर पर पैच किया गया है।
- ब्राउज़र फ़िंगरप्रिंट इंजन के अंदर सेट होता है, पेज में इंजेक्ट नहीं किया जाता: navigator, screen, GPU/WebGL, canvas, fonts, audio, WebRTC, timezone, network। हेडलेस या हेडेड, दोनों तरह से समान मान।
- कोई JS shim नहीं, कोई override नहीं, पढ़ने के लिए कोई सीम नहीं।
2. क्या इसे एक असली इंसान इस्तेमाल कर रहा है? हाँ। क्रियाएँ ड्राइवर में humanized हैं।
- हर क्लिक, hover और drag एक प्राकृतिक माउस पथ का अनुसरण करता है जिसमें मानवीय टाइमिंग होती है, कोई टेलीपोर्टिंग कर्सर नहीं।
- हर इनपुट एक असली माउस के बाइट-समान है: असली इनपुट स्रोत, दबाव, trusted events।
मानक Playwright API द्वारा संचालित। पूरा विवरण: feder-cr/firefox_antidetect_patch।
फिर भी कैप्चा या एंटी-बॉट दिख रहा है? यह प्रॉक्सी है।
एक बार ब्राउज़र संभाल लिया जाए तो यह वेरिएबल नहीं रहता। अगर आपको अभी भी चुनौती मिल रही है, तो संकेत अब ब्राउज़र नहीं है, यह वह IP है जिससे आप आते हैं। लगभग 90% प्रॉक्सी सार्वजनिक हैं: कोई भी उसी पते को किराए पर ले सकता है, इसलिए यह पहले से ज्ञात है और उन blocked-IP सूचियों पर है जिन्हें साइटें जाँचती हैं। एक ज्ञात IP पर एक आदर्श ब्राउज़र फिर भी हार जाता है।
इंस्टॉल करें
pip install invisible-playwright
python -m invisible_playwright fetch # एक बार का ~238 MB डाउनलोड (~544 MB अनपैक्ड), sha256-सत्यापित
समर्थित प्लेटफ़ॉर्म: Windows x86_64, Linux x86_64 / arm64। macOS अब समर्थित नहीं है (रिलीज़ firefox-20 पर रुक गईं); Mac पर पैकेज लॉन्च के समय एक स्पष्ट संदेश के साथ मना कर देता है, बजाय एक बाइनरी डाउनलोड करने के जो अब मौजूद नहीं है।
उपयोग
प्रति सत्र यादृच्छिक फ़िंगरप्रिंट
100% Playwright-संगत - sync और async, सभी विधियाँ, शून्य API परिवर्तन। यदि आप पहले से Playwright का उपयोग करते हैं, तो स्विच करना दो पंक्तियों का काम है:
- 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, audio, fonts, screen, ~200 फ़ील्ड) और Bezier-curve माउस मोशन।
Sync
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") # माउस Bezier वक्र पर बटन की ओर चाप बनाता है
Async
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 विधि जैसी है वैसी काम करती है।
रन को दोबारा चलाने के लिए seed लॉग करें:
sf = InvisiblePlaywright()
with sf as browser:
print("seed =", sf.seed)
# ...
प्रतिलिपि योग्य फ़िंगरप्रिंट
with InvisiblePlaywright(seed=42) as browser:
... # हर रन में समान GPU, समान canvas हैश, समान audio context
प्रॉक्सी
proxy = {
"server": "socks5://gate.example.com:1080",
"username": "user",
"password": "pass",
}
with InvisiblePlaywright(proxy=proxy) as browser:
...
समर्थित स्कीम: socks5, socks4, http, https। DNS डिफ़ॉल्ट रूप से प्रॉक्सी के माध्यम से रूट होता है, कोई स्थानीय लीक नहीं।
टाइमज़ोन
ब्राउज़र टाइमज़ोन timezone= का अनुसरण करता है:
# डिफ़ॉल्ट: टाइमज़ोन egress IP से स्वतः प्राप्त होता है (प्रॉक्सी egress यदि प्रॉक्सी
# सेट है, अन्यथा होस्ट का अपना सार्वजनिक IP)
with InvisiblePlaywright(proxy=proxy) as browser:
...
# स्पष्ट IANA ज़ोन हमेशा जीतता है, किसी विशिष्ट ज़ोन को बाध्य करने का एकमात्र तरीका
with InvisiblePlaywright(proxy=proxy, timezone="America/New_York") as browser:
...
विशिष्ट फ़िंगरप्रिंट फ़ील्ड पिन करना
डिफ़ॉल्ट रूप से सब कुछ seed से आता है। विशिष्ट मानों को बाध्य करने के लिए जबकि बाकी 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:
...
पिन करने योग्य कुंजियों की पूरी सूची, पिनिंग Bayesian सैंपलर के साथ कैसे इंटरैक्ट करती है, और सामान्य पैटर्न docs/pinning.md में हैं।
CLI
स्थापित कमांड invisible-playwright है, हाइफ़न के साथ। python -m invisible_playwright समान रूप से काम करता है और PATH पर कुछ भी नहीं चाहिए।
invisible-playwright fetch # इंजन डाउनलोड करें यदि गायब है, हर कैश्ड
# इंजन को सील के विरुद्ध जाँचें, पथ प्रिंट करें
invisible-playwright version # wrapper, core और engine संस्करण, और इंजन कहाँ
# कैश्ड है
दस्तावेज़ीकरण, गाइड और तुलनाएँ
यह सब बेहतर पढ़ा जाता है, और खोजा जा सकता है, विकी में, एक सपाट सूची के बजाय चार खंडों में व्यवस्थित:
- दस्तावेज़ीकरण - इंस्टॉलेशन, सादे Playwright से दो-पंक्ति स्विच, प्रॉक्सी/टाइमज़ोन कॉन्फ़िगरेशन, विशिष्ट फ़ील्ड पिन करना, CLI।
- गाइड - डिटेक्शन वास्तव में कैसे काम करता है, सात समूहों में: ब्राउज़र पहचान, canvas/WebGL/fonts/ audio, नेटवर्क और WebRTC, ऑटोमेशन परत, AI एजेंट, डिटेक्टर स्वयं स्रोत से समझाए गए, और परीक्षण।
- तुलनाएँ - Camoufox, Patchright, nodriver और playwright-stealth के विरुद्ध, और सामान्य रूप से Chromium पर Firefox का मामला।
- एकीकरण - Scrapy, Crawlee, Robot Framework, CodeceptJS, टेस्ट रनर, Playwright MCP, और वे फ्रेमवर्क जिनमें यह फिट नहीं बैठता, नाम से।
यदि आप नहीं जानते कि कहाँ से शुरू करें: Playwright को अनडिटेक्टेड बनाने के तीन तरीके वह नक्शा है जिससे अधिकांश अन्य पृष्ठ जुड़ते हैं, एक साइट पर Playwright बॉट के रूप में पहचाना गया समस्या निवारण क्रम है, और navigator.webdriver वह संकेत नहीं है जो आप सोचते हैं इस क्षेत्र की सबसे प्रसिद्ध संपत्ति और अकेले इसे पैच करने से आपको लगभग कुछ क्यों नहीं मिलता, समझाता है।
- crawl4ai stealth और कस्टम ब्राउज़र इंजन - browser_type firefox स्वीकार करता है लेकिन कोई executable_path नहीं है; एडेप्टर सीम कहाँ है
- हेडलेस ब्राउज़र अलग फ़ॉन्ट क्यों रेंडर करते हैं - तीन कारण, प्रति-प्लेटफ़ॉर्म फ़ॉन्ट सेट, और फिक्स अधिक फ़ॉन्ट इंस्टॉल करना क्यों नहीं है
- Linux और macOS को असली Windows फ़ॉन्ट रिपोर्ट कैसे कराएँ - एक मैनिफेस्ट, तीन फ़ॉन्ट बैकएंड जो होस्ट से न पूछने के लिए राजी हैं, और चार सीम अभी भी खुले हैं
- फ़िंगरप्रिंटिंग सतह के रूप में measureText और TextMetrics - एक कॉल से दस-प्लस संख्याएँ जिन्हें कोई अनुमति संकेत नहीं चाहिए, और इसे ठीक करने में हमने जो दो गलतियाँ कीं
- privacy.resistFingerprinting वास्तव में क्या करता है - और यह प्रोजेक्ट इसे जानबूझकर false पर क्यों सेट करता है
- ChromeDriver cdc_ वेरिएबल - इसे नाम बदलना इसे हटाना क्यों नहीं है, और यह किस सामान्य सिद्धांत तक जाता है
- bot.sannysoft.com वास्तव में क्या जाँचता है - पंक्ति दर पंक्ति, और canvas-in-iframe परीक्षण जिसे कोई नहीं पढ़ता
- CreepJS कैसे तय करता है कि आप झूठ बोल रहे हैं - चार डिटेक्शन तकनीकें, और प्रोब को ब्लॉक करना स्वयं क्यों दर्ज किया जाता है
- Firefox प्राथमिकताएँ जो चुपचाप कुछ नहीं करतीं - पाँच कारण, उस एक से शुरू करते हुए जिसने हमें एक वास्तविक बग की कीमत चुकाई
- BotD वास्तव में क्या पता लगाता है - बीस डिटेक्टर, और उनमें से अधिकांश बॉट के बारे में बिल्कुल क्यों नहीं हैं
- FingerprintJS विज़िटर ID क्यों बदलता है - यह 41 घटकों का हैश है, इसलिए एक के हिलने से सब हिलता है
संबंधित प्रोजेक्ट
ओपन-सोर्स पड़ोसी, और प्रत्येक किस लिए है।
Firefox पक्ष पर
- Camoufox - एक एंटी-डिटेक्ट Firefox जो C++ स्तर पर भी पैच करता है। यह एक व्यापक सतह को कवर करता है और अपना स्वयं का फ़िंगरप्रिंट डेटाबेस भेजता है; यह प्रोजेक्ट Bayesian सैंपलर के साथ एक seed से फ़िंगरप्रिंट प्राप्त करता है, इसलिए एक संख्या एक मशीन को पुनरुत्पादित करती है। पूर्ण तुलना।
- LibreWolf - गोपनीयता डिफ़ॉल्ट के साथ एक Firefox फोर्क। यह लोगों के ब्राउज़ करने के लिए एक कॉन्फ़िगर बाइनरी भेजता है; यह स्रोत पैच प्लस एक ऑटोमेशन wrapper भेजता है।
- arkenfox/user.js - प्राथमिकताओं के माध्यम से Firefox सख्तीकरण। जहाँ एक प्राथमिकता पर्याप्त है, उसका उपयोग करें; यह प्रोजेक्ट C++ को पैच करता है जहाँ एक पर्याप्त नहीं है।
Chromium पक्ष पर
- Patchright - एक पैच्ड Playwright फोर्क, इसलिए stealth कार्य ब्राउज़र बाइनरी के बजाय ड्राइवर में उतरता है। पूर्ण तुलना।
- nodriver -
undetected-chromedriverका उत्तराधिकारी, Chrome को सीधे CDP पर चलाता है और WebDriver-स्वाद वाले संकेतों को हटाता है। पूर्ण तुलना। - playwright-stealth - पेज लोड होने से पहले लागू एक init-script पैच। इसका अपना अनुरक्षक इसे proof-of-concept कहता है; पूर्ण तुलना।
- puppeteer-extra-plugin-stealth - इस init-script वंश का मूल, अभी भी व्यापक रूप से अनुशंसित। इसके रिपॉजिटरी का अंतिम सार्थक कमिट मध्य-2024 का है; व्यवहार में इसका क्या अर्थ है।
- selenium-stealth - Selenium/CDP पर वही दृष्टिकोण। इसके रिपॉजिटरी का अंतिम कमिट दिसंबर 2021 का है; व्यवहार में इसका क्या अर्थ है।
- pyppeteer - Puppeteer का अनौपचारिक Python पोर्ट। इसका अपना README कहता है कि यह अनुरक्षित नहीं है और इसके बजाय
playwright-pythonकी ओर इशारा करता है; वह अनुशंसा वास्तव में किस बारे में है। - rebrowser-patches - Chromium पर
Runtime.enableCDP लीक को ठीक करता है, स्वतंत्र रूप से Patchright द्वारा उपयोग किए गए लगभग समान फिक्स पर अभिसरण करता है। पूर्ण तुलना। - fingerprint-suite - Bayesian नेटवर्क के साथ एक सुसंगत फ़िंगरप्रिंट उत्पन्न करता है, इस प्रोजेक्ट के अपने जनरेशन दृष्टिकोण के करीब, फिर इसे Chromium या Firefox पर Playwright या Puppeteer पेज में इंजेक्ट करता है। पूर्ण तुलना।
- playwright-with-fingerprints - एक दूरस्थ भुगतान सेवा से प्राप्त फ़िंगरप्रिंट मान इंजेक्ट करता है, केवल Windows, एक विशिष्ट Chromium बिल्ड से बंधा हुआ। पूर्ण तुलना।
इनमें से कौन फिट बैठता है यह उस परत पर निर्भर करता है जिस पर आपकी समस्या है, और क्या आपको Firefox या Chromium चाहिए। Playwright को अनडिटेक्टेड बनाने के तीन तरीके इस बात पर काम करता है कि प्रत्येक परत क्या पहुँच सकती है और क्या नहीं, जिसमें यह क्या लागत लगाता है शामिल है।
यदि आप टूल के बजाय इंजनों के बीच चुन रहे हैं, तो ध्यान दें कि AI एजेंट फ्रेमवर्क का एक बड़ा हिस्सा CDP पर Chromium चलाता है, जो आपके लिए प्रश्न तय करता है: AI ब्राउज़र एजेंट और stealth।
लाइसेंस
MIT - देखें LICENSE। पैच्ड Firefox बाइनरी MPL-2.0 (Firefox अपस्ट्रीम लाइसेंस) के तहत वितरित की जाती है। mozilla-central के विरुद्ध C++ पैच जो उस बाइनरी का उत्पादन करते हैं, feder-cr/firefox_antidetect_patch पर हैं।
अस्वीकरण
यह प्रोजेक्ट केवल शैक्षिक उद्देश्यों के लिए है। इसे जैसा है वैसा प्रदान किया गया है, बिना किसी वारंटी के। मैं इसके उपयोग के तरीके की कोई ज़िम्मेदारी नहीं लेता। इसे अपने जोखिम पर और अपने क्षेत्राधिकार के कानूनों के अनुपालन में उपयोग करें।
Federico Elia द्वारा निर्मित