Browser Use自测: 控制浏览器Agent,人机验证是一大难点
这是关于 Browser Use 应用的一次深度拆解,不谈虚的。
核心内容分四块:
- Browser Use 的便捷操作与功能局限
- 两大应用场景及面临的验证难题
- 实际部署和应用测试中踩到的坑
- 以及一些替代工具的横评
先说说这个工具能做什么。目前,Browser Use 支持用自然语言直接描述命令,AI 就能帮你自动执行。比如,用户只要说一句“打开5个Bing网页”,过往那些繁琐的代码操作就省了。
但老实说,现在这个工具还不算特别成熟,主要局限在一些简单任务上:在特定网站上传文件、同时打开多个标签页搜索不同内容、或者在 HuggingFace 上根据下载量排名找项目——这些活儿它能干,但再复杂一点就吃力了。
从应用场景来看,这类控制浏览器的 Agent,理论上应该主攻两大方向:自动化平台内容发布,以及网页数据自动化采集回本地。这两个场景,通常都需要登录进入特定平台,而不是像 HuggingFace 或 Google 那样可以直接搜搜就拿到内容。
问题就卡在这里了。很多网页都部署了机器人验证,比如 Google 的 reCAPTCHA——就是那些让你勾选自行车、红绿灯的图片验证。手动点都嫌烦,机器更难绕过去。另一个头疼的点是登录验证:比如豆包搜索数据需要扫码或者手机号登录,Twitter 和 Chromium 也需要输入登录信息。如果这些验证能绕过去,体验会好很多,但目前还没有现成的成熟方案。
下面进入实际部署和测试环节,直接走一遍流程。
01
为避免环境冲突,建议用 conda 专门创建一个环境。命令行先安装依赖。
直接把 GitHub 文件下载下来,里面有不少模板 py 文件,可以在这些基础上改。比如打开多个 tab 搜索、让 AI 查机票等,都有现成模板。
比较容易踩的一个坑是
Playwright
1234567ERROR [browser] Failed to initialize Playwright browser: BrowserType.launch: Executable doesn't exist at Library/Caches/ms-playwright/chromium-1148/chrome-mac/Chromium.app/Contents/MacOS/Chromium ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ playwright install ║ ║ ║ ╚════════════════════════════════════════════════════════════╝
注意,这里需要安装的是 Playwright 自带的 Chromium 浏览器,不是我们日常用的 Chrome。——这也是为什么需要登录注册的应用会比较麻烦。
Playwright 安装成功后,会显示下面这样的执行界面。
自定义 OpenAI API
在 env 环境变量里修改 OPENAI_BASE_URL 和 OPENAI_API_KEY 后,经测试发现系统检测不到。最稳妥的方法是把 api key 和 base url 直接写到 ChatOpenAI 里:
891011llm = ChatOpenAI(
model='gpt-4o',
base_url= os.getenv("OPENAI_BASE_URL"),
api_key=os.getenv("OPENAI_API_KEY "),
调用一次 GPT-4o 的成本大约是 0.1 元。
Windsurf
额度方面,我目前已经删掉了 VS Code,改用 Windsurf。这个 IDE 本身嵌入了 AI 对话工具,不需要额外下载插件。
写代码时,Windsurf 会自动提示可能会用到的代码片段。现在它也更新了 AI 搜索问答功能,@ 链接后,AI 能帮你整理网页内容。
通过 Cascade 功能告诉 Windsurf 要运行什么应用,AI 就能直接执行;也可以直接描述开发任务,AI 会帮你创建各个文件、生成代码。对上下文的理解能力比 Cursor 要强一些。
简单测试下来,对话框 AI 生成代码的效果,不如 Claude、ChatGPT 和豆包结合着用。我本人不是程序员,也没怎么敲过代码,这只是简单测试。对专业程序员来说,这个工具应该还是有帮助的——毕竟连淘宝上都有各种方案在卖付费链接了。
我测试时没有设置 Prompt,用的是默认方案。可以创建 .windsurfrules 文件设置 Prompt,让 AI 按你的需求来回答。后续打算再深入研究一下,总之 VS Code 是回不去了。
豆包
Claude
ChatGPT 则用来解释代码,以及在 Claude 额度用完时作备用。
02
内容平台分发
以 Substack 为例,需要输入网站登录信息:邮箱、密码。
1314151617 task_description = (
f"go to https://pamperherself.substack.com/publish/home, "
f"enter your email:{email},click sign in with password,enter your password:{password},if the email still needed then enter your email again:{email}"
f"create a new post, paste the following content: {user_content}, "
f"add the Thistle tag, and click publish"
但即便这样写死登录流程,仍然会触发“I'm not a robot”验证。
下图这些五颜六色的数字编号,其实就是 Browser Use 在起作用,它让 AI 知道每个元素的含义,以便进一步操作。
这就引出了 AI 控制浏览器类 Agent 的通用难题——
怎么绕过登录和机器人验证
豆包新闻搜索
中文内容建议直接通过豆包搜索、ima 搜索等 AI 搜索工具去查,比直接去谷歌、百度查找的效率更高。
但问题是,豆包搜索后会要求你登录才能查看具体搜索结果。
命令行返回的结果,也只是搜索界面已有的内容,没有按我们要求的黏度计搜索内容输出。
我曾尝试在遇到登录框时等待用户手动登录,但代码有问题。Browser Use 没有提供诸如 new page 的方法,框架库不支持,不知道该怎么 await。
await agent.browser.start()
page = await agent.browser.new_page("https://www.doubao.com/chat/search")
再说说国内的平台——微信、小红书、飞书等,屏蔽得很严,不会让你通过浏览器就能爬取大量信息。而优质内容往往都集中在这几个平台上。目前,微信公众号的数据只能通过 ima 搜索,抖音数据只能通过豆包搜索,而这些平台又都需要电话验证码。
百度搜索
百度 AI 搜索也需要注册才能用。直接搜索信息流的话,结果不太准。
直接通过百度搜到的,大部分是广告。
Epilogue
整体来看,控制浏览器的 Agent 目前还不太成熟,可以再等等,看后面有没有专做人机验证的完善方案。原本以为像 Browser Use 这类 AI 控制电脑的 Agent,会像影刀 RPA 一样通过屏幕来操作 Chrome 浏览器,结果发现还是得用 Playwright,以及它自带的 Chromium 浏览器。