-
Notifications
You must be signed in to change notification settings - Fork 61
Home
Mike Wang edited this page Jun 25, 2025
·
24 revisions
FakeHTTP 可以将你的所有 TCP 连接伪装为 HTTP 等协议以规避深度包检测 (DPI),是一个基于 nftables / iptables 与 Netfilter Queue (NFQUEUE) 的网络工具。
- 双方 TCP 通信时,您仅需在其中一端运行 FakeHTTP。
- 用于伪装的 TCP 报文会在传输的路途中被丢弃。
- FakeHTTP 不是网络隧道,它仅在 TCP 握手时工作。
- 处于个人隐私、通信秘密考虑,不想让您的访问信息被未授权的 DPI 系统记录;
- 通过协议伪装,提高或降低自身的 QoS 等级,达到提速或者降速效果;
- 迷惑抓包工具,使其以伪装的协议解码;
- 学习研究用途等
进入 Releases 页面,下载对应 CPU 架构的压缩包。解压后即可直接执行 fakehttp
文件。
fakehttp -h www.example.com -i eth0
上述命令中 www.example.com
为 HTTP 混淆域名,eth0
为需要绑定的网络接口。
如果您不是 root 用户,请使用 sudo
执行。
注:不能同时运行多个
fakehttp
。
后台运行:
fakehttp -h www.example.com -i eth0 -d
后台运行并记录日志:
fakehttp -h www.example.com -i eth0 -d -w /tmp/fakehttp.log
注:OpenWRT 路由器等存储空间有限设备,小心日志写满存储空间。您也可以使用
-s
选项不记录 IP 地址信息。
详见:各系统支持情况
内核: Linux >= 3.8
依赖: nft >= 0.9.6 或者 iptables >= 1.4.20。OpenWRT 依赖见下文。
例如 OpenWRT,嵌入式平台 Linux 的内核大多是精简过的。需要使用以下命令安装相关内核模块与 iptables 扩展。
最新 OpenWRT(使用 nft):
opkg install nftables kmod-nft-queue
上古 OpenWRT (使用 iptables):
opkg install iptables iptables-mod-conntrack-extra iptables-mod-nfqueue
如果在安装依赖时,出现以下报错:
Collected errors:
* pkg_hash_check_unresolved: cannot find dependency kernel (= ...) for kmod-module
* pkg_hash_fetch_best_installation_candidate: Packages for kmod-module found, but incompatible with the architectures configured
* satisfy_dependencies_for: Cannot satisfy the following dependencies for pkg:
* kernel (= ...)
* opkg_install_cmd: Cannot install package pkg.
原因可能是:
- 您正在使用官方原生正式版本 OpenWRT,但 opkg 源配置错误。(您需要更新 opkg 源)
- 您正在使用定制化的固件,并且固件中缺少相关内核模块。(您需要重新编译并刷入新的固件)
OpenWRT 通常选择的网络接口是 pppoe-wan
。
可以在最新版的 WSL2 内核上使用 FakeHTTP。如果出现缺少内核模块的提示,您的 WSL 内核可能不是最新,请执行以下命令更新 WSL2。
wsl --update
Usage: fakehttp [options]
接口选项(Interface Options):
-a 作用于所有网络接口(忽略 -i)
-i <interface> 作用于指定的网络接口
负载选项(Payload Options):
-b <file> 使用二进制文件作为 TCP 负载
-e <hostname> 用于 HTTPS 混淆的主机名
-h <hostname> 用于 HTTP 混淆的主机名
通用选项(General Options):
-0 处理入站连接
-1 处理出站连接
-4 处理 IPv4 连接
-6 处理 IPv6 连接
-d 以守护进程方式运行
-k 杀掉正在运行的进程
-s 启用静默模式
-w <file> 将日志写入 <file>,而不是标准错误输出
高级选项(Advanced Options):
-f 跳过防火墙规则
-g 禁用跃点数估算
-m <mark> 用于绕过队列的 fwmark
-n <number> Netfilter 队列编号
-r <repeat> 重复生成的数据包 <repeat> 次
-t <ttl> 生成数据包的 TTL
-x <mask> 设置 fwmark 的掩码
-y <pct> 将 TTL 动态提升至估算跃点数的 <pct>%
-z 使用 iptables 命令而不是 nft
GNU General Public License v3.0