为每个 HtmlUnit 工作线程分配稳定的代理
在页面加载前设置 HtmlUnit 代理选项,并避免并行工作线程更改同一个共享浏览器客户端的路由。
job A → WebClient A → proxy A → destination
job B → WebClient B → proxy B → destination为每个同时运行的浏览身份分配一个配置好的 HtmlUnit WebClient。它的WebClientOptions 拥有 ProxyConfig;在任务运行期间把路由视为固定。共享任务队列并不要求共用一个可变的浏览器。对于使用 HTTP ProxyConfig 的获准公开页面检查,在把候选端点分配给工作线程之前,先从HTTP 代理列表中挑选。
页面、后续加载和会话状态都应保留在该客户端上。更改代理选项无法迁移已经建立的连接。不同客户端也会产生不同的浏览器状态,因此要规划任何有意的共享登录,而不要假设仅靠路由就能决定身份。代理身份验证使用已安装的 HtmlUnit 版本的接口,与网站登录保持分离。
在把浏览器归还到池之前先定义完成条件。顶层响应可能在脚本或后台请求仍在继续时到达。结束或取消那项工作,清除下一个身份不应继承的状态,如果无法可靠地建立该边界,就让该客户端退役。
限制活动客户端数量,并关闭已完成的 WebClient。浏览器会解析并可能执行脚本,成本高于单纯的传输。对于只需要返回的 HTML 的任务,较小的 HTTP 客户端可以在同样的资源预算内支持更多并发请求。