FakeHTTP - 伪装 TCP 连接为 HTTP,解除白名单限速

2025 年 6 月 1 日
 mikewang

FakeHTTP

https://github.com/MikeWang000000/FakeHTTP


原理:

在 TCP 三次握手之后,立即发送一个 HTTP GET 请求,Host 为指定域名。使用 NFQUEUE 实现。


相关帖子:


命令(需要 sudo ):

fakehttp -h www.example.com -i eth0

特点:

因为 nf_deaf 是内核模块,需要手动编译,有一定使用门槛。FakeHTTP 选择使用 iptables + NFQUEUE 方案,使用 musl 静态编译,通用全部主流 Linux 发行版。

一些说明:


特别说明:

首次使用 FakeHTTP ,请不要远程操作。若使用不当,可能造成远程机器断网。


备注:

目前因为 NAT 规则还没有适配,仅支持本机解除限速。后续会支持下游机器。

33440 次点击
所在节点    宽带症候群
179 条回复
nicefrp
2025 年 6 月 1 日
star 了
qaz741wsd859
2025 年 6 月 1 日
问个小白问题:这对入站和出站连接都生效么?
NewYear
2025 年 6 月 1 日
困惑,这个是用于“回家”吗,也就是说需要有外网 IP ,而且被检测为家用宽带开放 HTTP 服务?
microka
2025 年 6 月 1 日
感谢,先收藏了,正好需要。
mikewang
2025 年 6 月 1 日
#2 @qaz741wsd859 入站出站都生效。主要针对出站,入站还在测试中。

#3 @NewYear 不是,这个不是协议。和是否有公网/开放端口没有关系。可以通俗的理解为:在正常的 TCP 传输中加一点 HTTP 特征,骗过限速。

FakeHTTP 只处理已有的 TCP 报文,自身不提供服务。
alpha9318
2025 年 6 月 1 日
支持一下👍
march1993
2025 年 6 月 1 日
何苦要用到内核模块,本地实现一个 socks5 client 把流量加上 http 头发到目标主机不就好了吗。。
povsister
2025 年 6 月 1 日
这个思路真是 6
mikewang
2025 年 6 月 1 日
@march1993 #7
?目标端口不认识 HTTP 怎么通信
geekvcn
2025 年 6 月 1 日
没用,我这是单线程限速 5M ,但是总速不限制,投诉就说上传没问题达标,因为总速确实能达到,但是 Github 发布项目这类单线程上传永远 5M 。用之前那个内核模块试了还是铁打的单线程上传 5M
geekvcn
2025 年 6 月 1 日
root@route:/tmp/upload# ./fakehttp -h 4gsuzhou1.speedtest.jsinfo.net.prod.hosts.ooklaserver.net -i pppoe-wan
Sun Jun 1 15:31:50 2025 [main() - src/fakehttp_nfq.c:501] FakeHTTP version 0.9.0
Sun Jun 1 15:31:53 2025 [callback() - src/fakehttp_nfq.c:381] 104.18.31.1:80 ===ACK===> 114.*.*.228:48726
Sun Jun 1 15:31:53 2025 [callback() - src/fakehttp_nfq.c:392] (*) 104.18.31.1:80 <===HTTP(*)=== 114.*.*.228:48726
Sun Jun 1 15:31:53 2025 [callback() - src/fakehttp_nfq.c:348] 104.18.31.1:80 ===SYN-ACK===> 114.*.*.228:55182
Sun Jun 1 15:31:53 2025 [callback() - src/fakehttp_nfq.c:363] 104.18.31.1:80 <===ACK(*)=== 114.*.*.228:55182
Sun Jun 1 15:31:53 2025 [callback() - src/fakehttp_nfq.c:374] 104.18.31.1:80 <===HTTP(*)=== 114.*.*.228:55182
Sun Jun 1 15:31:53 2025 [callback() - src/fakehttp_nfq.c:381] 104.18.31.1:80 ===ACK===> 114.*.*.228:54762
Sun Jun 1 15:31:53 2025 [callback() - src/fakehttp_nfq.c:392] (*) 104.18.31.1:80 <===HTTP(*)=== 114.*.*.228:54762
Sun Jun 1 15:31:53 2025 [callback() - src/fakehttp_nfq.c:381] 104.18.31.1:80 ===ACK===> 114.*.*.228:54762
Sun Jun 1 15:31:53 2025 [callback() - src/fakehttp_nfq.c:392] (*) 104.18.31.1:80 <===HTTP(*)=== 114.*.*.228:54762

用的绝对是白名单域名,所以我总结了又两个限速节点,一个是出省前,一个是出国前,后者目前基本没办法破,前者只要流量不是太离谱就不会被限制
est
2025 年 6 月 1 日
@allin1 pcdn 警察快来看,这个如果被 pcdn 利用拿来刷流量怎么办啊。
Terminl
2025 年 6 月 1 日
@mikewang 7#的意思是实现一个 socks5 代理转发,不通过内核转发。
allin1
2025 年 6 月 1 日
@est 你就是 pcdn 的,所以是你要拿来刷流量吗
https://www.v2ex.com/t/1135261?p=1#r_16319720
对自己名声真有自信
slowman
2025 年 6 月 1 日
谢谢, openwrt 用上了
mikewang
2025 年 6 月 1 日
@Terminl #13
可能是你误解了其中的原理。FakeHTTP 只插入,不转发。

SYN -- SYN-ACK -- ACK -*- 数据 1 -- 数据 2 ...

FakeHTTP 在 [ ACK -*- 数据 1 ] 之间,直接对外发送含有 HTTP 特征的 TCP 报文,不涉及任何转发。

nfqueue 的作用是:1. 截取通信中的数据包 2. 拦截 TCP 栈处理流程,将 HTTP 特征在 [数据 1] 前发送出去。

转发全部流量是消耗资源且会带来延迟的,FakeHTTP 不会采用这种方式。
imokkkk
2025 年 6 月 1 日
@1423 头像太帅辣
ArcherLeo
2025 年 6 月 1 日
有新发现,我拿了我类原生 Android 12 的机器试了下(已经 ROOT ),如果你手机挂了梯子的软件,然后,再用“VPN 热点”软件开启共享,似乎也有效,我见终端有输出。
ArcherLeo
2025 年 6 月 1 日
我手机是开了 USB 网络共享模式的,且绑定了 VPN 热点,似乎对 NAT 下的设备都有效,前提是得开着 VPN 软件,VPN 状态也得是开的状态。
dizhang
2025 年 6 月 1 日
请问下我上海电信精品网用户,最近半年一直被电信限制 pt 上行只有 1-2MB/s ,测速正常是上行 300mb/s ,用的是软路由,系统是爱快,有没有什么方法可以解除这种限速,万分感谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1135702

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX