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

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

25660 次点击
所在节点    宽带症候群
175 条回复
Lentin
135 天前
抓包看了一下进方向的流量 局域网访问本地公网的 ttl 流量始终为系统默认-1 可以这么写死了好像

nft -f - <<EOF
flush table ip mangle
table ip mangle {
chain bypass {
type filter hook prerouting priority mangle -10; policy accept;
ip ttl 63 meta mark set 0x8000 # *nix 默认 ttl 64-1
ip ttl 127 meta mark set 0x8000 # windows 默认 ttl 128-1
}
}
EOF
jousca
134 天前
我用 XRAY CORE 的 XHTTP 协议不就行了??
mikewang
134 天前
@Lentin #101 v0.9.13 支持识别局域网主机咯

@jousca #102 是没问题,但是如果你想跑 PT ,xray 就不行,FakeHTTP 就可以。
Ipsum
134 天前
西南电信实测有效。这让 isp 花了大价钱上的科技板情何以堪。
shiyunjin
134 天前
我觉得应该支持一下自定义负载,而不是设置一个 hostname
zer
133 天前
上海电信精品网的限速实测有效,openwrt 下是有用的
./fakehttp -h www.speedtest.net -i pppoe-wan
mikewang
133 天前
@shiyunjin #105 可以啊,这就加上。预计在 v0.9.14 支持这种做法。
dizhang
132 天前
@zer 老兄能详细指点写个教程么,我也精品网限速很久了,目前用的软路由加爱快拨号,不知道怎么弄,多谢了
zer
132 天前
@dizhang 爱快我不知道怎么搞,他有一些依赖在 openwrt 下可以直接安装
https://github.com/MikeWang000000/FakeHTTP/wiki
我命令行执行这个就能跑起来了,也没其他操作
./fakehttp -h www.speedtest.net -i pppoe-wan -d
dizhang
132 天前
@zer 就是说我软路由必须安装 openwrt ,然后在 openwrt 的 cmd 这类的窗口输入这个命令就搞定了?
zer
132 天前
@dizhang 也不是,如果你只是 NAS 需要上传,就直接在 NAS 上运行 fakehttp ,路由器只是能对内网全局处理。
我测试飞牛应该是没问题的,群晖不知道行不行
dizhang
131 天前
@zer 多谢,家里没有 nas ,只有两条联通一条电信的线路,先拿电信这个线路试试看,单独把电信的线路接到以前一台不用的软路由,装个 openwrt 试试看,多谢指点,没问题的话就把现在的软路由上的爱快清除掉,装 openwrt ,不过我因为有两条联通一条电信,电信这个限制了上行,联通的没有,不知道这个 fakehttp 会不会影响到我联通线路的质量?
dizhang
131 天前
问一下非常非常初级的问题,请见谅,装了个 openwrt esir playgroud 版本高大全,测试,因为软路由是 x86 的,所以下了对应的版本的 tar.gz ,用 winscp 传到了目录下面,然后用 putty ssh 连接上去,用的 root 账号,输入
./fakehttp -h www.speedtest.net -i eth0
告诉我 permission denied ,我输入 sudo -i 说没这个指令??完全摸不着头脑
dizhang
131 天前
就是说我装了 openwrt 后有个很迷茫的一点,就是下载的东西放到哪里,然后如何执行?这些基本的知识没搞清楚……
dizhang
131 天前
@zer 请问下是用 winscp 把下载下来的解压后的目录放到任意的 openwrt 分区里面,然后用 Putty 连接 ssh 上去执行命令吗,我这方面小白还望指点一下,多谢了。
zer
130 天前
@dizhang 对的,可以加上-d 命令让他在后台运行
dizhang
130 天前
@zer 打扰了,我在 openwrt 安装了 sudo 命令后,使用 sudo -i ,执行 ./fakehttp -h www.speedtest.net -i eth0 命令总是说 permission denied ,不知道怎么回事,需要把下载下来的 fakehttp 的文件目录放在什么特定的文件夹才行吗,我是放在/etc 目录里面的
另外执行 opkg install nftables kmod-nft-queue 的时候报错

Package nftables-json (1.1.1-r1) installed in root is up to date.
Unknown package 'kmod-nft-queue'.
Collected errors:
* opkg_install_cmd: Cannot install package kmod-nft-queue.
不知道怎么解决
dizhang
130 天前
@zer 把 fakehttp 放入 tmp 目录,现在可以执行了,但是报错说
ERROR: nfq_create_queue(): Invalid argument (Missing kernel module?)
但是按照 opkg install nftables kmod-nft-queue 的命令输入后说找不到这个 kmod
报错信息是 unknown package
dizhang
130 天前
@mikewang 打扰了,运行 fakehttp 报错说没有 kmod-nft-queue ,但是我 opkg install nftables kmod-nft-queue 说找不到 kmod-nft-queue ,不知道该怎么办了
zer
130 天前
@dizhang 我用的是 immortalwrt 23.05 ,有这个依赖,直接安装 opkg install nftables kmod-nft-queue 是没问题的。你的 openwrt 可能不支持 nftable 或者只有 iptables ,可以试试这个命令安装依赖 opkg install iptables iptables-mod-conntrack-extra iptables-mod-nfqueue
然后你得下载这个包
https://github.com/MikeWang000000/FakeHTTP/releases/download/0.9.14/fakehttp-linux-x86_64.tar.gz

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

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

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

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

© 2021 V2EX