如何对 AI Web 智能体进行身份认证

AI Web 智能体可以浏览网页、点击按钮、填写表单、提取数据。它们几乎能完成一个人类在网上能做的任何事情......唯独不能登录

身份认证并不只是一个小麻烦;它会直接阻止智能体完成那些对你真正有价值的任务。未经认证的智能体,无法查看你的邮箱、管理你的日历,也无法帮你处理退货。

下面介绍如何让你的智能体安全地完成账号认证,从而访问你实际在使用的各类服务。

当你登录某个网站时,浏览器会保存一组 Cookie,用来证明你已经通过认证。之后再次访问该网站时,浏览器会自动把这些 Cookie 发回服务器,这样服务器就能识别你,而无需再次登录。

Cookie 同步就是把你浏览器中的 Cookie 存储复制到智能体所使用的浏览器中。由于浏览器现在持有相同的 Cookie,因此各个网站都会把这个智能体视为"你本人"。

Browser Use 支持通过一条终端命令,将你真实的 Chrome 配置同步到云端。你也可以把 Cookie 导出为文件。

ini 复制代码
# 将你的 Chrome 配置同步到 Browser Use Cloud
# export BROWSER_USE_API_KEY=your_key && curl -fsSL https://browser-use.com/profile.sh | sh

# 或者直接使用你的 Chrome 配置(开源版)
browser = Browser.from_system_chrome()

# 或者导出 cookies 以便在任意环境使用(开源版)
await browser.export_storage_state('auth.json')
browser = Browser(storage_state='auth.json')

密码管理器

像 1Password 这样的密码管理器,可以让智能体从密码库中提取凭据,并自动填写登录表单。这里还包括已保存的 TOTP 验证码------也就是身份验证器应用里每 30 秒刷新一次的 6 位数字验证码。

智能体本身永远不会看到你的真实密码,这些值会以编程方式直接填入页面中。

在 Cloud 设置中连接你的 1Password 服务账号后,智能体就可以自动提取并填写凭据。在开源库中,则可以结合 1Password SDK 和自定义工具来实现这一点。

双因素认证(2FA)

很多网站在输入密码之后,还要求提供第二重验证。最常见的一种形式是 TOTP。这类验证码由一个共享密钥和当前时间共同计算得出,并且每 30 秒刷新一次。

只要你持有这个密钥,就可以通过程序自动生成这些验证码,而不必手动打开身份验证器应用。

Browser Use 可以自动生成 TOTP 验证码。你只需使用以 bu_2fa_code 结尾的占位符,系统就会在输入时实时生成新的验证码:

bash 复制代码
agent = Agent(
    task='Go to example.com/login, enter x_user, x_pass, and x_bu_2fa_code',
    sensitive_data={
        'x_user': 'myusername',
        'x_pass': 'mypassword',
        'x_bu_2fa_code': 'JBSWY3DPEHPK3PXP',  # TOTP secret key
    },
)

智能体不会看到你的真实凭据,只会看到占位符名称。真实值会被直接注入到页面中。

在哪里找到你的 TOTP 密钥:

在开启 2FA 时,通常会有"手动输入"或"无法扫描二维码"之类的选项。在 1Password 中,也可以编辑对应条目并显示一次性密码密钥。

邮箱与短信验证

有些网站不会使用 TOTP,而是通过邮箱或短信发送验证码。你可以把这些验证码发送到一个由智能体管理的收件箱中,这样它就能自己完成验证流程。

AgentMail 是一个独立 API,用于创建由智能体管理的邮箱。你可以先创建一个收件箱,在注册或验证时使用这个邮箱地址,然后轮询检查是否收到验证码邮件。

将 AgentMail 与自定义工具配合使用,就能为智能体验证流程创建邮箱:

python 复制代码
inbox = await email_client.inboxes.create()

@tools.registry.action('Get verification code from email')
async def get_verification_code():
    emails = await email_client.inboxes.messages.list(inbox_id=inbox.inbox_id)
    if emails.messages:
        return ActionResult(extracted_content=emails.messages[0].text)
    return ActionResult(error='No emails yet')

更大的背景

眼下我们正处在一个有些尴尬的阶段。智能体已经变得异常强大,但它们所运行的基础设施,原本是为人类设计的。当前还没有一种被广泛采用的、面向自治智能体的原生认证框架,因此本指南中的这些方法,本质上仍然是目前最可行的"权宜之计"。

上面提到的这些方式------Cookie 同步、密码管理器、TOTP 生成,以及持久化托管浏览器------已经能让智能体在今天访问你的账号。

而当真正面向智能体的原生认证体系到来时,Browser Use 也将会是其中的开拓者。

相关推荐
Kayshen2 小时前
我在设计工具里实现了一个 Agent Team:多智能体协作生成 UI 的实战经验
前端·aigc·agent
数据智能老司机2 小时前
AI 智能体与应用——使用 LangGraph 构建基于工具的智能体
llm·agent
数据智能老司机3 小时前
AI 智能体与应用——问题转换
llm·agent
数据智能老司机3 小时前
AI 智能体与应用——使用 LangGraph 构建智能体工作流
llm·agent
数据智能老司机3 小时前
AI 智能体与应用——构建研究摘要引擎
llm·agent
数据智能老司机3 小时前
AI 智能体与应用——使用 LangChain 和 LangSmith 构建 Q&A 聊天机器人
llm·agent
数据智能老司机5 小时前
AI 智能体与应用——使用 LangChain 进行文本摘要
llm·agent
甲维斯7 小时前
OpenClaw最强大脑GPT5.4 “脚把脚”配置!
agent
JohnCHsu7 小时前
性能干翻235B,单卡私有化部署OpenClaw
ai·agent·llama.cpp·openclaw