- 作者:
- 分类:知识&开发->OS->Linux基本
- 阅读:8869
- 点赞:10
- 版权:CC BY-SA 4.0
- 创建:2019-10-13
- 更新:2020-05-28
linux PAC 自动代理 规则设置及无法使用解决
版权声明:本文为 neucrack 的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接(持续更新):https://neucrack.com/p/80
原文链接(持续更新):https://neucrack.com/p/80
背景
window和mac下的ss都有PAC功能,但linux下的GUI程序ss-qt5软件中却没有设置pac的功能,作者说没有时间做,当然也没有人去帮忙更新。所以只能手动设置系统PAC
所以很多同学使用ss-qt5时,使用系统的代理功能(设置—>网络—>代理设置),然后在浏览器用proxy插件来设置规则,虽然可用,但在浏览器中使用插件很麻烦,而且这样只对浏览器生效;
也可以使用系统的全局代理功能(即选择手动),但使用国外的代理地址代理过后访问国内的很慢;
所以最佳方法当然是使用系统的自动代理功能,这个功能要求输入一个URL,这个URL就是代理规则的文件,怎么来呢,用pac规则自动生成工具就行了,或者自己编写O(∩_∩)O哈哈~,下面用自动生成工具制作工具(直接使用现成的PAC文件见文章末尾)
生成PAC文件有以下两个工具:
这里使用第一个
使用genpac生成PAC文件步骤
- 安装genpac
- 命令行生成pac文件,需要使用一个被墙地址列表:
https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
genpac --pac-proxy="SOCKS5 127.0.0.1:1080" --gfwlist-proxy="SOCKS5 127.0.0.1:1080" -o autoproxy.pac --gfwlist-url="https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt"
- 设置系统自动代理,在设置—>网络设置—>代理设置中选择自动代理,URL填写生成的PAC文件地址,file://文件路径/文件名(可以直接把文件拖到URL栏)
如果懒得自己生成的话,用我已经生成了的
- 下载PAC文件 (根据需要改一下端口)
- 设置系统自动代理,在设置—>网络设置—>代理设置中选择自动代理,URL填写生成的PAC文件地址,file://文件路径/文件名(可以直接把文件拖到URL栏),可能某些系统是
file:///..../....pac
,可以把文件拖到浏览器看地址
无法使用的问题
在 Ubuntu18.04 及以上版本, 像上面使用本地文件可能无法使用, 需要使用web
链接, 所以可以自己在本地搭一个web
服务或者用别人在线的pac
文件,
- 比如如果你本地用的
1088
端口,可以用这个:
https://raw.githubusercontent.com/Neutree/note/master/tool/pac/autoproxy_socks5_1088.pac
或者自己在本地或者远程服务器使用
Nginx
或Apache
服务这个pac
文件
具体搭建方法请自行搜索, 比如Nginx
安装后会自动生成/var/www/html
文件夹,把文件放到这下面就能通过http://127.0.0.1/文件名
访问了又或者用
Python
+Flask
搭建一个简单的web
服务, 然后填http://127.0.0.1:6789/proxy.pac
:
from flask import Flask, request, send_file
import os
app = Flask(__name__)
@app.route("/proxy.pac")
def proxy_pac():
return send_file(os.path.join(os.path.dirname(__file__), "proxy.pac"), mimetype="application/x-ns-proxy-autoconfig")
@app.route("/")
def index():
return "hello"
if __name__ == "__main__":
app.run("0.0.0.0", 6789)
然后运行
pip3 install flask
python3 proxy_pac_server.py