Python PAC代理服务

5,062 阅读2分钟

MedusaSorcerer的博客


✏️ ️1. P A C

PAC(Proxy auto-config) 意为代理自动配置服务, 主要是通过 Javascript 的文件解析你的域名信息来进行KX(科学)上网, 特点:

  • 匹配响应速度块
  • 可自定义需要代理的域名
  • 可自定义需要代理的域名
  • 拒绝访问的服务可绕过代理, 降低资源消耗以及加快响应
  • 还可以根据所请求的网站的主机/用户的IP地址/日期和时间等可获取的数据信息进行代理配置
function FindProxyForURL(url, host) {
    url = url.toLowerCase();
    host = host.toLowerCase();

    if (
        shExpMatch(url, "*youtube*") ||
        shExpMatch(url, "*google*")) {
        return "PROXY proxy_server";
    }
    return "DIRECT";
}

在上述 PAC 文件中定义了以下规则:

  • 请求地址包含 youtube 或者 google 的数据将使用代理
  • 其余的都不使用代理

注意:

  • HTTPS 请求默认会使用代理转发
  • HTTP 请求默认使用代理转发
  • 你需要将 proxy_server 替换成你的代理服务器地址字符串, 如 "127.0.0.1:9000"
  • 保存的文件你可以使用 file:/// 的本地方式作为代理 PAC 路径配置
  • 你也可以作为服务器文件返回的方式

✏️ 2. F l a s k

#!/usr/bin/env python
# _*_ Coding: UTF-8 _*_

from flask import Flask, send_file

app = Flask(__name__, template_folder='./', static_folder="", static_url_path="")


@app.route('/')
def index():
    return send_file(r'./pac.js')


if __name__ == '__main__':
    host = '0.0.0.0'
    port = 2345
    debug = False
    app.run(debug=debug, host=host, port=port)

当然, 你可能需要在同一目录保存一个 pac.js 的 PAC 文件, 当你启动后你就可以使用服务地址配置 PAC 代理了。

✏️ 3. w i n d o w s

我们可以在 windows 下使用改 PAC 代理服务:

  • 使用 win 召唤出开始菜单
  • 输入 代理
  • 选择 代理服务器设置
  • 自动设置代理 选项栏里将 使用脚本 打开, 并输入 PAC 服务地址在 脚本地址

至此配置完成, 你可以使用 PAC KX(科学)上网了。