naiveproxy简介
NaïveProxy 使用 Chromium 的网络协议栈来伪装流量,具有很强的抗审查能力和低可探测性。使用 Chrome 浏览器的堆栈还能确保最佳性能和安全性。
github项目地址:https://github.com/klzgrad/naiveproxy
naiveproxy设计模式
naiveproxy的服务端被整合到一个正向代理(foward proxy)模块中,理论上其他的代理软件如Nginx haproxy都能整合进入,官方给出的方法是在caddy forwardproxy模块编译的时候将naiveproxy整合进入。
naiveproxy服务端官方安装
首先要安装go语言,这个参考go官方文档。安装好执行下列命令。
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy=github.com/klzgrad/forwardproxy@naive
编译完成后会得到一个caddy的二进制文件。
编写Caddyfile配置文件,官方配置如下:
{
order forward_proxy before file_server
}
:443, example.com {
tls me@example.com
forward_proxy {
basic_auth user pass
hide_ip
hide_via
probe_resistance
}
file_server {
root /var/www/html
}
}
以上完全就是caddy web服务器的配置,只不过配置文件多了forward_proxy而已。
上一篇文章中给出了wstunnel的配置,我们将编译了naiveproxy的caddy文件的配置文件稍微修改一下,使得naiveproxy与wstunnel 共存。
me.example.com {
route {
forward_proxy {
basic_auth yourname pass
hide_ip
hide_via
probe_resistance
}
@websocket {
path /wstunnel/*
header Upgrade websocket
}
reverse_proxy @websocket 127.0.0.1:8080 {
header_up Host {http.request.header.Host}
header_up X-Forwarded-For {http.request.header.X-Forwarded-For}
header_up Upgrade {http.request.header.Upgrade}
header_up Connection "upgrade"
}
reverse_proxy https://me.reverseproxy.com {
header_up Host {upstream_hostport}
transport http {
tls
}
}
}
}
:443 {
route {
forward_proxy {
basic_auth yourname pass
hide_ip
hide_via
probe_resistance
}
reverse_proxy https://me.reverseproxy.com {
header_up Host {upstream_hostport}
transport http {
tls
}
}
}
}
配置说明:
- forward_proxy与官方配置相同,其中能够正确匹配用户名(yourname)密码(pass)的流量走naiveproxy。
- 如果为websocket协议路径匹配/wstunnel由caddy反向代理到后端wstnnel服务端。这一步堪称艺术。
- 不符合以上流量的反代后端me.reverseproxy.com网站
给出wstunnel服务端配置,wstunnel配置明文没有tls加密的websocket协议,加密过程由caddy进行。
/usr/local/bin/wstunnel server ws://127.0.0.1:8080 --restrict-http-upgrade-path-prefix wstunnel