BOM发料对比

This commit is contained in:
hjq
2026-06-26 17:47:38 +08:00
parent c197c6776d
commit 70f966c331

View File

@@ -50,7 +50,7 @@ def patch_drission_ws_handshake() -> None:
return return
def resilient_create_connection(address, **kwargs): def resilient_create_connection(address, **kwargs):
# 终极暴力破解法:移除所有可能导致 Chrome 安全校验失败的头 log("INFO", f"[DEBUG-WS] websocket-client trying to connect to: {address}")
base_kwargs = dict(kwargs) base_kwargs = dict(kwargs)
# 强制禁用代理,防止请求被容器内的网络规则重定向 # 强制禁用代理,防止请求被容器内的网络规则重定向
@@ -59,29 +59,17 @@ def patch_drission_ws_handshake() -> None:
base_kwargs["http_proxy_host"] = None base_kwargs["http_proxy_host"] = None
base_kwargs["http_proxy_port"] = None base_kwargs["http_proxy_port"] = None
# 提取目标端口,用于构造合法的 Host 头
try:
port = address.split(":")[2].split("/")[0]
except IndexError:
port = "9222"
# Chrome 149 增强了 DevTools 的安全校验。
# Host header 必须是 IP 地址或 localhost且必须包含端口号
# 注意websocket-client 会自动生成 Host 头,如果这里手动加上会导致发送重复的 Host 头,从而被 Chrome 500 拒绝。
candidate_kwargs = [ candidate_kwargs = [
# 策略1标准的 localhost 组合,不手动加 Host 避免重复 # 策略1干净的连接,什么都不加 (根据测试脚本,测试 1 成功)
{ {
**base_kwargs, **base_kwargs,
"suppress_origin": False,
"header": ["Origin: http://127.0.0.1"]
}, },
# 策略2最原始、最干净的连接方式(类似 curl # 策略2DrissionPage 默认的抑制 Origin (根据测试脚本,测试 2 成功)
{ {
**base_kwargs, **base_kwargs,
"suppress_origin": True, "suppress_origin": True
"header": []
}, },
# 策略3伪装成 localhost # 策略3加上 localhost Origin
{ {
**base_kwargs, **base_kwargs,
"suppress_origin": False, "suppress_origin": False,