
人工智能AI Agent浏览器控制GUI 自动化MCP 服务【免费下载链接】invisible_playwright_mcpPlaywright MCP server undetected by anti-bots and captchas: AI agent browses the web on anti-detect stealth Firefox, Python, undetected browser automation, scraping, computer use.项目地址https://gitcode.com/GitHub_Trending/jo/invisible_playwright_mcp点击查看免费下载每一个列表类页面都有搜索框和一组筛选器让 AI Agent 驱动它们而不是逐页走完整个列表几乎总是更优的选择。本文以 invisible_playwright_mcp 的浏览器工具集为主线讲解何时应把筛选状态直接写进 URL、何时必须点击页面控件、如何用页面自己报出的结果数做校验并给出可直接复制进任务提示的排错清单与可验证的源码依据。读完你可以把一次四百页的遍历压缩成四页并让筛选是否真的生效这类悄悄发生的错误在输出里直接可见。为什么走完四百页是错误答案成本账要先算清楚。假设一个分类有四页结果一个能用的筛选器把它砍到四页那成本就是原来的百分之一。关键在于这笔账的数字几乎全部落在页面加载上而不是落在浏览器动作上。invisible_playwright_mcp 在 docs/how-long-an-ai-agent-takes-per-step.md 中对此做过实测中位耗时大致如下动作中位耗时说明browser_open4.82 s浏览器启动整个会话只付一次browser_navigate0.08 s打开/跳转一个页面browser_read_text0.01 s读取可见文本几乎免费browser_snapshot0.02 s可交互元素清单几乎免费browser_click0.99 s按选择器点击browser_type约 1 s 每字符 270 ms文本输入唯一真正昂贵的动作所以在只读的列表任务里浏览器端的总耗时是秒级真正的时间大头是页面加载那是网站的数不是 Agent 的和模型思考。一个筛选器把四百页砍成四页省掉的是 396 次导航与随之而来的 396 轮页面加载——这几乎是整张账单里唯一值得省的部分。但这件事有一个陷阱筛选器可以被应用、看起来像被应用、实际上并没有被应用而结果页面上没有任何地方会告诉你这一点。剩下的整篇文章都在对付这个陷阱。优先走 URL当站点把筛选状态放进查询串大多数列表站点都把筛选状态编码在查询串里。如果这个站点是这样那么整个交互就塌缩成一次导航/search?qwidgetcategorytoolssortprice_ascpage2这比点击控件好在四个地方一次调用代替六次点击点筛选器、等列表刷新、再点下一个、再等……可以精确复现——同一串 URL 永远得到同一个筛选结果可以作为单一字段记录而不是把点了哪三个框写成一长串描述消除了控件是否生效的一切疑问——URL 就是状态的声明。找出这个模式的方法是手动做一遍。在你自己的浏览器里把筛选器都点上然后看地址栏把 URL 形状交给 Agent。你花两分钟省掉的是 Agent 每次运行时的一打调用而这条 URL 从此就是你要记录的东西正如 docs/what-a-run-should-log.md 中所说的运行日志里要有最终 URL重定向之后的那一个而不是你请求的那个。这一点在本项目里可以直接验证browser_navigate的实现src/invisible_playwright_mcp/mcp/actions.py返回的正是navigated to {response.url} (HTTP {status})——也就是重定向链真正结束的位置和 HTTP 状态码而不是你输入的那个地址。配套测试 tests/mcp_server/test_navigate_reports_the_status.py 专门盯着这件事跟随短链、撞上登录墙、被重定向到地区域名Agent 都会被告知它其实没到那儿。当然不是每个站点都这么做。单页应用SPA常常把筛选状态放在内存里这种情况下控件是唯一的路。必须点击控件时的三种故障模式当站点不把状态放进 URL你只能让 Agent 点击控件时按发生频率从高到低有三种会出错的方式一、筛选器需要应用这一步。有些面板是边点边筛有些则是收集你的选择、等一个按钮才生效。如果 Agent 在一个第二种面板上勾了三个框就立刻读列表它读到的是未筛选的列表——而且这个列表看起来完全正常。二、筛选会以你没想到的方式叠加。上一次运行的筛选选择会留在会话里于是今天的筛选是叠在上周的筛选之上的。先清除再筛比假设从干净状态开始更可靠而全新的 profile 才是确定无疑的版本。在本项目中干净身份是显式可配置的browser_open接受seed、proxy、profile参数STEALTHFOX_SEED保证同一种子得到同一个浏览器指纹STEALTHFOX_PROFILE_DIR则让登录与 cookie 跨运行存活——细节见 docs/mcp-server.md。当需要彻底隔离的临时身份时会话里还有一个与main完全不共享任何状态的support浏览器可用。三、列表是异步更新的。你点击之后旧结果会在屏幕上停留一小会儿Agent 若在这时读取拿到的是筛选前的集合。正确做法是等待一个状态而不是等待一个时长——等结果计数发生变化而不是等两秒。这正是 docs/when-the-page-changes-under-the-agent.md 的核心结论Agent 的看—想—做循环里想需要数秒页面不会等你所以要在行动前重新读一次页面并针对新鲜读数行动。好在browser_snapshot只要约 0.02 秒多看一眼在浏览器端几乎不花钱真正花钱的是把大段内容塞进模型上下文。需要精确控制何时算加载完成时browser_navigate的wait_until参数提供了三档默认domcontentloaded标记解析完即返回、load等图片与样式表、networkidle适合加载后才取数据的 SPA。确认筛选生效而不是确认点击能同时防住上述三种故障的那条指令只有一句在读取任何结果之前先把页面自己声称已应用的内容读回来。大多数列表页都会展示它作为标签chips、作为一行摘要或者作为一句42 results for widget in Tools。让 Agent 把这串文本连同数据一起记录下来。于是看似筛选过、实则没有的结果集会在输出里直接暴露出来而不是在三步之后才被发现同时这串记录下来的文本也是让这次运行可复现的关键。结果计数是最值得捕获的单一信息因为它一石二鸟地充当了 docs/validating-an-agents-output.md 中的第一项校验用页面告诉你的数字去对照你的行数。如果页面说 42而你写出了 400 行那筛选器从没生效过——这个结论一行代码都不用写。这是真实发生过的工作流。仓库里的 articles/extracting-a-category-to-csv/README.md 记录了一次完整运行分类页头声明32 resultsAgent 在两页上分别提取出 20 行和 12 行20 12 32与页面自报数完全吻合而那次任务提示里明确写着……把所有页的书都提取出来告诉我你拿到了多少本并对照页面自己报告的数字检查一遍。这行提示不是装饰。一个静默匹配不到任何元素的选择器会产生一份看起来已经完成的短文件而页面自报的计数是唯一的见证者。同样的校验逻辑也适用于筛选后的集合把结果计数写进任务提示让它成为 Agent 自己的算术题数行数、对照页面总数、报告留空数比事后人工抽查便宜得多。搜索框自身的两个问题一、自动补全会劫持回车键。往搜索框里打字通常会弹出建议列表第一次按 Enter 选中的是某条建议而不是提交你的查询——于是你搜索的是与你要求相邻的东西。正确序列是先按Escape关掉建议列表再按Enter。键盘操作的具体路由见 docs/keyboard-instead-of-the-mouse.md其中browser_press_key实测中位耗时仅 0.14 秒远低于一次点击。这里还有一个工具实现层面的细节值得注意browser_type见 docs/mcp-server.md 的工具表是一次性设置字段值而不是逐键敲入因此逐键触发的自动补全处理器不会被触发——如果想彻底绕开建议列表劫持回车的问题用browser_type填完搜索词再按Enter提交是一条更稳的路反过来如果你确实需要依赖建议列表的交互才需要点击字段 逐键输入。二、查询会被解释。站点会对查询做词干化、拼写纠正、丢弃操作符、模糊匹配于是返回的结果对应的是一个不是你敲进去的查询。如果页面展示了它实际搜索了什么——很多站点会展示——那就把它也记录下来showing results for X 与 searched for Y 并排出现在文件里这个差异是你想要的。原文对此的概括值得原样保留记录页面说它搜了什么与你让它搜了什么对照。不是筛选的筛选有两样东西长得像筛选器行为却完全不同排序sort改变的是顺序不是集合。把排序当成筛选器的 Agent会把同样的四百个条目按新顺序再走一遍。视图切换view switch网格视图对列表视图。条目相同、标记不同而针对其中一个布局规划的选择器在另一个布局上解析不出来。两者一旦被点名就不再是问题不被点名时它们都会产出一场令人困惑的运行。结合源码看视图切换会破坏选择器这一点有据可依browser_snapshot给出的选择器是针对当前 DOM 状态构建的构建逻辑在 src/invisible_playwright_mcp/mcp/actions.py 的SNAPSHOT_JS中页面结构一变旧选择器就可能落空。而选择器失败是干净的失败——它要么找到对的元素要么什么都找不到这个可被 Agent 看见并回应的错误正是 docs/when-the-page-changes-under-the-agent.md 强调要优先使用选择器而非坐标的原因。所以在切换视图之后正确做法是取一次新的 snapshot用新选择器继续。常见问题速答如何让 Agent 使用站点的筛选器站点把筛选状态放进查询串时优先用 URL一次导航代替六次点击且可精确复现。否则就点击然后确认页面声称已应用的内容。为什么筛选器没有生效要么是面板需要点应用按钮要么是列表在 Agent 读取之后才更新要么是上一次的选择仍然处于激活状态。如何知道结果真的被筛选过了让 Agent 在记录任何数据之前先把已应用的筛选和结果计数读回来并把这个计数和你得到的行数对照。为什么搜索返回了错误的东西自动补全劫持了回车或者站点重写了你的查询。先按Escape关掉建议列表再记录页面说它搜了什么。排序是筛选器吗不是。把它当筛选器用是意外走完整个列表的常见原因。筛选后该怎么处理筛选出来的集合见延伸阅读中 docs/reading-a-table-with-an-ai-agent.md 与 docs/run-one-task-across-a-list-of-sites.md。延伸阅读docs/run-one-task-across-a-list-of-sites.md同一个任务跑遍一组站点时每个站点的筛选器都不一样确认筛选生效这一步正是让结果可比较的关键它也讲清了谁负责写文件、单站点失败预算怎么写。docs/reading-a-table-with-an-ai-agent.md拿到筛选后的集合之后如何正确地读取一张表结构才是内容要用browser_read_html而不是文本读。docs/validating-an-agents-output.md五种一分钟内做完的输出校验其中用页面自报总数对照行数就是本页结果计数校验的完整版。docs/what-a-run-should-log.md八字段运行日志其中最终 URL字段让一条 URL 形态的运行可以被完整复现。docs/when-the-page-changes-under-the-agent.md等待状态而非时长、行动前重新读取的完整论证。docs/keyboard-instead-of-the-mouse.mdEscape、Enter、Tab 等键盘操作在哪些控件上更快、更可靠。docs/mcp-server.mdbrowser_navigate、browser_click、browser_type、browser_press_key、browser_evaluate等全部工具的参数、默认值与返回内容的权威说明以及seed、profile、proxy三个身份维度的配置方式。源码实现src/invisible_playwright_mcp/mcp/actions.py导航回报真实 URL 与状态码、文本读取的截断标记、脚本交互的拒绝逻辑配套测试 tests/mcp_server/test_navigate_reports_the_status.py。完整运行实例articles/extracting-a-category-to-csv/README.md 与结果文件 articles/extracting-a-category-to-csv/mystery-books.csv。事实与来源本页没有引用任何外部数据它讲的是列表类界面的行为方式以及如何围绕它们写 Agent 任务。文中引用的单步成本测量见 docs/how-long-an-ai-agent-takes-per-step.md2026-09-17 通过本项目 MCP server 对127.0.0.1页面实测未连接任何模型所涉及的工具行为、wait_until三档、seed/profile语义均可在 docs/mcp-server.md 与源码 src/invisible_playwright_mcp/mcp/actions.py 中查证。文中不指名任何具体网站。先手动做一遍读一读地址栏。如果筛选都在 URL 里本页的大部分内容就与你无关了——而这正是它能给出的最好结果。赞分享人工智能AI Agent浏览器控制GUI 自动化MCP 服务【免费下载链接】invisible_playwright_mcpPlaywright MCP server undetected by anti-bots and captchas: AI agent browses the web on anti-detect stealth Firefox, Python, undetected browser automation, scraping, computer use.项目地址https://gitcode.com/GitHub_Trending/jo/invisible_playwright_mcp点击查看免费下载相关推荐AI Agent 被网站拦截的诊断指南四层拦截模型与 invisible_playwright_mcp 的排查实战AI Agent 被网站拦截的诊断指南四层拦截模型与 invisible_playwright_mcp 的排查实战 AI 代理在浏览网页时会继承浏览器被检测的人工智能AI Agent浏览器控制GUI 自动化MCP 服务让 AI Agent 登录网站invisible_playwright_mcp 的三种路径与持久化配置实战让 AI Agent 登录网站invisible_playwright_mcp 的三种路径与持久化配置实战 AI Agent 要访问需要登录的网站时有且仅有人工智能AI Agent浏览器控制GUI 自动化MCP 服务Wand-Enhancer 3步解锁专业版免费版2小时限制本地破局附手机远程面板Wand Enhancer 3步解锁专业版免费版2小时限制本地破局附手机远程面板 Wand原 WeMod免费版每天只给 2 小时修改器时间专业版订阅每桌面应用前端上一篇抖音批量下载神器终极指南5分钟搞定无水印视频批量保存完整教程下一篇抖音批量下载神器终极指南5分钟解决内容收藏所有痛点创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考