从零开始:用 Notte 框架 15 分钟上线可信赖的网络自动化代理
“我想让 AI 帮我批量整理招聘信息,但总是卡在登录验证码,怎么办?”
“公司想把数百个供应商站点数据结构化,用传统爬虫太脆弱,用纯 AI 又太贵,有折中方案吗?”
如果你也有类似的困惑,这篇文章就是答案。
目录
-
Notte 是什么?为什么值得一学 -
5 分钟安装与环境准备 -
本地跑通第一个任务:让 AI 去 Google 图片“云吸猫” -
进阶:用托管浏览器彻底解决登录、验证码、代理难题 -
核心功能拆解与示例 -
结构化输出:把网页直接变成 Python 对象 -
保险库:企业级账号密码托管 -
数字身份:自动生成邮箱、手机号和 2FA -
隐形浏览器:自动过验证码、走代理 -
混合工作流:脚本 + AI,省钱又稳
-
-
真实场景演练 -
抓取 Hacker News 热门文章 -
自动上传文件并下载回执 -
批量注册并提交表单
-
-
性能对比:为什么 Notte 比同类工具快一倍 -
常见问题解答(FAQ) -
小结与下一步阅读清单
1. Notte 是什么?为什么值得一学
一句话概括:
Notte 是一个把“传统自动化脚本”与“大模型推理”缝合在一起的全栈框架,目标是让你用最少代码、最低成本、最高可靠性完成任何需要“在浏览器里点来点去”的任务。
它分成两部分:
组件 | 开源版 | 托管版(推荐) | 适用场景 |
---|---|---|---|
浏览器会话 | 本地 Playwright | 云端 + 自动验证码 + 代理 | 不想自己管浏览器 |
代理(Agent) | Python SDK 直接调用 LLM | 同上 | 需要高级身份、文件、Cookie 管理 |
核心卖点:
-
便宜:只在真正需要 AI 推理时才调用大模型,其余用脚本,官方实测节省 50% 以上 token 费用。 -
稳:托管浏览器内置验证码打码、住宅代理、反检测。 -
快:同样任务平均耗时 47 秒,对比 Browser-Use 113 秒。 -
易:本地写完脚本,把 notte
换成cli
就能上云,一行不改。
2. 5 分钟安装与环境准备
系统要求
-
Python 3.11+ -
本地或云端均可
步骤
# 1) 安装核心包
pip install notte
# 2) 安装浏览器内核(只用托管版可跳过)
patchright install --with-deps chromium
# 3) 准备大模型 API Key
# 任何兼容 OpenAI 格式的接口都行,写到 .env 即可
echo "OPENAI_API_KEY=sk-xxx" >> .env
验证
# test_notte.py
import notte
from dotenv import load_dotenv
load_dotenv()
with notte.Session(headless=False) as session:
agent = notte.Agent(session=session,
reasoning_model='gemini/gemini-2.5-flash',
max_steps=5)
agent.run("打开 https://example.com 并截图")
运行后若能弹出浏览器并停留 5 秒,说明环境就绪。
3. 本地跑通第一个任务:让 AI 去 Google 图片“云吸猫”
import notte
from dotenv import load_dotenv
load_dotenv()
with notte.Session(headless=False) as session:
agent = notte.Agent(session=session,
reasoning_model='gemini/gemini-2.5-flash',
max_steps=30)
response = agent.run("去 Google 图片搜索 cat memes,向下滚动 3 屏")
print(response.answer)
发生了什么?
-
浏览器启动。 -
Agent 自动在地址栏输入 https://images.google.com
。 -
找到搜索框,输入 cat memes
,回车。 -
向下滚动 3 次,等待图片加载。 -
任务完成,返回一句自然语言总结。
4. 进阶:用托管浏览器彻底解决登录、验证码、代理难题
如果你想把任务搬到云端,免去本地浏览器、代理、打码的麻烦,只需三步:
-
去 Notte Console 注册,拿到 API Key。 -
把本地代码里的 import notte
换成from notte_sdk import NotteClient
。 -
所有对象加前缀 cli.
。
示例:
from notte_sdk import NotteClient
cli = NotteClient(api_key="nt-xxx")
with cli.Session(headless=False) as session:
agent = cli.Agent(session=session,
reasoning_model='gemini/gemini-2.5-flash',
max_steps=30)
response = agent.run("doom scroll cat memes on google images")
本地与云端代码对比表:
维度 | 本地开源版 | 托管版 |
---|---|---|
浏览器 | 自己维护 | 云端自动 |
验证码 | 手动 | 自动打码 |
代理 | 自己配 | 内置住宅轮换 |
并发 | 单机 | 可横向扩容 |
费用 | 免费 | 按量计费 |
5. 核心功能拆解与示例
5.1 结构化输出:把网页直接变成 Python 对象
痛点:传统爬虫用 XPath/CSS 选择器,网页一改就挂。
Notte 做法:告诉 Agent 你想要的字段,它自动推理并填充。
from notte_sdk import NotteClient
from pydantic import BaseModel
from typing import List
class HackerNewsPost(BaseModel):
title: str
url: str
points: int
author: str
comments_count: int
class TopPosts(BaseModel):
posts: List[HackerNewsPost]
cli = NotteClient()
with cli.Session(headless=False, browser_type="firefox") as session:
agent = cli.Agent(session=session,
reasoning_model='gemini/gemini-2.5-flash',
max_steps=15)
response = agent.run(
task="去 Hacker News 首页,抓前 5 篇文章的标题、链接、分数、作者、评论数",
response_format=TopPosts
)
print(response.answer.posts[0])
输出示例:
HackerNewsPost(
title='Show HN: I built a pocket-sized E-ink terminal',
url='https://github.com/foo/bar',
points=512,
author='baz',
comments_count=97
)
5.2 保险库:企业级账号密码托管
场景:需要自动登录后台,但明文写密码不安全。
解决:把凭据放进 Vault,Agent 需要时自动读取。
from notte_sdk import NotteClient
cli = NotteClient()
with cli.Vault() as vault, cli.Session(headless=False) as session:
vault.add_credentials(
url="https://x.com",
username="you@corp.com",
password="SuperSecret123"
)
agent = cli.Agent(session=session, vault=vault, max_steps=10)
agent.run("打开 Twitter 并登录,进入私信列表")
优势:
-
密码加密存储,不落盘。 -
同域名复用,无需反复传参。 -
支持 TOTP、SSO、MFA 令牌。
5.3 数字身份:自动生成邮箱、手机号和 2FA
场景:需要批量注册试用账号。
解决:Persona 对象替你搞定邮箱、手机号、验证码。
from notte_sdk import NotteClient
cli = NotteClient()
with cli.Persona(create_phone_number=True) as persona:
with cli.Session(browser_type="firefox", headless=False) as session:
agent = cli.Agent(session=session,
persona=persona,
max_steps=15)
agent.run("打开 Google 表单,用 persona 的信息 RSVP 参加发布会")
执行流程:
-
Persona 随机生成姓名、邮箱(可真实收信)。 -
如需手机验证,托管平台自动接收短信并回填验证码。 -
全程无痕,用完即弃。
5.4 隐形浏览器:自动过验证码、走代理
内置代理 + 打码
with cli.Session(
solve_captchas=True,
proxies=True, # 自动轮换美国住宅 IP
browser_type="firefox",
headless=False
) as session:
agent = cli.Agent(session=session, max_steps=5)
agent.run("访问 reCAPTCHA 示例页并尝试通过验证")
自定义代理
from notte_sdk.types import ExternalProxy
proxy = ExternalProxy(
server="http://proxy.corp.com:8080",
username="corpUser",
password="corpPass"
)
with cli.Session(proxies=[proxy]) as session:
agent = cli.Agent(session=session, max_steps=5)
agent.run("通过公司代理访问内网系统")
5.5 混合工作流:脚本 + AI,省钱又稳
思路:把确定性高的步骤写成脚本,需要推理时才调用 Agent。
from notte_sdk import NotteClient
import time
cli = NotteClient()
with cli.Session(headless=False, perception_type="fast") as page:
# 脚本:直接跳到商品页
page.execute(type="goto",
value="https://www.quince.com/women/organic-stretch-cotton-chino-short")
page.observe()
# AI:选颜色和尺码
agent = cli.Agent(session=page)
agent.run("选象牙白,尺码 6")
# 脚本:加购、结账
page.execute(type="click", selector='button[name="ADD TO CART"]')
page.execute(type="click", selector='button[name="CHECKOUT"]')
time.sleep(5)
收益:
-
确定步骤不消耗 token,成本 ↓ -
AI 只处理最复杂的交互,成功率 ↑
6. 真实场景演练
6.1 抓取 Hacker News 热门文章
需求:每天把前 30 条帖子写进公司知识库。
代码:见 5.1 结构化输出示例,配合 Linux crontab 即可定时运行。
6.2 自动上传文件并下载回执
需求:报税系统要求上传 PDF 报表,再下载回执存档。
from notte_sdk import NotteClient
cli = NotteClient()
storage = cli.FileStorage()
storage.upload("/tmp/report.pdf")
with cli.Session(storage=storage) as session:
agent = cli.Agent(session=session, max_steps=10)
agent.run("登录报税网站,上传 report.pdf,下载回执到 storage")
receipts = storage.list(type="downloads")
storage.download(file_name=receipts[0], local_dir="./archive")
6.3 批量注册并提交表单
需求:学术会议需要 100 个测试账号投票。
做法:循环创建 Persona,每个账号自动提交一次表单即可。
7. 性能对比:为什么 Notte 比同类工具快一倍
官方在 100 个公开任务上做了横向评测(数据见 README):
工具 | 自报成功率 | 第三方评估 | 平均耗时 | 任务可靠性 |
---|---|---|---|---|
Notte | 86.2 % | 79.0 % | 47 秒 | 96.6 % |
Browser-Use | 77.3 % | 60.2 % | 113 秒 | 83.3 % |
Convergence | 38.4 % | 31.4 % | 83 秒 | 50 % |
快的原因:
-
混合工作流:脚本先跑通 80% 流程,AI 只补缺口。 -
感知模型分层:快感知 + 慢推理,减少无意义等待。 -
托管基础设施:浏览器常驻、热启动,省掉冷启动 10~15 秒。
8. 常见问题解答(FAQ)
Q1:我不想用云端,可以完全本地跑吗?
可以。开源版只需本地浏览器 + LLM API Key。但验证码、代理需自己解决。
Q2:支持哪些大模型?
所有兼容 OpenAI 格式的接口,如 OpenAI、Gemini、Claude、本地 vLLM 等。
Q3:如何并行跑多个任务?
托管版支持并发会话,按量计费;本地版受限于机器资源,可自行用多进程。
Q4:Vault 里的密码安全吗?
所有凭据 AES-256 加密,密钥存于硬件安全模块,连平台方也无法解密。
Q5:遇到新版 reCAPTCHA v3 怎么办?
托管浏览器持续更新反检测策略,成功率 95% 以上;v3 无用户交互,Agent 会自动等待得分返回。
9. 小结与下一步阅读清单
今天,我们完成了:
-
5 分钟安装并本地跑通“云吸猫”。 -
了解如何无缝切换到托管浏览器,解锁验证码、代理、身份等高级功能。 -
通过结构化输出、保险库、数字身份、隐形浏览器、混合工作流五大模块,覆盖 90% 网络自动化需求。 -
用真实代码演示抓取 HN、上传下载、批量注册等场景。
下一步:
-
阅读官方文档:https://docs.notte.cc -
尝试把公司现有 Playwright 脚本改写为混合工作流。 -
用 Vault + Persona 做一个小型“自动注册-登录-采数据”的 PoC。
祝你玩得开心,也欢迎把你的案例分享到社区,让自动化更简单、更可靠。