# 页面标题 站点名 · 2026-09-03 正文……(保留链接,不含图片;超过 256 KiB 的页面只读前 256 KiB,超过 48000 字符的正文会截断,截断处有说明)
失败时工具以固定文案「脚本运行失败(E_…)」结束,短码含义与该怎么办:
| 短码 | 含义 | 怎么办 |
|---|---|---|
| E_BAD_URL | 网址不合规(不是 https、带端口或凭据、不是域名、超长) | 按上面的规则改正后再试一次 |
| E_UNFETCHABLE | 解析不到、地址不允许读取、连不上、证书不对、对方回了非 2xx、跳转不合规 | 不要重试同一网址;告诉访客读不到 |
| E_TIMEOUT | 对方太慢(连接 5 s / 读取 8 s / 总计 20 s) | 可以晚些再试一次 |
| E_NOT_HTML | 不是网页(PDF / 图片 / JSON / 二进制) | 告诉访客这类内容读不了 |
| E_TOO_LARGE | 对方声明的大小远超上界 | 告诉访客页面太大 |
| E_NO_CONTENT | 抽不出正文(纯 JavaScript 渲染、登录页、空页) | 告诉访客页面没有可读的正文 |
E_UNFETCHABLE 刻意不区分「地址不允许」与「连不上」。
脚本只用标准库做网络(socket / ssl / http.client),抽取用 trafilatura 的 bare_extraction(不用它的下载器)。 SSRF 防线在脚本里:网址收窄 → 解析后逐地址校验(任一地址落在回环 / 私网 / link-local / CGNAT / 多播 / 保留段即拒)→ 钉住校验过的地址去连、证书按主机名校验 → 每次重定向重走一遍 → 按解压后字节计上界。