Skip to content
Mike Wang edited this page Jun 25, 2025 · 24 revisions

FakeHTTP

FakeHTTP 可以将你的所有 TCP 连接伪装为 HTTP 等协议以规避深度包检测 (DPI),是一个基于 nftables / iptables 与 Netfilter Queue (NFQUEUE) 的网络工具。

  • 双方 TCP 通信时,您仅需在其中一端运行 FakeHTTP。
  • 用于伪装的 TCP 报文会在传输的路途中被丢弃。
  • FakeHTTP 不是网络隧道,它仅在 TCP 握手时工作。

交流群组:https://t.me/hellonatter

适用场景

  • 处于个人隐私、通信秘密考虑,不想让您的访问信息被未授权的 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

WSL

可以在最新版的 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

Clone this wiki locally