BOM发料对比
This commit is contained in:
@@ -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)
|
# 策略2:DrissionPage 默认的抑制 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,
|
||||||
|
|||||||
Reference in New Issue
Block a user