跳转到内容
GitHub

反爬与浏览器辅助

部分网络书源(典型如启用了 Cloudflare 的站点)会对搜索等端点弹出「安全验证 / Just a moment…」挑战页。普通 HTTP 请求拿不到内容,只能拿到挑战页。TRNovel 通过复用你系统里已装的浏览器来解这类挑战——能自动就自动,必要时请你点一下。

普通请求 → 撞到挑战页(cf-mitigated: challenge)


启动系统浏览器(Chrome / Edge / Brave …)解挑战 → 拿到 cf_clearance


把 cf_clearance + 浏览器真实 UA 交回普通请求 → 之后照常快速抓取

浏览器只用来「解一次挑战、领一张通行证(cf_clearance)」,之后的抓取仍走普通快请求;通行证有效期内(通常 30 分钟以上)不再重复打开浏览器。阅读链路(目录 / 正文 / 浏览)通常不受挑战影响,只有搜索等少数端点才会触发。

可能需要点一下「确认您是真人」

Section titled “可能需要点一下「确认您是真人」”

Cloudflare 的挑战是自适应的:风险低时全自动解开,你几乎无感;风险高时会升级为一个勾选框「确认您是真人」。此时 TRNovel 会把浏览器窗口提到最前,请你亲自点一下那个勾选框(出于安全,程序不会、也不能替你点)。点完即继续。

使用持久化的浏览器配置目录(~/.novel/browser-profile)会随使用积累信任,让需要点击的情况越来越少。

  • 用户授权(默认关闭):出于隐私考虑,TRNovel 不会擅自打开你的浏览器。需要你显式授权后才会启用浏览器辅助。
  • 书源取页模式 http.fetcher:
    • auto(默认):平时普通请求,撞到挑战才动用浏览器;
    • reqwest:永不打开浏览器,撞到挑战即视为该能力不可用;
    • browser:整站都用浏览器(适用于首个请求就被挑战、或整页由 JS 渲染的站点)。

是否真的打开浏览器 = 书源声明需要你已授权。两者都满足、且系统装有 Chromium 系浏览器时才会启动。

  • 没装 Chromium 系浏览器(纯 Safari / Firefox),或未授权,或挑战超时:对应能力(如搜索)会如实标记为暂不可用,并建议你改用分类浏览来发现书籍——而不是静默失败。
  • trn doctor <书源.json> 体检时,被挑战的端点会显示「被反爬挑战拦截,需浏览器辅助或改用浏览」,而非笼统的失败。
trn doctor my-source.json     # 全流程体检,逐项 ✓/✗/○;被挑战端点给出精确提示