Skip to content

浏览器探测实战

何时使用

只有 URLSession 得到空壳 HTML、登录页、客户端渲染目录或用户必须交互时,才进入 WKWebView。

触发方式

规则里最直接的入口是 URL 请求选项的 webView/webViewJS 字段(完整语法见 规则语法参考):

text
https://example.com/book/123,{"webView": true, "webViewJS": "document.querySelector('.chapter-list') != null"}

webViewJS 是一段返回布尔值的 JS,WKWebView 会反复求值直到它返回 true(或超时),用来 判断“客户端渲染真的跑完了”,而不是固定等待几秒——固定 sleep 在网络慢的时候等不够,网络快 的时候又白白拖慢验证。规则脚本里也可以直接调用 java.webView(url, js)java.startBrowser(url, title) 达到类似效果,差别是后者需要用户可见、可交互(见 JS 执行上下文)。

当前流程

text
source action / URL option
  -> request-scoped WKWebView
  -> seed source Cookie
  -> load GET/POST or HTML
  -> wait didFinish + delay/condition
  -> optional page JS / resource sniff
  -> read final DOM/URL
  -> sync Cookie back

调试字段

最终 URL、navigation error、DOM 长度、等待耗时、匹配资源数量、Cookie 域、request ID、 是否用户关闭/超时/取消。

会话边界

浏览器工作按一次来源操作创建和回收。多步骤登录应在同一可见流程内完成;用户关闭、超时、 来源切换或视图退出后必须结束加载、同步必要 Cookie 并释放 WebView。

Readori 使用与开发文档