发现一种方法可以通过配置浏览器启动参数来绕过SNI阻断。下面的配置内容对于 chrome 内核浏览器生效。
对于部分访问受到屏蔽和干扰以及访问不稳定的网站有效,可以在一些临时的环境查资料时派上用场。
下面我以访问V站来举例。
未被污染的 IP
首先找到该站点未被污染的 IP。那么如何寻找未被污染的 IP 呢?
当然是使用我自制的观察 DNS 污染情况的工具了:dns-observe
# 安装工具
> pip install dns-observe
# 运行工具,观察 dns 结果,找到能用的IP
> dns-observe v2ex.com
- Time: 2024-11-25 18:34:13.965648, Name: v2ex.com, TTL: 77, A: 157.240.17.41
- Time: 2024-11-25 18:34:13.969059, Name: v2ex.com, TTL: 250, A: 108.160.167.148
┌ Time: 2024-11-25 18:34:14.097316, Name: v2ex.com, TTL: 300, A: 104.20.47.180
│ Time: 2024-11-25 18:34:14.097316, Name: v2ex.com, TTL: 300, A: 104.20.48.180
└ Time: 2024-11-25 18:34:14.097316, Name: v2ex.com, TTL: 300, A: 172.67.35.211
浏览器启动参数
我以 edge 浏览器举例。这里需要用到--host-rules
、--host-resolver-rules
这两个参数。
$ C:\Program Files (x86)\Microsoft\Edge\Application\131.0.2903.51 > .\msedge.exe `
--host-rules="MAP v2ex.com V,MAP cdn.v2ex.com V" `
--host-resolver-rules="MAP V 172.67.35.211" `
--ignore-certificate-errors
你可以进入浏览器可执行文件根目录执行命令行来运行浏览器(上面命令参数里的V
就是伪造的SNI,你可以修改成其他),也可以在快捷方式中添加参数。
如果参数生效会有提示你使用的是不受支持的命令行标准:--host-resolver-rules=xxxxxx。这会带来稳定性和安全风险。
,或者在edge://version/
页面查看命令行是否正确启动。
# 访问Google的参数
chromium --host-rules="MAP www.google.com g.cn" --host-resolver-rules="MAP g.cn 109.185.236.240"
# mega.nz
--host-rules="MAP mega.nz NZ,MAP g.api.mega.co.nz api"
--host-resolver-rules="MAP NZ 31.216.145.5,MAP api 66.203.125.15"
--ignore-certificate-errors
相信聪明的你一定会举一反三。。。
相关链接: