Surge 用 TUN 接管的连接,由于 Surge 没有准确的方法确认,会把 HTTP 连接简单地当成 TCP 连接对待,但 Surge 的高级功能(Rewrite、脚本等)都是作用于 HTTP 连接的,所以你如果确认一个在 Surge 显示 TCP 的连接其实是一个 HTTP 连接,可以使用这个参数强制交给 HTTP 引擎解析,这样所有高级功能都能生效。具体配置看这里。
注:
这个参数不在 General,是 MITM 的参数,但与上面参数相关,就放一起了。上面说到 Surge 识别为 TCP 但实际是 HTTPS 的在开启该选项后,会把该连接进行 HTTPS 解密,解密出的请求也可以使用 Rewrite 等功能了。
Surge 开启 TUN ONLY 造成的功能缺失,就是因为走 TUN 的所有连接都当成 TCP 处理了,配合这两个参数可以解决(不推荐)。
Surge iOS 主要用系统代理的方式接管大部分请求,剩下的不走系统代理的请求交给 TUN 接管,使用这个参数可以让由Suege TUN 接管的连接绕过 Surge,交给系统处理。
该参数一般用来解决一些兼容性问题,如某些 App 无法通过 DLNA 协议投屏。抓包发现是多播地址 239.255.255.250 处理有些问题,因此可以加入tun-excluded-routes=239.255.255.250/32
将该 ip 交给系统处理。
由于通过规则判断走代理的请求,DNS 解析在远端完成,[HOST] 默认不生效,所以对这类请求,需要加上参数令 [HOST] 段定义生效。
macOS:
http-listen = user:password@0.0.0.0:6152