在 ubuntu 下使用 ss 下是不能够使用 PAC 文件进行过滤的。所有的网络请求都会通过 ss 转向服务器,导致有些不必要的网站访问速度过慢。
对于这个问题官方也不想解决,自行查看 github.com 的 issue 717。
为了处理这个问题,现在使用 privoxy 搭配 ss 实现 PAC 文件所实现的功能。
虽然网络上有一些更优雅的方式解决,但是本人未实验成功。我最先使用这个笨方式成功了,能用了,所以我不再尝试其他方式。此处的记录仅为了以后我需要配置时能迅速配置。
整个思路是将所有请求专项 privoxy,由 privoxy 将那些需要转向 ss 的网络请求转向 ss,不需要的网络请求直接发出。
1. 安装 privoxy
自行查找如何安装 privoxy 。
2. 安装 sslocal
sudo apt-get update && sudo apt-get install python-gevent python-pip -y && sudo pip install xxx
配置 config 文件 /etc/ss/config.json 。
在启动 sslocal 的时候会报错,因为这都是 python 代码,能够直接看到源码,也无需编译,所以很容易解决。搜索可以找到答案。就是把出错文件中的 libcrypto 失效的变量 EVP_CIPHER_CTX_cleanup 改成 EVP_CIPHER_CTX_reset 。
3. 获得 pac 文件
sudo pip install genpac
sudo genpac --proxy="SOCKS5 127.0.0.1:1080" -o autoproxy.pac --gfwlis