找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 14|回复: 1

[其他] 【ZT】NaiveProxy实战搭建教程

[复制链接]
发表于 2026-1-26 16:29 | 显示全部楼层 |阅读模式
原文链接  https://candicexiao.com/naiveproxy


关于NaiveProxyNaiveProxy使用Chrome的网络堆栈来伪装流量,具有很强的抗审查能力和低可探测性。重用Chrome的堆栈也确保了性能和安全方面的最佳实践。
NaïveProxy可以缓解以下几种流量攻击:
  • 通过HTTP/2中的流量复用缓解指纹识别/流量分类
  • 通过「应用前置」,将代理服务器隐藏在一个常用的前端(Caddy)与应用层路由后面)来防御主动探测
  • 通过填充长度缓解基于长度的流量分析。
NaïveProxy的代码由一系列补丁组成,基于每个新版本的Chrome进行变形和重构。

架构
[浏览器 → Naïve (客户端)] ⟶ 审查者 ⟶ [前端 → Naïve (服务端)] ⟶ Internet
NaïveProxy使用Chrome的网络栈。所以防火墙截获的流量行为与Chrome和标准前端服务器(如Caddy、HAProxy)之间的常规HTTP/2流量是完全相同的。
前端的Caddy会将未经过认证的用户和主动探测流量重定向至后端的伪装服务器(或其他网站),使其无法检测到代理的存在,例如:
[探测] ⟶ 前端 ⟶ [本地伪装index.html]

关于Caddy
Caddy 是一个开源的,使用 Golang 编写,支持 HTTP/2 的 Web 服务端。它使用Golang 标准库提供HTTP 功能。
caddy - github

NaiveProxy搭建

0、准备内容
  • 一台云主机
    • 本文操作系统:Ubuntu Server 18.04 64位
  • 一个域名及申请好证书,并下载准备好crt和key文件
    • 本文搭建时已购买域名,并提前在TrustAsia申请免费证书
    • 也可以使用自签名证书,使用openssl等的证书生成方式请自行Google即可(注:搭建成功后在客户端访问时注意加一下证书)
耗时预告
搭建了第二台时看了下时间,在准备内容ready的情况下,整体搭建和测试可用耗时约10min
docker搭建
如果是用现成docker搭建更简单,可略过1和2的环境安装过程,直接参考第3步的caddy配置即可

1、Golang安装
注:由于我买的云主机是x86的Ubuntu,其他操作系统or内核的不太match的小伙伴,可自行安装下golang,google一下相关教程非常多

复制代码

  1. ## 下载 GO 最新版 并 解压至/usr/local/
  2. wget -c https://dl.google.com/go/$(curl https://go.dev/VERSION?m=text).linux-amd64.tar.gz -O - | sudo tar -xz -C /usr/local

  3. ## 添加 Go 环境变量:
  4. echo 'export GOROOT=/usr/local/go' >> /etc/profile
  5. echo 'export PATH=$GOROOT/bin:$PATH' >> /etc/profile

  6. ## 使变量立即生效
  7. source /etc/profile
复制代码



查看golang版本:
  1. go version
复制代码


复制代码



如果能够正常显示GO语言版本,表示成功安装。


2、Caddy安装

  1. ## 编译 Caddy
  2. go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest

  3. ~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy@caddy2=github.com/klzgrad/forwardproxy@naive
复制代码


## 编译 Caddygo install github.com/caddyserver/xcaddy/cmd/xcaddy@latest~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy@caddy2=github.com/klzgrad/forwardproxy@naive[size=0.8em]JavaScript







编译成功后,可以看到当前目录中存在一个名为 caddy 的可执行文件。


3、配置Caddy
首先,将域名A记录解析到所在服务器的IP地址上。
然后,将提前准备好之前手动申请的SSL域名证书的key和crt文件(ps:我这里是使用的手动申请的方式),上传到云主机的某个目录下,记录一下绝对地址
在和caddy可执行文件的相同目录下,创建一个名为Caddyfile的配置文件:
  1. # 和caddy可执行文件的相同目录,执行
  2. sudo vi Caddyfile
复制代码



# 和caddy可执行文件的相同目录,执行sudo vi Caddyfile[size=0.8em]JavaScript








其中,我自己的Caddyfile的配置如下(注意修改注释部分):
ps:
  • Caddyfile配置简洁,我也暂无复杂配置的诉求,故没采用json配置去Caddy
  • 我的配置是reverse_proxy 方式,也就是直接代理到其他url,如果需要代理到某个html可以用file_server等,可参考附1链接模板,或者Caddyfile官方配置文档

  1. {
  2.         order forward_proxy before route
  3.         admin off
  4.         auto_https off
  5. }

  6. :443 {
  7.         tls path_to_crt path_to_key {        #path_to_crt和path_to_key分别换为crt和key文件的绝对地址
  8.                 ciphers TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
  9.                 alpn h2 http/1.1
  10.         }

  11.         forward_proxy {
  12.                 basic_auth username  password         #username password变更为帐号密码,后面登录用
  13.                 hide_ip
  14.                 hide_via
  15.                 probe_resistance
  16.         }

  17.         @host {
  18.                 host xxx1.com        # naiveproxy使用的域名
  19.         }
  20.         route @host {
  21.                 header {
  22.                         Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
  23.                 }
  24.                 reverse_proxy xxx2.com {       # proxy的域名,未登录情况下会redirect到这里
  25.                         header_up Host {upstream_hostport}
  26.                         header_up X-Forwarded-Host {host}
  27.                 }
  28.         }
  29. }
复制代码



启动Caddy


  1. # 后台运行和启动Caddy
  2. ./caddy start
  3. # 关闭
  4. ./caddy stop
复制代码


如果成功运行会出现 Successfully started Caddy(pid=xx)

到这里 Naive 就已经配置完毕了,下面可以验证一下。
一方面,在云主机,确认端口监听正常
  1. ss -tulpn | grep caddy
复制代码



另一方面,也可以用浏览器直接访问下xxx1.com
检验是否redirect到xxx2.com,从而确认配置生效且reverse_proxy的逻辑是正常的。

4、客户端访问

PC端
客户端下载地址:https://github.com/klzgrad/naiveproxy/releases


iPhone端
拿出我最常用的shaodowrocket小火箭,我的配置项如下:



5、性能调优
为获得更好的性能,建议在搭建完成后,参考官方wiki对部分参数进行优化调整:
Performance Tuning - Naiveproxy wiki

本文声明
本文仅用于互联网技术经验交流,不构成任何其他倾向
本文如有描述有误之处,欢迎各位网友联系我讨论和指正~


参考&引用&感谢
naiveproxy中文wiki - github
在VPS上搭建NaiveProxy



回复

使用道具 举报

 楼主| 发表于 2026-1-26 19:51 | 显示全部楼层
可单独用的客户端 https://github.com/klzgrad/naiveproxy
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

QQ|Archiver|手机版|小黑屋|吹友吧 ( 京ICP备05078561号 )

GMT+8, 2026-2-7 04:27 , Processed in 0.097287 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表