网页抓取
web_fetch 工具从一个 URL 获取内容并以文本形式返回。适合在对话中阅读文档、检查 API 响应或抓取网页内容。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
url | string | 是 | 要抓取的 URL |
max_length | integer | 否 | 返回的最大字符数(默认 10,000) |
- 使用
reqwestHTTP 客户端,超时 30 秒 - 以纯文本返回响应体
- 支持 HTTP 与 HTTPS
- 遵循重定向(最多 10 跳,每跳都重新校验)
- 将输出截断到
max_length,以保持响应可控
抓取一个文档页面:
{ "url": "https://doc.rust-lang.org/std/vec/struct.Vec.html"}带上限地抓取 API 响应:
{ "url": "https://api.github.com/repos/pdg-global/rusty/releases/latest", "max_length": 5000}SSRF 防护
Section titled “SSRF 防护”web_fetch 工具包含针对服务器端请求伪造(SSRF)攻击的多层全面防护:
仅允许 http 与 https 协议。file://、ftp://、data:、gopher:// 等协议会被拒绝。
主机名黑名单
Section titled “主机名黑名单”拒绝 localhost、*.localhost、*.local 及其变体。
IP 黑名单
Section titled “IP 黑名单”阻止以下地址范围:
- 回环:
127.0.0.0/8、::1 - 私有:
10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、fc00::/7 - 链路本地:
169.254.0.0/16、fe80::/10 - CGNAT:
100.64.0.0/10 - TEST-NET 范围与多播地址
DNS 重绑定防护
Section titled “DNS 重绑定防护”工具会解析主机名、固定解析出的 IP,并拒绝那些 DNS 解析到私有或黑名单地址的请求。它为每次请求构建一个带 resolve() 覆盖的客户端,以防止 DNS 重绑定攻击。
每个重定向目标在被跟随前都会对照完整黑名单重新检查。这可防止攻击者在初次有效请求后重定向到内部服务。
- 无法抓取需要 JavaScript 渲染的页面(单页应用)
- 不执行 JavaScript;仅返回原始 HTML
- 部分网站会屏蔽自动化请求;这些会返回错误
- 不支持二进制内容(图片、PDF);工具会以文本返回原始字节,可能是乱码
- 大页面会被截断到
max_length个字符