Cathy 新闻抓取扩展 — 安装指南
用你的浏览器抓 Cloudflare / Incapsula 封锁站, 人过验证码, 结果回传爬虫服务。当前扩展版本 v1.5.4。
它是干什么的
爬虫服务器是机房 IP(49.51.50.12), 被 optics.org(Incapsula/Radware)、EE Times、Telecoms.com 等 WAF 封锁,
服务器直抓或无头浏览器都拿不到(只返回挑战页)。本扩展用你自己的浏览器(家用 IP + 真实指纹)
去抓这些封锁站, 遇验证码由你手动过, 抓到的文章列表(标题 + 直达链接 + 日期 + 正文)回传爬虫服务,
爬虫每天 04:02 跑时自动读取, 命中新闻进当天 HTML 页面和邮件。
架构
你的浏览器 (电脑 Chrome / 手机 Kiwi, 家用 IP)
──HTTPS──> https://news.cathy.zaymuc.com/ext/ (nginx 反代, 443)
└──> 127.0.0.1:9000 (WAF 层)
└──> 127.0.0.1:7321 extension_server.py (systemd 守护)
爬虫 crawler.py 在服务器本机直接读 127.0.0.1:7321 (不经 nginx, 快)
服务端已是 systemd 守护(cathy-ext-server.service, 开机自启, 挂了自动拉起), 你不用管服务端,
只装扩展。任务清单是动态下发的, 改源不用重装扩展。
一次性安装
1. 下载扩展
下载地址(公网, HTTPS, zip 里不含 token):
https://news.cathy.zaymuc.com/cathy-extension.zip
解压后是一个 extension/ 文件夹(manifest.json + background.js + popup.html/js + icons/)。
2. 装进浏览器
- 电脑 Chrome / Edge: 打开
chrome://extensions, 右上开「开发者模式」, 点「加载已解压的扩展程序」, 选解压出来的extension/文件夹。 - 手机 (Android): 官方 Chrome 不支持外部扩展, 用 Kiwi Browser(Chromium 内核), 打开
chrome://extensions同样「加载已解压」。iOS 不支持装外部扩展。 - 关键: 装好后进
chrome://extensions→ 该扩展「详情」→「网站访问权限」选 「在所有网站上」(MV3 用<all_urls>, 不设这个会抓不到封锁站)。
3. 配置扩展
点扩展图标打开弹窗, 填:
- 服务地址:
https://news.cathy.zaymuc.com/ext(默认值, 不用改) - Token(与服务端共享鉴权, 直接复制下面这串):
5159b66109ef4ca14f22b99fa252bea1
- 定时抓取(分钟):
0=关; 建议 30(每 30 分钟自动抓一轮, 跟服务端 25 分钟冷却配合, 每站每轮恰好抓一次)。手机后台不可靠, 手机上建议留0用手动触发。 - 点「保存配置」。
Authorization: Bearer 头(不放 URL, 不落 nginx access log)。
手机和电脑用同一个 token, 抓取结果都回传同一个服务。如需更换, 改服务器 config.py 的 EXT_TOKEN 并在所有扩展弹窗里同步。
抓取
点「立即抓一轮」。扩展会:
- 从服务拉任务清单(当前 9 个封锁站, 见下表)。
- 后台开目标站标签页, 注入脚本读文章列表(标题 + 直达链接 + 日期)。
- 进每篇文章页抓发布日期 + 正文(喂 LLM 二段精筛)。
- 若弹验证码(Incapsula/CF/Radware 挑战), 会发系统通知 → 切到该标签页手动过 → 抓取自动继续。
- 回传服务, 落盘到服务器
ext_results/。
弹窗显示: 本浏览器 ID / 状态(抓取中·正在执行 X / 空闲) / 当前认领 / 上一轮完成时间 / 下一轮定时 / 各源最近抓取条数和时间。
EXT_MAX_AGE=86400, 仍接受, 不阻塞其它源)。重开 Chrome 时扩展延迟 ~15 秒自动跑一轮。
当前抓取的封锁站(9 个, 服务端驱动)
| 源 | 分类 | 抓正文 |
|---|---|---|
| Optics.org | 光通信/光器件 | 是 |
| Lightwave Online | 光通信/光器件 | 是 |
| Laser Focus World | 光通信/光器件 | 是 |
| Photonics Spectra | 光通信/光器件 | 是 |
| Cabling Install | 光通信/光器件 | 是 |
| LEDs Magazine | 光通信/光器件 | 是 |
| Data Center Frontier | IDC | 是 |
| EE Times | 国际 IT | 是 |
| Telecoms.com | 光通信/光器件 | 是 |
加/删/改源走服务端管理页, 不用重装扩展。
管理页(可选)
浏览器打开(HTML 外壳公开, 数据操作要 token):
https://news.cathy.zaymuc.com/ext/admin
粘贴 token → 加载, 能看各源状态(最近回传时间/条数/新鲜/冷却剩余) + 可编辑任务清单 + 浏览器列表(认领/贡献/启用/释放租约)。
爬虫集成(自动, 不用你管)
服务器每天 04:02(/etc/cron.d/cathy-news)跑 crawler.py:
- 9 个 extension 源自动从本机服务读最近结果(接受 1 天内)。
- 服务没数据或过期 → 这些源返回空, 不阻塞其它 30 多个直抓源。
- 抓到的文章链接是源站直达 URL, 进
news/YYYY-MM-DD.html和当天邮件。
故障排查
- 弹窗显示「无法连接服务器」: 服务端挂了。服务器上
systemctl status cathy-ext-server, 挂了systemctl restart cathy-ext-server。日志在logs/extension_server.log。 - 点「立即抓一轮」没反应 / popup 显示「开始 X 分钟前」且不动: 抓取卡死。v1.5.4 已加 30s fetch 超时 / 45s 注入超时 / 6min 任务时限 / 僵尸锁自愈 / 手动「抓取」强制绕过。还卡的话:
chrome://extensions关再开扩展, 或重装(清chrome.storage.local里的running:true锁)。 - 某站长期 0 条: 多半是该站长期验证码(如 EE Times), 是内容问题不是稳定性问题, 要么人工过码, 要么从任务清单移除。
- tab 堆积关不掉: v1.5.4 已修(
runTaskfinally 必关 tab +open_tabs持久化 + 5 分钟 reaper alarm 清孤儿 tab)。最多残留到下一次 alarm(≤5 分钟)必被关。