最近微信迁移功能闹得挺厉害,迁移到 WeChat 后,微信的服务器变成了海外新加坡,在 Surge 最近请求里发现 TCP TCP 请求的都是 IP,默认走的代理。 在 Quantumult X 中看是显示 sgshort.wechat.com 主机名称,可以直接 Rule 中写规则,Surge 只能写 IP-CIDR 规则,如果后面 ip 有变化的话,还要抓包手动添加,比较麻烦。
Quantumult X
sgshort.wechat.com
IP-CIDR
uclort 理论上可以使用 USER-AGENT,MicroMessenger*,DIRECT,但 USER-AGENT 这个 matcher 只针对 HTTP/HTTPS 生效,因此需要追加 force-http-engine-hosts = *:80
USER-AGENT,MicroMessenger*,DIRECT
USER-AGENT
force-http-engine-hosts = *:80
参见白皮书,其他软件的域名应该为从 HTTP 头中抓取所得,Surge 默认并不会将所有 80 端口请求认为是 HTTP 连接于是启动 HTTP 引擎,需要自行配置参数。
SurgeTeam 是通过 force-http-engine-hosts 配置么? 尝试配置 force-http-engine-hosts = wechat.com:0 来配置发现没有效果,改成 force-http-engine-hosts = *:0全部匹配才有效果。 所以正确做法如果微信的 TCP IP 为 101.32.0.0:80 我需要配置 force-http-engine-hosts = 101.32.0.0:80 才对是么?
force-http-engine-hosts
force-http-engine-hosts = wechat.com:0
force-http-engine-hosts = *:0
101.32.0.0:80
force-http-engine-hosts = 101.32.0.0:80
是的没错,在 HTTP 引擎介入前是不知道这个域名的,该域名仅存在于 HTTP 请求的 Header 中。
最近也碰到了这个问题,尤其是在做腾讯视频去广告的时候,广告的TCP连接都是IP,而且一直在变,刚把这个IP加入到force-http-engine-hosts中,下次再刷新一下,就又换IP了,改变IP非常频繁,导致规则失效。但是用Quantumult X就可以用域名规则来屏蔽。非常想要Surge也能做到这一点。 SurgeTeam
若 Surge 想要通过对数据包进行识别判断连接是否为 HTTP 协议,须等待客户端发出第一个数据包,如果遇上了服务器首先发数据包的协议,则会造成客户端一直等待。(虽然可以通过加入等待超时的方式去处理,但是很不优雅)
虽然识别数据包的方式并不太优雅,但还是希望作者能给个选项。
对于微信的话,DOMAIN,dns.weixin.qq.com,REJECT。
DOMAIN,dns.weixin.qq.com,REJECT
也有这个需求,我设置了 force-http-engine-hosts = :0,并且添加了 USER-AGENT,MicroMessenger,DIRECT 后,wechat 直接无法登陆 @SurgeTeam