ShadowSocksR伪装为正常网站流量方法

88H3.jpg

 

本文章主要是为了实现

访问http://xxx.xx 域名(http 80端口),能正常看到网站的内容。但如果连接这个网站服务器上面的ShadowsocksR服务端(也是80端口),也能正常使用。实现了同端口网站和ShadowsocksR服务端的共存。

而对于墙或者运营商来说,当它检测你传输的流量特征的时候,会看到流量是去访问海外服务器的80端口,跟踪的结果是会发现是一个正常的海外网站。因此不会被防火长城或者运营商墙。

所以就实现了伪装ShadowsocksR服务端流量的功能,每天国内访问海外网站(80/443端口)的流量非常庞大,在这个伪装中,可以很大程度的降低被匹配流量特征的几率,所以有兴趣的可以折腾玩玩。

 

文章里的原理

客户端连接服务器80端口(SSR服务端端口),然后会转发到ShadowsocksR服务端,ShadowsocksR服务端会判断是连接SSR,还是访问网站.如果是访问网站,就会把你量数据重定向到网站监听的端口(2333端口),然后就显示网页了。(与v2Ray正好相反的原理。)

 

正式实现

 

安装与配置

 

Caddy的安装

Caddy 是 Go语言编译好的二进制程序,所以只有一个 Caddy 文件。为了管理方便,这里使用网络上一位大佬制作的一键脚本。

wget -N --no-check-certificate https://softs.pw/Bash/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh

如果上面这个脚本无法下载,尝试使用备用下载:

 wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh

安装Caddy成功后,我们就继续下面的步骤。

 

Caddy的配置

注意:以下示例域名皆为 example.com ,请注意更换为自己的域名,并做好域名解析。

 
HTTP(80端口)

假设你要伪装 80端口 (ShadowsocksR服务端的用户端口是 80),那么你可以在Caddy中随便配置一个监听端口。

比如的监听为 2333 端口(可以自己改)。

echo "http://example.com:2333 {
root /usr/local/caddy/www/ssr
gzip
}" > /usr/local/caddy/Caddyfile
 
HTTPS(443端口)

如果你想要伪装 443端口 (ShadowsocksR服务端的用户端口是 443),那么你可以在 Caddy中随便配置一个监听端口。

比如的监听为 6666端口(可以自己改)。

如果你有 SSL证书和密匙的话,把 SSL证书(xxx.crt)和密匙(xxx.key) 文件放到/root文件夹下(也可以是其他文件夹,自己改下面代码),然后这样做:

echo "https://example.com:6666 {
root /usr/local/caddy/www/ssr
tls /root/xxx.crt /root/xxx.key
gzip
}" > /usr/local/caddy/Caddyfile

如果你没有 SSL证书和密匙,那么你可以这样做:

下面的 xxxx@xxx.xx 改成你的邮箱,同时需要注意的是,申请 SSL证书前,请务必提前解析好域名记录(解析后最好等一会,以全球生效),否则 Caddy会申请并配置失败!

echo "https://example.com:6666 {
root /usr/local/caddy/www/ssr
tls xxxx@xxx.xx
gzip
}" > /usr/local/caddy/Caddyfile

如果一切正常,那么Caddy会自动帮你申请 SSL证书并配置好,而且会定时续约SSL证书 和 强制 http重定向至https !

 
HTTP重定向为HTTPS

当你是手动指定 SSL证书和密匙 来配置的话,Caddy只会监听 HTTPS端口(6666),并不会自动设置HTTP的重定向(如果是Caddy自动申请的SSL证书,那么就自动做好了),如果要做重定向的话,可以这样做:

当然,下面这个示例HTTP依然监听的80端口,如果你的ShadowsocksR服务端同时做了 80和443 两个端口的伪装,那么你可以把 80改成其他的比如 2333 端口。

echo "http://example.com:80 {
redir https://toyoo.ml:6666{url}
}
https://example.com:6666 {
gzip
tls /root/xxx.crt /root/xxx.key
}" > /usr/local/caddy/Caddyfile

然后我们新建一个 虚拟主机文件夹

mkdir /usr/local/caddy/www && /usr/local/caddy/www/ssr

然后去网上随便下载一个 HTML模板 (很好找的,这类模板非常多,随便找个英文模板就好了),解压后把网页文件通过SFTP 上传到刚才新建的虚拟主机文件夹中:/usr/local/caddy/www/ssr

然后我们重启 Caddy,当然这个时候我们还只能通过 http://example.com:2333 来访问我们的网站,我们还需要继续配置ShadowsocksR服务端。

service caddy restart
 

ShadowSocksR的配置

打开你的配置文件(假设你的ShadowsocksR服务端安装在/root文件夹内):

vi /root/shadowsocksr/user-config.json

然后我们会看到配置文件,我们只需要找到 redirect参数 并修改就行了

按 I键进入编辑模式,然后修改后按 Esc键 退出编辑模式,并输入 :wq 保存并退出)。

    "redirect": "",
 

HTTP(80端口)

按照上面Caddy的HTTP配置(监听2333端口),把 redirect参数 改成下面这样:

    "redirect": ["*:80#127.0.0.1:2333"],
 

HTTPS(443端口)

按照上面Caddy的HTTPS配置(监听6666端口),把redirect参数 改成下面这样:

    "redirect": ["*:443#127.0.0.1:6666"],
 

HTTP+HTTPS(80 / 443端口)

如果你把Caddy同时配置了多个端口(比如 80和443),那么把redirect参数 改成下面这样:

 "redirect": ["*:80#127.0.0.1:2333", "*:443#127.0.0.1:6666"],

然后重启ShadowsocksR服务端(假设你的ShadowsocksR服务端安装在/root 文件夹内,并且是单用户):

bash /root/shadowsocksr/shadowsocks/run.sh

 

注意:如果要用这个同端口伪装功能,请不要开启 协议(origin)和混淆插件(obfs)的兼容原版模式(_compatible),不要使用原版SS链接!
同时,Shadowsocks-libev版服务端的simple-obfs功能,并不能实现本教程所说的同端口共存功能!

然后现在你可以尝试访问 http://example.com,会发现不需要加端口号( http://example.com:2333 )也可以正常访问了!

同时,这时候你去链接这个ShadowsocksR服务端账号,服务器IP 可以写VPS的IP,也可以写 上面绑定的域名(示例 example.com),会发现SSR连接80端口也能正常使用!

所以这个就实现了,伪装ShadowsocksR服务端流量为 正常海外网站流量的目的,同时也可以说实现了 网站和ShadowsocksR 同端口共存。

 

转载于:ShadowSocksR伪装为正常网站流量方法 – 枯木逢春 (9941y.top)

请登录后发表评论

    没有回复内容