我在 X 上分享了两条 iptables 规则:
iptables -A INPUT -p tcp -m bpf --bytecode '54,48 0 0 0,84 0 0 240,21 0 50 64,48 0 0 9,21 0 48 6,40 0 0 6,69 46 0 8191,177 0 0 0,80 0 0 12,52 0 0 16,36 0 0 4,12 0 0 0,7 0 0 0,80 0 0 0,21 0 38 22,177 0 0 0,80 0 0 12,52 0 0 16,36 0 0 4,4 0 0 5,12 0 0 0,7 0 0 0,80 0 0 0,21 0 29 1,177 0 0 0,80 0 0 12,52 0 0 16,36 0 0 4,4 0 0 9,12 0 0 0,7 0 0 0,80 0 0 0,21 0 20 3,177 0 0 0,80 0 0 12,52 0 0 16,36 0 0 4,4 0 0 1,12 0 0 0,7 0 0 0,80 0 0 0,21 0 11 3,177 0 0 0,80 0 0 12,52 0 0 16,36 0 0 4,4 0 0 78,12 0 0 0,7 0 0 0,80 0 0 0,84 0 0 15,21 1 0 10,6 0 0 65535,6 0 0 0' -j REJECT --reject-with tcp-reset
iptables -A INPUT -p tcp -m bpf --bytecode '55,48 0 0 0,84 0 0 240,21 0 51 64,48 0 0 9,21 0 49 6,40 0 0 6,69 47 0 8191,177 0 0 0,80 0 0 12,52 0 0 16,36 0 0 4,4 0 0 6,12 0 0 0,7 0 0 0,80 0 0 0,21 0 38 22,177 0 0 0,80 0 0 12,52 0 0 16,36 0 0 4,4 0 0 11,12 0 0 0,7 0 0 0,80 0 0 0,21 0 29 1,177 0 0 0,80 0 0 12,52 0 0 16,36 0 0 4,4 0 0 15,12 0 0 0,7 0 0 0,80 0 0 0,21 0 20 3,177 0 0 0,80 0 0 12,52 0 0 16,36 0 0 4,4 0 0 7,12 0 0 0,7 0 0 0,80 0 0 0,21 0 11 3,177 0 0 0,80 0 0 12,52 0 0 16,36 0 0 4,4 0 0 84,12 0 0 0,7 0 0 0,80 0 0 0,84 0 0 15,21 1 0 10,6 0 0 65535,6 0 0 0' -j REJECT --reject-with tcp-reset
这两条规则仅对 HTTPS 的站点有效,使用了 Chromium 类浏览器 BoringSSL ClientHello 中特有的 GREASE 指纹,可以做到一定程度的反爬虫。
当然,耶尔可以加入 iptables 中的 Random 模块,随机的 Drop 掉或者 Reset 掉 ClientHello。