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

140 天前
 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 规则还没有适配,仅支持本机解除限速。后续会支持下游机器。

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

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

FakeHTTP 只处理已有的 TCP 报文,自身不提供服务。
alpha9318
140 天前
支持一下👍
march1993
140 天前
何苦要用到内核模块,本地实现一个 socks5 client 把流量加上 http 头发到目标主机不就好了吗。。
povsister
140 天前
这个思路真是 6
mikewang
140 天前
@march1993 #7
?目标端口不认识 HTTP 怎么通信
geekvcn
140 天前
没用,我这是单线程限速 5M ,但是总速不限制,投诉就说上传没问题达标,因为总速确实能达到,但是 Github 发布项目这类单线程上传永远 5M 。用之前那个内核模块试了还是铁打的单线程上传 5M
geekvcn
140 天前
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
140 天前
@allin1 pcdn 警察快来看,这个如果被 pcdn 利用拿来刷流量怎么办啊。
Terminl
140 天前
@mikewang 7#的意思是实现一个 socks5 代理转发,不通过内核转发。
allin1
140 天前
@est 你就是 pcdn 的,所以是你要拿来刷流量吗
https://www.v2ex.com/t/1135261?p=1#r_16319720
对自己名声真有自信
slowman
140 天前
谢谢, openwrt 用上了
mikewang
140 天前
@Terminl #13
可能是你误解了其中的原理。FakeHTTP 只插入,不转发。

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

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

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

转发全部流量是消耗资源且会带来延迟的,FakeHTTP 不会采用这种方式。
imokkkk
140 天前
@1423 头像太帅辣
ArcherLeo
140 天前
有新发现,我拿了我类原生 Android 12 的机器试了下(已经 ROOT ),如果你手机挂了梯子的软件,然后,再用“VPN 热点”软件开启共享,似乎也有效,我见终端有输出。
ArcherLeo
140 天前
我手机是开了 USB 网络共享模式的,且绑定了 VPN 热点,似乎对 NAT 下的设备都有效,前提是得开着 VPN 软件,VPN 状态也得是开的状态。
dizhang
140 天前
请问下我上海电信精品网用户,最近半年一直被电信限制 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