You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mabbs/_posts/2022-01-16-wssocks.md

61 lines
7.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
layout: post
title: wssocks的简单评测
tags: [wssocks, 代理, 评测]
---
一堆花里胡哨的梯子会不会是障眼法?<!--more-->
# 起因
最近我手头能用的梯子真的是越来越少了,除了防火墙越来越高的原因之外,也可能和大家对专业机场的信任导致免费的梯子越来越少了 ~~毕竟我在网络上只用免费的东西lol~~ 。所以我想着应该用手头的资源赶紧整点梯子用,不然以后可能就真连不上国际互联网了。
对于怎么搭梯子,我以前也有很多经验,像我之前也发过[网络任意互联指南](/2021/05/07/ssh.html)以及[不依赖代理连被Ban网站的方法](/2019/04/27/antiban.html)之类的文章不过在我实际运用的时候还是会发现有些问题比如之前我用SSH隧道确实很好用手机上也能找到可以连接的软件要说问题确实也没啥问题只是感觉速度不太行其实我个人觉得SSH隧道挺好用的不过我目前手头没有合适的直连的主机所以不太方便用。
其实我也是想多做一些测试想多试试看怎么样可以避免被防火墙检测另外就是我一般都是做IP已经被Ban的假设主要是不太希望IP暴露可以参考[这篇](/2021/04/18/hide.html)文章所以会想着用比如说Cloudflare的办法。所以会考虑这个代理软件应该支持TLS+Websocket。目前我看比较主流支持这个方案的基本上就是[v2ray](https://github.com/v2fly/v2ray-core)或者是[Trojan-Go](https://github.com/p4gefau1t/trojan-go)之类的……不过我想如果说我直接用TLS+Websocket+socks5那不是啥问题都解决了嘛毕竟目前来说无论啥隧道都不如TLS稳当。一开始我想着是自己用Python写一个其实Python也有人写我后来搜了一下有个叫[websocks](https://github.com/abersheeran/websocks)的项目和我的想法有点像不过考虑到还是别重复造轮子了就上网搜了一下结果还真有人用Go写了一个就是今天要讲的[wssocks](https://github.com/genshen/wssocks)。
其实相似的项目好像还挺多,后来我又搜了搜,还有比如[wstunnel](https://github.com/erebe/wstunnel)这个看起来用的是啥Haskell语言我都没听说过和[wsSocks](https://github.com/Mikubill/wsSocks)也都是类似的项目看来大家的想法都差不多另外wssocks貌似还不是专门穿透防火长城用的看介绍好像是他用来穿透他们学校USTB的防火墙用的。
# 使用评测
## 配置
其实这个软件主要吸引我的除了很符合我想要的TLS+Websocket+socks5之外主要是配置简单参数少看起来舒服现在那些乱七八糟的代理软件搞一大堆乱七八糟的功能看半天不知道哪个是干啥的还有就是那个什么原创协议比如vmess我是真搞不明白那原创协议到底有啥用配置也复杂整那么复杂也不过是增加了容易被检测的特征。而且最主要的是无论啥协议最终到客户端不还得用Socks5或者是http代理不如一开始就整Socks5多方便。
wssocks的使用非常简单服务端的话我用的是以下命令
```
./wssocks-linux-amd64 server --addr :10000 --auth --auth_key <YOUR_CONNECTION_KEY> --ws_base_path <YOUR_BASE_PATH>
```
另外在服务器上为了安全起见最好不要用root权限启动毕竟是冷门的项目有可能会有未知的漏洞所以我实际会用以下命令
```
chroot --userspec=99:99 / /wssocks-linux-amd64 server --addr :10000 --auth --auth_key <YOUR_CONNECTION_KEY> --ws_base_path <YOUR_BASE_PATH>
```
为了方便使用Cloudflare其实主要是我这服务器还有别的网站所以配置了一下Nginx参见[wssocks#11](https://github.com/genshen/wssocks/issues/11#issuecomment-669324542)
```
server {
listen 0.0.0.0:443 ssl;
listen [::]:443 ssl;
server_name proxy.example.com;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
client_max_body_size 1024m;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1; # wssocks v0.5.0 require HTTP 1.1 at least
proxy_pass http://127.0.0.1:10000;
}
}
```
设置好Cloudflare解析之后客户端用以下命令连接
```
wssocks-windows-amd64.exe client --addr :10808 --remote wss://proxy.example.com/<YOUR_BASE_PATH>/ --key <YOUR_CONNECTION_KEY>
```
然后就可以用Socks5客户端连接代理并上网了配置真的是很简单也不用那些不太靠谱的一键脚本。另外它也支持HTTP代理这样就算没有Socks5客户端也可以用系统代理倒是挺方便的。不过我因为用的Proxifier所以不用HTTP代理另外我也非常不推荐大家用系统代理因为有的时候有些网站会利用WebRTC协议绕过系统代理获得用户的真实IP当然如果说用梯子单纯只是想上个外网那当我没说毕竟那种人就是直接开着PAC就没打算隐藏自己的IP。
## 效果
我设置了Cloudflare解析之后试着连接了一下连确实能连上网页也勉强能打得开但就是速度极其的慢可能还不到1Mbps的样子而且时不时会丢包。我寻思这个方案按理来说应该是不可能被检测啊难不成Cloudflare一检测到长连接就会被干吗我实在是搞不清另外我也试了试不通过Cloudflare直接走公网IP的效果这个倒是还行和v2ray的速度差不多看来还是线路的问题。
不过我后来又换了一些网络以及在不同时间又测试了一下其实可能只是某些运营商针对Cloudflare我换了网络之后速度还不错另外也可以试试[CloudflareSpeedTest](https://github.com/XIU2/CloudflareSpeedTest)选择更快的节点。
另外其实v2ray可能也有一些优势我后来在同一台服务器上测了v2ray tcp vmess的效果和wssocks比较v2ray速度好像更快些。
# 感想
我用wssocks其实也只是想验证我的一些想法像HTTPS和SSH都是非常常见的协议防火长城不可能在包着一层加密的情况下猜里面走的到底是不是正常的流量我觉得这种事情不难想象吧但是目前用来反检测的代理软件我也不知道他们想干嘛就喜欢整一堆原创协议不知道是想证明什么而且配置也很复杂一堆乱七八糟的配置一般人能用到哪些所以我才怀疑会不会是有人刻意通过设计这堆莫名其妙的东西提高制作代理的成本而且偷偷整点特征就是为了多Ban一些IP这个我是真的不太能理解……
当然也不是说那些代理软件毫无意义这个wssocks性能上还是有点问题我打算回头有时间再试试Trojan-Go。
不过在这次实验看来用什么协议还是什么软件其实不怎么重要这些乱七八糟的软件也就是我们这些自己租的国外主机拿来玩玩真正的机场还是专业都是各种各样的神奇线路像CN2 GIA都是过时的东西现在都流行的是什么IPLC直接就整一个物理上的私有线路那种高级东西我们这种人确实整不来而且自己一个人用也太贵了机场都是通过租给一堆人用来平摊成本的毕竟这种就是边际成本很低的东西也只有机场能搞。
看来,在连接国际网络的路上,除了技术问题,还要警惕可能存在的社工专家。