browser-harness深度实测:从安装到自动化发文的完整记录

本文是browser-harness工具的深度实测记录,从安装配置、Chrome连接、代理设置到WordPress后台自动化发文,完整记录了每一步操作和遇到的问题。与前两篇概述性文章不同,本文聚焦于实际操作中的技术细节和解决方案。

一、安装过程

browser-harness通过uv tool install安装,要求Python 3.12。系统PATH中的Python是3.11.8,但uv可以自动下载Python 3.12.13并创建独立环境。安装命令:uv tool install –python 3.12 –upgrade –force browser-harness。安装后需要将~/.local/bin加入PATH,否则找不到browser-harness命令。

安装过程中遇到代理问题。v2rayN的本地混合监听端口10808同时支持SOCKS5和HTTP协议,但最初误用了不存在的10809端口导致下载失败。改用ALL_PROXY=socks5h://127.0.0.1:10808后成功下载Python 3.12和browser-harness包。

二、Chrome连接的三种方式

方式一:独立user-data-dir + 调试端口。用–remote-debugging-port=9222 –user-data-dir=独立目录启动Chrome,通过BU_CDP_URL=http://127.0.0.1:9222连接。优点是稳定可靠,缺点是没有登录态,需要重新登录。注意Chrome要求远程调试必须用非默认数据目录,默认目录会被拒绝。

方式二:autoConnect机制。Chrome 144+支持通过chrome://inspect/#remote-debugging启用远程调试,browser-harness可直接连接主Chrome,复用用户登录态。但实际测试中autoConnect有时不稳定,可能超时。

方式三:复制主Chrome的user-data-dir。理论上可以保留登录态,但Chrome 150的cookie值用DPAPI加密,无法直接读取注入。因此实际操作中选择了方式一配合手动登录。

三、WordPress后台登录

用browser-harness自动化登录WordPress后台的过程:首先通过js()获取登录表单各元素的坐标(getBoundingClientRect),然后用click_at_xy点击用户名输入框,用CDP的Input.insertText输入用户名,同样方式输入密码,最后点击登录按钮。整个过程完全模拟人类操作,3秒内完成登录。

CDP的Input.insertText是输入中文的最佳方案。相比dispatchKeyEvent模拟按键,insertText直接插入最终文本,绕过了输入法引擎的复杂事件序列。对于密码等ASCII字符也可以用insertText,兼容性很好。

四、文章撰写:手动UI操作

进入写文章页面后,操作流程如下:第一步,getBoundingClientRect获取标题框坐标,click_at_xy点击中心点,Input.insertText输入标题。第二步,dispatchKeyEvent发送Tab键,焦点从标题H1移动到正文P块。第三步,逐段输入正文,每段之间按两次Enter创建新段落块。

遇到的问题:Gutenberg编辑器的Markdown快捷方式(输入## 自动转H2)在使用insertText时不生效,因为insertText绕过了Gutenberg的输入事件监听。解决方案是用Gutenberg data API的createBlock+replaceBlock将段落块转换为标题块。虽然之前createBlock+insertBlock曾报TypeError,但replaceBlock在单块转换时工作正常。

五、文章发布

发布过程完全模拟人类操作:通过js()找到发布按钮坐标,click_at_xy点击,弹出发布确认面板,再次点击确认发布的发布按钮。文章成功发布后URL自动变更为post.php?post=ID&action=edit,通过Gutenberg data API的getCurrentPost()可确认状态为publish。

相比REST API方式(获取cookie+nonce后curl调用),手动UI操作方式更直观,不依赖API知识,但速度稍慢。两种方式各有适用场景:API方式适合批量操作和程序化发文,UI方式适合需要所见即所得的交互式操作。

六、DevTools面板能力

browser-harness通过持久CDP连接可以访问Chrome DevTools的全部面板能力。性能面板:Performance.getMetrics获取JSHeapUsedSize、Nodes、JSEventListeners等运行时指标。网络面板:Performance API获取Core Web Vitals包括TTFB、FCP、DOM加载时间。元素面板:DOM结构分析。堆快照:Runtime.getHeapUsage获取内存使用。

这些能力与Chrome DevTools MCP服务器的29个命名工具一一对应。MCP工具的优势在于把CDP原始能力封装成规范API(如list_network_requests、lighthouse_audit),调用更简洁。browser-harness的优势在于可以直接调用任意CDP方法,灵活性更高。

七、总结

browser-harness是一款成熟的浏览器自动化工具,核心优势包括:CDP直连提供最强底层控制力,支持复用Chrome登录态,支持SOCKS5代理,16个interaction-skills覆盖复杂场景,内置录制回放和云端浏览器。缺点是需要写heredoc Python脚本,交互不如Hermes内置浏览器顺滑,JS中嵌入中文有编码问题需用文件中转。

本文的发布过程本身就是browser-harness能力的最佳展示:从自动登录WordPress后台,到模拟人类操作Gutenberg编辑器撰写文章,到点击发布按钮完成发布,全程自动化。结合之前的REST API方式和Chrome DevTools MCP配置,我们已经构建了完整的浏览器自动化工具链,可以应对各种Web自动化场景。

原创文章,作者:移动端APP开发,如若转载,请注明出处:https://www.kkxmy.com/apph5/102417.html

(0)
移动端APP开发
上一篇 17小时前
下一篇 17小时前