移动开始对白名单以外的域名、网络协议进行上传限速。
具体表现在:
除了移动以外,其他运营商也有类表现:
深度包检测。默认限速 1 Mbps ( 125 kB/s ),检测到白名单协议、域名之后,放开至正常速(我测得 100 Mbps )。
以下均是我在移动宽带下测得的结果。
HTTPS:TCP 443 端口,SNI 探测
目标端口为 443 的 TCP 连接建立成功,客户端发送的 TLS Client Hello 包含白名单域名,解除限速。
比如,在 TCP 建立时,使用下方二进制串,即可解除限速。虽然很多字段是不合法的,比如长度填了 0 ,域名直接放在了最后。但是不影响上游匹配到了 TLS 特征,并命中了域名关键字,放开限速。
"\x16" // Handshake "\x03\x00" // TLS version "\x00\x00" // Length (0) "\x01" // Client Hello "\x00\x00\x00" // Length (0) "\x03\x00" // TLS version "speedtest.cn"
这个检测仅适用于 443 端口。其他端口使用 HTTPS 依然保持限速。
HTTP:所有 TCP 端口,HTTP 头 Host 字段检测
同样地,只要匹配到关键特征即可解除限速。
"HTTP/\r\n" "Host: speedtest.cn\r\n" "\r\n"
DNS:53 端口,首个 UDP 包含有 DNS 协议特征
目标端口为 53 端口,只要第一个 UDP 包发送含有如下 DNS 特征的请求,就可以解除限速。同样是特征匹配,不需要合法。
"\0\0\1\0\0\1\0\0\0\0\0\0\0\0\0\1\0\1"
待发现
尚未找出对其他 UDP 端口解除限速的方法。
该检测会追踪整个 TCP 的状态。在已建立的 TCP 连接中,构造 SYN 之后再发 SNI 或者 HTTP 特征并不会骗过检测机制,达成解除限速的效果。
话说,这个探测方式是不是很眼熟。我怀疑是不是某个神秘技术下放到了运营商,区别只在:一个是检测到就断流,一个是检测到就恢复上传速度。
这里介绍除了投诉以外的规避方案。
设置混淆的 host 为白名单网站即可。
使用 TCP 协议作为隧道可能不是最佳,因此我 fork 了 udp2raw ,在上面加上了 HTTP 特征: https://github.com/MikeWang000000/udp2raw
这个特征很明显的通过了运营商的检测,上传速度恢复到 100 Mbps 。
可以参考这个提交:commit c4995ea
使用方法是在参数后加上 --fake-http speedtest.cn
这样就会混淆为在访问测速网站。
(理论上,未验证)可以使用 eBPF 等手段,在 TCP 连接建立时,使用较小的 TTL 发送 HTTP 特征。这样既通过了运营商的检测,又不会到达服务器。
因为省间结算,运营商费尽心机限制用户上传。这种白名单机制也让用户难以投诉:常见网站、测速网站的上传检测都是正常。运营商可以直接不承认有限速行为,而归结为用户问题。不知道以后还有什么新的手段呢?
![]() | 1 heiher 210 天前 via Android 赞!从外面建立的 TCP 入站连接,连接建立后服务端发送白名单 HTTP 请求作为“响应”,能解除上传限速吗? |
![]() | 2 mikewang OP #1 @heiher 刚刚实测了一下。有意思的是,这个包不分方向。 从 server -> client 或者 client -> server 只要有一处匹配到特征,就解除限速了。 |
![]() | 4 MFWT 209 天前 > 带 HTTP 混淆的网络工具 这个会不会有风险?家宽开 HTTP 访问什么的,不确定他判断方式是主动扫描还是流量监听 |
![]() | 5 heiher 209 天前 via Android |
![]() | 6 Trim21 209 天前 BT 的 TCP 流必须以特定的协议头 开始,看这样子好像不太好绕过? |
![]() | 7 Trim21 209 天前 @Trim21 #6 如果是未开启混淆的 bt tcp 的话,理论上说应该可以在 68 字节的握手之后插入一个包含任意文本的包。不过不知道在这个地方发送对应的文本还能不能触发解除限制了。 \x00\x00\x00\x1f \x20 \x99HTTP/\r\nHost: speedtest.cn\r\n\r\n ( hex 之后是 0000001f2099485454502f0d0a486f73743a207370656564746573742e636e0d0a0d0a ) |
![]() | 8 383394544 209 天前 via iPhone 看到白名单域名是 speedtest.cn 笑了 |
9 iijboom 209 天前 |
![]() | 10 1QWxx6CtzA3CPgEQ 209 天前 @383394544 speedtest.net 中国大陆测速节点 迟早要被全部拆除 |
11 huihuilang 209 天前 via Android 所谓的 sni 伪装? 伪装成境外的白名单是不是也可以? |
![]() | 13 heiher 209 天前 via Android 另外,是不是有没有 http response 不重要?如果是伪装双向都发 http request :D |
![]() | 14 wy315700 209 天前 哪个地方的移动啊 上海移动最近给大流量用户开始每天晚上 8 点和 10 点断线重拨 |
![]() | 15 1QWxx6CtzA3CPgEQ 209 天前 @383394544 我知道不是同一个网站 |
![]() | 17 PROJECT 209 天前 看上去 doh 或者 doq 是有点用的 |
![]() | 18 heiher 209 天前 实测我这移动和电信之间白天跨网不限速,晚高峰使用 HTTP 伪装也不提速。 |
19 JasperHale 209 天前 鄙人觉得这个逻辑不像是 GFW 倒是类似 反诈墙的下放. |
![]() | 20 NewYear 209 天前 哈哈,我在想在未来的世界,互联网充满了这类“伪装数据包”,也是蛮有意思的。 |
![]() | 21 ilili 208 天前 我预感伪装 host 免流的那一套很适合解限速,ss+obfs 就完事了 |
22 ERvISTyP 208 天前 今天试了下 op 的这个方案( udp2raw + wireguard ),还是限速,不知道我这电信用了什么黑魔法 我这最开始的时候用 shadowTLS 就行破,现在都不行了 |
23 basncy 208 天前 解除 UDP 限速很容易,使用 RAID 0 级的条带化并行传输,2 秒零百加速不是梦。为了世界的和平,正常的 ISP 会封 IP 断流(迅雷一开,全家断网)。 |
![]() | 24 east4ming 208 天前 via Android 突然想到一个问题,那 http3 呢? |
![]() | 26 playboy0 208 天前 如果直接用 reality 这种协议呢 谢谢楼主 |
![]() | 27 kdzhq443 208 天前 何必呢,直接转网 |
28 rulagiti 206 天前 真恶心,骚操作一波又一波。 |
![]() | 30 iamqk 205 天前 我说的怎么挂了代理上传速度就恢复正常呢 |
31 zzyyzz 205 天前 湖南电信上周就发现了。表现在 OneDrive 上传时,一开始只能跑在 800-1024KByte/s 。一段时间后,可达到 5-6Mbyte/s 满速上传。 |
![]() | 33 Jason1737 203 天前 via Android 请问下 Vmess+ws ,不套 tls ,然后 host 填"speedtest.cn",path 填"/",可以破解这个限速吗,我这里移动到电信也是被限得死死的,无论是 ss 还是 wireguard 都只有 1Mbps 左右的速度 |
35 KleinerSource 194 天前 我们这个现象一样 但是是限速 2mbps 而且用户被拉到特定 ip 段 118.251.96-97-98-99 段 |
36 KleinerSource 194 天前 主动上传不限速(传网盘,传其他地方) 但是 外部从家里 下载数据 就限速 200k rdp(200k 频繁断开连接) 云游戏(严重花屏) 外网看 emby 听歌 全部 200k |
37 huaxie1988 167 天前 非常不错的文章,学习了。 |
38 hi543 152 天前 手机微信传送视频也会被限速。speedtest 测试速度都是正常的。我一猜就知道是分协议、APP 限速了。 |
![]() | 39 Ixizi 139 天前 https://imgur.com/a/r6uYfOY 真无语了。江西移动。 |
40 ntplay4 138 天前 坐标,山东,用的企业版 1000M 下行,100M 上行的联通. 最近直接上传白名单了. 测速网和百度网盘什么的一切正常.白名单外的上传一塌糊涂. 基本是几百 KB 到 1M. |
![]() | 43 molezznet 90 天前 via Android 我还想怎么现在国内两个 nas 之间,v6 直连动不动就降到 100 多 k 每秒,不能愉快的玩 nas |
![]() | 44 molezznet 89 天前 |
![]() | 45 molezznet 89 天前 上海移动,我还测出来一个精准 8M 的限速,腾讯云的 vps ``` [ ID] Interval Transfer Bitrate [ 5] 0.00-1.01 sec 896 KBytes 7.24 Mbits/sec [ 5] 1.01-2.01 sec 1.00 MBytes 8.44 Mbits/sec [ 5] 2.01-3.01 sec 1.00 MBytes 8.33 Mbits/sec [ 5] 3.01-4.01 sec 1.00 MBytes 8.41 Mbits/sec [ 5] 4.01-5.01 sec 1.00 MBytes 8.43 Mbits/sec [ 5] 5.01-6.00 sec 1.00 MBytes 8.44 Mbits/sec [ 5] 6.00-7.01 sec 1.00 MBytes 8.33 Mbits/sec [ 5] 7.01-8.01 sec 1.00 MBytes 8.34 Mbits/sec [ 5] 8.01-9.01 sec 1.00 MBytes 8.45 Mbits/sec [ 5] 9.01-10.00 sec 1.00 MBytes 8.43 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.02 sec 10.3 MBytes 8.58 Mbits/sec 0 sender [ 5] 0.00-10.00 sec 9.88 MBytes 8.28 Mbits/sec receiver ``` |
46 ENE 35 天前 ![]() 发现使用 Frp 解决运营商对境外服务器的 QOS 使用 frp 双向 tls 验证,并在证书中添加 dns 域名 speedtest.cn ```frps.toml transport.tls.force = true transport.tls.serverName = "speedtest.cn" transport.tls.certFile = "/cert/FRP-Server_crt.pem" transport.tls.keyFile = "/cert/FRP-Server_prv.pem" transport.tls.trustedCaFile = "/cert/FRP-CA_crt.pem" ``` ```frpc.toml transport.tls.force = true transport.tls.serverName = "speedtest.cn" transport.tls.certFile = "/cert/FRP-Server_crt.pem" transport.tls.keyFile = "/cert/FRP-Server_prv.pem" transport.tls.trustedCaFile = "/cert/FRP-CA_crt.pem" ``` |
47 ENE 35 天前 修正一下 ```frpc.toml transport.tls.enable = true transport.tls.serverName = "speedtest.cn" transport.tls.disableCustomTLSFirstByte = true transport.tls.certFile = "/cert/FRP-Client_crt.pem" transport.tls.keyFile = "/cert/FRP-Client_prv.pem" transport.tls.trustedCaFile = "/cert/FRP-CA_crt.pem" ``` |
48 funnypc 15 天前 |