观察 18
ARTICLE ARCHIVE

观察

browser-use 跑招聘资料整理:能自动打开网页,但不能替我判断边界

这篇用 browser-use 做一次招聘资料整理实验:安装、浏览器配置、任务提示词、结果落盘和合规边界都会写到,重点不是绕过限制。

2025-10-228 min41 篇档案中的第 18 篇

文章导语

2025 年 10 月,浏览器自动化类 Agent 已经足够好玩,也足够容易越界。我用 browser-use 做的不是批量抓取简历,而是让它帮我整理公开页面上的岗位信息、公司介绍和候选人公开作品。实验结束后,我更确定:自动化之前要先写清楚不能做什么。

正文内容

browser-use 跑招聘资料整理:能自动打开网页,但不能替我判断边界

browser-use 的吸引力很直接:把“打开网页、搜索、复制关键信息”交给 Agent。招聘同事看到它,第一反应往往是能不能自动整理候选人资料。我的建议是先把范围缩小,只处理公开、允许访问、无需登录绕过的页面,并且只做辅助摘要。

1. 安装环境

我用 Python 3.11 和一个独立虚拟环境:

bash
python3 -m venv .venv
source .venv/bin/activate
pip install -U browser-use playwright python-dotenv
playwright install chromium

.env 放模型配置。不要把公司账号 Cookie、招聘后台账号直接交给实验脚本。只要脚本能替你登录,它也能替你误操作。

2. 最小脚本

下面这个脚本只让 Agent 整理公开页面信息,并要求输出 Markdown:

python
import asyncio
from browser_use import Agent
from langchain_openai import ChatOpenAI

async def main():
    llm = ChatOpenAI(model='gpt-4.1-mini', temperature=0)
    task = '''请只访问公开网页,整理 HR AI 招聘自动化相关的常见场景、风险和原文链接。不要登录任何网站,不要下载文件,不要采集个人联系方式。输出 Markdown 表格。'''
    agent = Agent(task=task, llm=llm)
    result = await agent.run()
    print(result)

asyncio.run(main())

这个版本很克制,但足够观察工具的行为:它会不会乱点、会不会在页面间迷路、会不会把广告内容当成事实。

3. 提示词要写停止条件

我后来给任务补了三条停止条件:

text
如果页面要求登录,停止访问并记录原因。
如果页面禁止自动化访问,停止访问并记录链接。
最多访问 8 个页面,超过后直接汇总。

没有停止条件时,Agent 很容易为了完成任务继续搜索,最后输出看似丰富,来源却变得不可控。

4. 结果落盘

我不建议让它直接写进候选人系统。先落成本地文件,人工看过再决定是否进入正式记录:

python
from pathlib import Path
Path('outputs').mkdir(exist_ok=True)
Path('outputs/hr-ai-research.md').write_text(str(result), encoding='utf-8')

如果用于候选人研究,我会额外要求每条结论带链接,不允许出现“根据网上资料看”这种没有来源的句子。

5. 合规边界

招聘场景最容易踩线。我的底线是:不绕登录、不突破 robots.txt、不采集非必要个人信息、不把自动整理结果直接作为筛选依据。公开页面也不等于可以无限采集,尤其是包含个人身份、联系方式、作品评价的内容。另一个容易忽略的问题是数据本地化。脚本看到的页面内容会被送进模型服务,如果里面出现候选人信息,你就需要确认公司是否允许这种处理方式。不能确认时,就不要把真实候选人放进实验。

6. 复盘

browser-use 很适合做“研究助理”:它能帮你打开页面、整理公开材料、保留链接。它不适合做“招聘裁判”。真正决定候选人是否合适的证据,仍然要回到简历、面试、作品和人的判断。工具越能自动点击,我们越要先写下哪些按钮永远不能让它点。

要点提炼

browser-use 适合整理公开资料,不适合绕过平台限制

任务提示词要限制来源、字段和停止条件

招聘场景必须提前写明隐私、robots 和人工复核边界