Appearance
浏览器探测实战
何时使用
只有 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。
