关于 Python-TK 小程序的 PAC 自动化问题

3,080 阅读1分钟

MedusaSorcerer的博客


问题追溯

开发需求中, 要求使用 TK 打包小程序配置代理服务, 此时我的设想架构如下:

  1. TK 小程序请求/修改对应 PAC 文件
  2. 后端服务返回/修改对应 PAC 文件并保存
  3. TK 小程序将请求 API 修改至电脑主机配置项中

了解相关 PAC 文件, 请点击这里

此时你需要构建以下代码:

  • 后端 PAC 文件管理/返回服务器
  • TK 小程序
    • PAC 黑白名单修改/展示功能
    • 修改本地电脑主机逻辑代码
    • Proxy 代理服务

当你可以使用 TK 撰写并保存 PAC 文件的时候就成功了一大部分, 而这篇博文主要是实现自动化的问题:

  • 自动识别并保存修改的最新内容
  • 自动关闭代理服务
  • 自动修改 windows 电脑 PAC 配置

windows shell 纪要

将这个命令行数据放在纪要信息栏中:

  • 修改 PAC 地址在 windows 本机配置中(将 http://medusasorcerer.com 替换成你的 PAC 文件地址):
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL /t REG_DWORF /d "http://medusasorcerer.com" /f
    
  • 清除(在电脑中表现为关闭) PAC 代理配置
    reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL /f
    

代码逻辑摘要

  • TK 程序需要重写继承基类 Tkinter, 需要在调用关闭程序的方法 destroy() 中关闭 PAC 配置
  • 在使用线程进行 Hash 判断不对等时, 需要修改 PAC 代理内容, 此时先调度关闭电脑本机的服务配置, 再重新输入代理地址, 才能有效
  • 在使用 TK 小程序的时候优先将获取的 PAC 地址填写进主机代理配置中

后记

在 PAC 的注册表修改中对应 windows 界面是: