让invisible_playwright接入Scrapy、Crawlee与AI Agent主流框架集成完整教程【免费下载链接】invisible_playwrightPlaywright that anti-bots cannot see, so no captchas: same API, anti-detect stealth headless Firefox, undetected fingerprint, bypass bot detection, Python web scraping and browser automation.项目地址: https://gitcode.com/gh_mirrors/in/invisible_playwright你是否也遇到过这样的困境爬虫项目用的是 Playwright 驱动 Firefox却总被反爬系统识别、弹出验证码invisible_playwright 是一款“反爬系统看不见的 Playwright”——它在 C 层打补丁的 Firefox 引擎上叠加了由种子生成的指纹配置API 与标准 Playwright 完全一致因此可以平滑接入 Scrapy、Crawlee、LangChain 等主流框架让 Python 爬虫和浏览器自动化任务绕开 bot 检测、告别验证码。本教程带你一步步把 invisible_playwright 接进这些框架。核心原理集成时只有“两个一半”动手之前先理解这个包由两半组成所有框架集成的成败都取决于这一点组成部分是什么怎么传给框架引擎C 源码级修补的 Firefox 二进制通过executable_path指向它画像由种子seed生成的firefox_user_prefs随启动选项一起传入只传引擎 → 浏览器比原版 Firefox 更难被指纹识别但没有独立身份引擎 画像都传 → 每次运行都是一台可复现的“虚拟机器”两个来源对浏览器身份“各说各话” → 不一致本身就是最强的检测信号 ❌。 一句话记住让同一个组件负责身份。要么都用 invisible_playwright要么就关掉框架自带的指纹生成器。接入 Scrapyscrapy-playwright 的两种路线Scrapy 本身不启动浏览器靠 scrapy-playwright 驱动浏览器。官方文档已经点名本项目与 patchright、camoufox 并列有两条接入路线路线一浏览器 Provider推荐能力最完整scrapy-playwright提供了PLAYWRIGHT_BROWSER_PROVIDER设置项。自定义一个 Provider 类用InvisiblePlaywright启动浏览器并交还给框架即可# myproject/providers.py class InvisibleBrowserProvider: async def launch_browser(self): from invisible_playwright.async_api import InvisiblePlaywright return await self.stack.enter_async_context( InvisiblePlaywright(**self.config.launch_options) )然后在settings.py中声明PLAYWRIGHT_BROWSER_PROVIDER myproject.providers.InvisibleBrowserProvider PLAYWRIGHT_BROWSER_TYPE firefox PLAYWRIGHT_LAUNCH_OPTIONS {seed: 1, headless: True} 注意有了自定义 Provider 后PLAYWRIGHT_LAUNCH_OPTIONS携带的是本包自己的参数seed、proxy、locale、timezone等而不是 Playwright 的启动参数。路线二仅改配置更省事但少一些能力如果不想写 ProviderPLAYWRIGHT_LAUNCH_OPTIONS会原样转发给browser_type.launch()from invisible_playwright import ensure_binary, get_default_stealth_prefs PLAYWRIGHT_BROWSER_TYPE firefox PLAYWRIGHT_LAUNCH_OPTIONS { executable_path: str(ensure_binary()), firefox_user_prefs: get_default_stealth_prefs(seed1, humanizeTrue), headless: True, }⚠️ 这条路线丢失三样东西拟人化鼠标轨迹、基于出口 IP 自动解析的时区/语言、以及引擎与配置的版本校验。能用路线一就优先路线一。蜘蛛代码完全不用改yield scrapy.Request(https://example.com/, meta{playwright: True})就这一处Scrapy 的其余部分代理中间件、重试、导出照旧工作。接入 Crawlee一个子类换掉整个引擎Crawlee for Python 通过插件Plugin驱动浏览器所以换引擎 写一个子类而不是 fork 整个项目pip install crawlee[playwright] invisible-playwright继承PlaywrightBrowserPlugin重写new_browser()在里面调用ensure_binary()拿到修补版 Firefox用get_default_stealth_prefs(seed...)生成画像然后交还给PlaywrightBrowserController。关键就一行不能省return PlaywrightBrowserController( browser, fingerprint_generatorNone, # ← 必须关掉 Crawlee 自己的指纹生成器 )为什么要关Crawlee 会自己生成一套指纹和请求头默认它“拥有”浏览器身份。而在这里身份已经由引擎编译决定两套独立答案对不上恰好就是检测器要找的信号。PlaywrightCrawler的请求处理、存储、链接入队全部照旧——只有启动方式变了。JavaScript 版 Crawlee更简单纯配置即可把launcher: firefox加上executablePath和firefoxUserPrefs传给launchContext再设useFingerprints: false。详见 crawlee-js.md。给 AI Agent 装上隐身浏览器AI Agent 是最新的重灾区它除了继承普通会话的所有指纹暴露面还多了一项行为节奏特征——思考-行动的间隔和指针瞬间跳转人类绝不会这样。LangChain两行代码完成交接LangChain 的PlayWrightBrowserToolkit.from_browser()接受一个你已经启动好的浏览器这正是最佳接入点from invisible_playwright.async_api import InvisiblePlaywright from langchain_community.agent_toolkits import PlayWrightBrowserToolkit async with InvisiblePlaywright(seed42) as browser: toolkit PlayWrightBrowserToolkit.from_browser(async_browserbrowser)InvisiblePlaywright交出的就是标准的playwright.async_api.Browser所以 Agent 的navigate、click、extract_text等所有工具自动继承真实浏览器指纹。 完整教程见 langchain-agent-invisible-playwright-browser.md。Playwright MCP两个参数指向修补引擎如果你已在使用微软的playwright-mcp给它加--browser firefox和--executable-path 路径路径可用invisible-playwright fetch命令获取即可让 Agent 跑在修补版引擎上。想要连种子画像也带上的完整方案可以用随 AIHawk 发布的 MCP 服务器uvx aihawk一行命令接入。 见 playwright-mcp.md 与 mcp-browser-server-stealth-firefox.md。⚡ 诚实提醒换浏览器解决的是“页面加载看起来像真人”解决不了 Agent 的动作节奏、出口 IP 信誉和限流纪律——这三件事要分别治理。其他框架速查表好消息所有官方 Playwright 绑定都暴露了executablePath和firefoxUserPrefs这两个启动选项所以几乎任何框架都能接入。框架接入方式文档Go / Java / C# / Ruby / RustPython 生成二进制路径 prefs.json各语言绑定直接传入other-languages.mdCodeceptJSfirefox配置块原样转发codeceptjs.mdRobot Framework BrowserNew Browser关键字两个命名参数robot-framework.mdCypress / WebdriverIO / TestCafe / Nightwatch启动选项转发test-runners.md⛔ 也有接不进的情况只支持 Chromium/CDP 的项目、只能连远程浏览器的框架、以及无条件叠加自己 stealth 层的框架叠加层会和引擎“争辩”结果比不叠更糟。完整清单见 integrations/README.md。三条通用避坑规则 不要设置 User-Agent。UA 来自引擎真实版本和种子画像单独覆盖它 让浏览器“自相矛盾”的最经典方式。不要叠加第二套 stealth 层。从 JS 注入补丁去改navigator会和一个已在 C 层答好题的引擎冲突——不一致比不完美更扎眼。一个身份一个种子而不是每次运行换一个。固定seed让失败可复现、可二分定位要换“机器”才换种子。验证集成是否成功集成完成后让框架访问任意指纹测试页读回两个值User-Agent应为 Firefox且版本与invisible-playwright version输出一致WebGL 渲染器应为消费级 GPU若显示 basic / software说明画像没生效或机器无 GPU。再顺手确认 WebRTC 行为是否正常修补版引擎下 ICE 候选应与代理出口一致写在最后invisible_playwright 的集成哲学很简洁API 不变只是浏览器“换了个身体”。Scrapy 改一个 Provider、Crawlee 改一个子类、LangChain 改两行交接代码——你的爬虫逻辑、测试用例和 Agent 编排几乎原封不动。先跑通上面“两个一半”的验证再谈规模固定种子、配好干净出口、给 Agent 加上人的节奏隐身浏览器才算真正开始工作。更多入口集成总览 · 快速上手 · 配置参考 · 种子与可复现身份【免费下载链接】invisible_playwrightPlaywright that anti-bots cannot see, so no captchas: same API, anti-detect stealth headless Firefox, undetected fingerprint, bypass bot detection, Python web scraping and browser automation.项目地址: https://gitcode.com/gh_mirrors/in/invisible_playwright创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考