Ubuntu 16.04系统中代理工具shadowsocks-qt5的使用方法
严正声明:本文仅用于学术研究,不用于其他目的。
对于搞研究的人而言,不能上Google这样的网站,真是一件令人难受的事情。目前网上的代理工具(天下没有免费的午餐,当然要花点小钱了)大多基于Windows系统,对于我这样经常使用Linux系统的人,真是不幸。既然没有轮子,那就自己造一个吧。在开源项目网站GitHub一搜,果然有宝物,这就是“shadowsocks-qt5”。下面结合“shadowsocks-qt5”提供的帮助文档和我自己的实际体会,将Ubuntu 16.04系统中“shadowsocks-qt5”的安装、配置和使用方法分享一二。
一、安装方法
1.通过PPA源安装,仅支持Ubuntu 14.04或更高版本
按快捷键“Ctrl+Alt+T”打开命令终端,执行如下命令:
sudo add-apt-repository ppa:hzwhuang/ss-qt5
sudo apt-get update
sudo apt-get install shadowsocks-qt5
2.使用源代码安装
若要使用源代码安装,请到网址:https://github.com/shadowsocks/shadowsocks-qt5,下载源代码,将其解压到合适的位置后,在终端使用如下命令编译安装:
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
make -j8
sudo make install
二、配置方法
按下键盘上的Super键(带有Windows窗口徽标的那个键)或直接点击桌面左侧工具栏第一个按钮,在弹出的窗口中输入:“shadow”,就会出现程序图标:“Shadowsocks-Qt5”,点击打开该程序,得到界面如下图所示。
点击“连接->添加->手动”菜单,手动填入相关内容(注意服务器地址、服务器端口、密钥等信息需要购买或从他人处获得):
配置项 | 解释 |
---|---|
配置名称 | 「连接」的名称 |
服务器地址 | Shadowsocks服务器的IP地址或者域名 |
服务器端口 | Shadowsocks服务器的端口 |
密钥 | Shadowsocks的加密密钥 |
本地地址 | 本地代理服务器监听IP地址 |
本地端口 | 本地代理服务器监听端口 |
本地服务器类型 | 本地代理服务器的类型 |
加密方式 | Shadowsocks的加密方式 |
一次验证 | 对数据包进行校验以提升CCA安全性(实验性功能,需要最新的shadowsocks-libev服务端) |
超时 | TCP连接的最长空闲时间(秒) |
重置数据流量 | 流量统计中本期的最后一天,超过该天后,本期流量将被重置清零 |
自动化 | 程序启动时自动连接(Shadowsocks-Qt5启动时自动激活该「连接」) |
调试 | 日志打开Debug级别的输出 |
完成后点击“OK”按钮退出配置对话框,点击工具栏中“连接”按钮,连接到代理服务器。如果程序工作不稳定,可以执行菜单命令 “文件 -> 手动保存”将配置文件手动更新。
三、全局代理设置方法
3.1 开启方法
点击桌面右上角的“设置”(齿轮形状图标)按钮,执行“系统设置”菜单命令,在弹出的窗口中点击“网络”,进入网络设置界面,打开“网络代理”页面,前面的http项留空,后面按照下图所示填写。退出后,打开Chrome浏览器,即可以访问Google等网站了。
3.2 关闭方法
点击屏幕右上角的“设置”(齿轮形状图标)按钮,执行“系统设置”菜单命令,在弹出的窗口中点击“网络”,进入网络设置界面,打开“网络代理”页面,按照下图所示选择代理方法:无。退出后,打开Chrome浏览器,就可直接上网。
四、Chrome浏览器使用方法
直接在系统中开启全局代理,有时并不合适,最好还是在浏览器中单独设置代理,下面以常用的Google Chrome浏览器为例进行说明。对于作者使用的Ubuntu 16.04系统而言,Google Chrome浏览器不支持在浏览器中单独设置代理,但可以通过安装插件:“SwitchyOmega”(https://www.switchyomega.com/)的方式加以解决。该插件的安装很简单,参照网页中的方法即可。配置方法参见下图:
4.1 手动代理连接方式:
4.2 自动代理连接方式(图中指定格式的域名直接连接,默认使用代理连接):
五、Firefox浏览器使用方法
Firefox浏览器是Ubuntu 16.04自带的浏览器,它似乎不支持全局代理方式,下面给出其手动设置代理的步骤(如下图所示),注意:一定要勾选“使用SOCK5 v5代理DNS”选项,否则仍然无法正常浏览Google等网页。
六、命令行使用方法
有时我们还需在命令行中通过“wget”等命令访问Google等网站,这时需要单独对命令行的代理进行设置。操作方法如下:
6.1 使用下述命令安装“proxychains”:
sudo apt-get install proxychains
6.2 使用vi或其他编辑器编辑配置文件“/etc/proxychains.conf”,将文件的最后一行修改为如下内容:
sudo vi /etc/proxychains.conf
socks5 127.0.0.1 1080
重启终端或使用如下命令让配置文件生效:
sudo source /etc/proxychains.conf
6.3 通过如下命令,在命令行中使用代理:
# 单次使用
proxychains wget http://www.google.com
# 在整个命令行窗口使用
proxychains bash
执行上述命令时,可能会出现如下错误:
ERROR: ld.so: object 'libproxychains.so.3' from LD_PRELOAD
cannot be preloaded (cannot open shared object file): ignored.
这是因为系统未正确找到动态库文件libproxychains.so.3
造成的,解决办法就是将该动态库的路径添加到系统变量LD_PRELOAD
中。
首先使用如下命令查找动态库libproxychains.so.3
的真实路径:
sudo find / -name libproxychains.so.3
在我机器上的结果为:
find: `/run/user/1000/gvfs': 权限不够
/usr/lib/x86_64-linux-gnu/libproxychains.so.3
接下来将/usr/lib/x86_64-linux-gnu/libproxychains.so.3
添加到系统变量LD_PRELOAD
中:
echo "export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libproxychains.so.3" >> ~/.bashrc && source ~/.bashrc
可以使用如下变量查看系统变量LD_PRELOAD
的新值:
echo ${LD_PRELOAD}
在我机器上的结果为:
/usr/lib/x86_64-linux-gnu/libproxychains.so.3
再次运行proxychains
就不会报错了。
七、将Shadowsocks转化为一个HTTP代理
首先,安装并运行polipo
,通过该工具创建一个端口为8123的HTTP代理服务器,在其内部将HTTP请求转换为Shadowsocks请求:
apt-get install polipo
service polipo stop
polipo socksParentProxy=localhost:1080
拉下来可以在另一个命令行终端中使用此HTTP代理服务器:
http_proxy=http://localhost:8123 sudo apt-get update
https_proxy=http://localhost:8123 curl www.google.com
https_proxy=http://localhost:8123 wget www.google.com