package reader import ( "context" "crypto/hmac" "crypto/rand" "crypto/sha256" "encoding/base64" "encoding/hex" "encoding/json" "errors" "fmt" "io" "net/http" "net/url" "regexp" "strings" "sync" "time" "github.com/PuerkitoBio/goquery" "go.uber.org/zap" "github.com/truewhile/MeBox/internal/helper" "github.com/truewhile/MeBox/internal/service/reader/rule" ) // 本文件:书源 JS 的宿主浏览器(java.startBrowser / java.startBrowserAwait)。 // // legado 用内置 WebView 承载页面:书源在自己的 JS 里拼一段 HTML(线路设置页 // 之类)或给一个网址,让用户点选、登录、过防爬校验,然后(Await 版本)把用户 // 操作后的页面源码当成 StrResponse 返回,书源再从中解析出结果写回源变量。 // // 服务端没有 WebView,于是把这一段拆成三步: // 1. JS 侧 startBrowserAwait 登记一个待办并阻塞等待; // 2. 前端轮询到待办,在