PAC 分流配置文件使用指南
文章目录什么是 PAC 文件举个例子需要准备的文件1. 主程序agent-pac.py2. 代理规则文件proxy.pac如何启动服务第一步准备文件第二步修改配置第三步启动服务第四步检查是否启动成功常用操作命令启动服务查看运行状态停止服务测试服务客户端如何使用Windows 电脑设置Mac 电脑设置手机设置iPhone/AndroidChrome 浏览器设置Firefox 浏览器设置整体业务流程详细流程图使用场景场景 1公司办公场景 2家里上网场景 3开发测试常见问题Q1服务启动失败提示端口被占用Q2客户端获取不到 PAC 文件Q3修改了 proxy.pac 为什么不生效Q4如何添加新的网站规则Q5如何停止后台服务快速参考文件清单启动命令检查命令客户端配置地址什么是 PAC 文件PACProxy Auto-Config文件是一个简单的文本文件告诉浏览器访问哪些网站走代理哪些网站直接连接。举个例子访问百度、淘宝 → 直接连接速度快访问 Google、YouTube → 走代理服务器能访问这样就不需要手动切换代理全部自动完成需要准备的文件1. 主程序agent-pac.py# Created by johnny on 20240412importosimporthttp.serverimportsocketserver PORT22222PACFILE_NAMEproxy.pacdefprepare_pac():dir_pathos.path.dirname(os.path.abspath(__file__))pacfile_pathos.path.join(dir_path,PACFILE_NAME)try:withopen(pacfile_path,rb)asf:returnf.read()exceptFileNotFoundError:print(fFile{pacfile_path}not found.)returnNoneclassPacRequestHandler(http.server.SimpleHTTPRequestHandler):defdo_GET(self):ifself.path/PACFILE_NAME:pac_contentprepare_pac()ifpac_contentisNone:self.send_error(404)returnself.send_response(200)self.send_header(Content-type,application/x-ns-proxy-autoconfig)self.end_headers()self.wfile.write(pac_content)else:self.send_error(404)classThreadingTCPServer(socketserver.ThreadingTCPServer):allow_reuse_addressTruedefmain():HandlerPacRequestHandlerwithThreadingTCPServer((10.11.12.222,PORT),Handler)ashttpd:print(Serving PAC file on port,PORT)try:httpd.serve_forever()exceptKeyboardInterrupt:print(Shutting down server...)httpd.shutdown()if__name____main__:main()2. 代理规则文件proxy.pac在同一个文件夹下创建proxy.pac文件内容如下functionFindProxyForURL(url,host){// 1. 公司内部网站直接访问if(dnsDomainIs(host,.company.com)||shExpMatch(host,*.local)){returnDIRECT;}// 2. 国内网站直接访问if(shExpMatch(host,*.baidu.com)||shExpMatch(host,*.taobao.com)||shExpMatch(host,*.cn)){returnDIRECT;}// 3. 国外网站走代理if(shExpMatch(host,*.google.com)||shExpMatch(host,*.youtube.com)){returnPROXY 10.11.12.222:8080;}// 4. 其他的默认直连returnDIRECT;}说明DIRECT 直接连接不走代理PROXY 10.11.12.222:8080 走代理服务器请改成你的代理地址可以添加更多网站规则如何启动服务第一步准备文件把下面两个文件放在同一个文件夹里/opt/pac-server/ ├── agent-pac.py # 主程序 └── proxy.pac # 代理规则第二步修改配置用记事本打开agent-pac.py找到这一行withThreadingTCPServer((10.11.12.222,PORT),Handler)ashttpd:把10.11.12.222改成你电脑的实际 IP 地址。第三步启动服务在终端里执行命令nohuppython3 agent-pac.py命令说明nohup让程序在后台运行关掉终端也不会停止表示后台运行第四步检查是否启动成功netstat-tnpl|grep22222如果看到类似这样的输出说明启动成功了tcp 0 0 10.11.12.222:22222 0.0.0.0:* LISTEN 12345/python3常用操作命令启动服务# 后台启动推荐nohuppython3 agent-pac.py# 后台启动并记录日志到指定文件nohuppython3 agent-pac.pypac.log21查看运行状态# 查看服务是否在运行netstat-tnpl|grep22222# 查看进程psaux|grepagent-pac# 查看日志tail-f nohup.out停止服务# 查找进程号并停止psaux|grepagent-packill进程号# 或者一键停止pkill-f agent-pac.py测试服务# 在服务器上测试curlhttp://10.11.12.222:22222/proxy.pac# 在其他电脑上测试确保网络连通curlhttp://10.11.12.222:22222/proxy.pac客户端如何使用Windows 电脑设置打开设置→网络和 Internet→代理打开使用设置脚本填入地址http://10.11.12.222:22222/proxy.pac点击保存Mac 电脑设置打开系统偏好设置→网络选择当前网络点击高级→代理勾选自动代理配置填入地址http://10.11.12.222:22222/proxy.pac点击好→应用手机设置iPhone/Android进入Wi-Fi 设置点击当前 Wi-Fi 后面的ⓘ或修改找到代理设置选择自动填入地址http://10.11.12.222:22222/proxy.pac保存Chrome 浏览器设置Chrome 使用系统代理设置好系统代理即可。也可以用命令行启动chrome.exe --proxy-pac-urlhttp://10.11.12.222:22222/proxy.pacFirefox 浏览器设置打开设置 → 网络设置选择自动代理配置 URL填入http://10.11.12.222:22222/proxy.pac确定整体业务流程1.获取配置返回规则2.访问百度3.访问Google你的电脑/手机PAC服务器直接连接代理服务器Google网站详细流程图目标网站代理服务器PAC服务器用户浏览器目标网站代理服务器PAC服务器用户浏览器用户访问 www.baidu.com用户访问 www.google.com请求http://10.11.12.222:22222/proxy.pac读取 proxy.pac 文件返回代理规则检查规则直连直接访问检查规则走代理通过代理访问转发请求返回内容返回内容使用场景场景 1公司办公问题公司内部系统和外部网站都要访问手动切换代理很麻烦。解决// 公司内网直接访问if(dnsDomainIs(host,.company.com)){returnDIRECT;}// 外网走公司代理returnPROXY company-proxy.com:8080;场景 2家里上网问题想自动区分国内网站和国外网站国内直连国外走代理。解决// 国内网站直连if(shExpMatch(host,*.baidu.com)||shExpMatch(host,*.cn)){returnDIRECT;}// 其他走代理访问国外网站returnPROXY 你的代理服务器:端口;场景 3开发测试问题开发和生产环境用不同的代理。解决if(shExpMatch(host,*.test.com)){returnPROXY test-proxy:8080;}if(shExpMatch(host,*.prod.com)){returnPROXY prod-proxy:8080;}常见问题Q1服务启动失败提示端口被占用解决# 查看谁占用了 22222 端口netstat-tlnp|grep22222# 杀掉占用进程kill进程号# 或者修改端口修改 agent-pac.py 里的 PORT 22222Q2客户端获取不到 PAC 文件排查服务器上测试curl http://localhost:22222/proxy.pac其他电脑 ping 服务器ping 10.11.12.222检查防火墙是否放行 22222 端口Q3修改了 proxy.pac 为什么不生效原因浏览器会缓存 PAC 文件。解决重启浏览器Chrome 访问chrome://net-internals/#proxy点击重新加载Q4如何添加新的网站规则方法编辑proxy.pac文件添加新的规则保存即可。示例// 让 GitHub 走代理if(shExpMatch(host,*.github.com)){returnPROXY 10.11.12.222:8080;}Q5如何停止后台服务# 查找进程psaux|grepagent-pac# 你会看到类似这样的输出# root 12345 0.0 0.1 ... python3 agent-pac.py# 停止进程12345 是进程号kill12345快速参考文件清单agent-pac.py # 主程序启动服务 proxy.pac # 代理规则定义哪些网站走代理启动命令cd/opt/pac-servernohuppython3 agent-pac.py检查命令netstat-tnpl|grep22222客户端配置地址http://10.11.12.222:22222/proxy.pac请把 IP 改成你的实际服务器 IP

相关新闻

EasyX:从入门到入土

EasyX:从入门到入土

◆博主名称:少司府 欢迎来到少司府的博客☆*: .。. o(≧▽≦)o .。.:*☆ ⭐数据结构系列个人专栏: 初阶数据结构_少司府的博客-CSDN博客 ⭐编程基础训练系列个人专栏: 编程基础50题_少司府的博客-CSDN博客 ⭐那些看…

2026/5/17 3:34:18 阅读更多 →
【论文阅读:TPAMI_2025 基于对抗特征提取和稳定图像重建的红外与可见光图像融合】

【论文阅读:TPAMI_2025 基于对抗特征提取和稳定图像重建的红外与可见光图像融合】

【论文阅读:TPAMI_2025 基于对抗特征提取和稳定图像重建的红外与可见光图像融合】作者 苏伟健,黄永东,李秋福,左凤媛,刘立军摘要 由于训练数据和测试数据之间的差异,基于自编码器的图像融合方法在使用自然图像训练时容…

2026/7/5 10:22:15 阅读更多 →
传统理赔周期冗长,富卫保险智能核保能否终结等待焦虑?

传统理赔周期冗长,富卫保险智能核保能否终结等待焦虑?

传统理赔周期冗长,富卫保险智能核保能否终结等待焦虑? 在保险行业,传统理赔流程平均耗时3-7个工作日,小额案件处理周期也需15天左右,漫长的等待让客户备受煎熬。富卫保险凭借数字化革新,推出全流程智能核保…

2026/7/6 1:35:45 阅读更多 →

最新新闻

M3u8Downloader_H未来路线图:即将推出的新功能与改进计划

M3u8Downloader_H未来路线图:即将推出的新功能与改进计划

M3u8Downloader_H未来路线图:即将推出的新功能与改进计划 【免费下载链接】M3u8Downloader_H m3u8下载器,功能强大,多线程,多任务,支持aes-128-cbc解密,自定义请求头,自定义插件 项目地址: https://gitcode.com/gh_mirrors/m3/M3u8Downloader_H M3u8Download…

2026/7/6 18:15:59 阅读更多 →
Notepad--:一款真正为中文用户打造的跨平台文本编辑器,5分钟上手指南

Notepad--:一款真正为中文用户打造的跨平台文本编辑器,5分钟上手指南

Notepad--:一款真正为中文用户打造的跨平台文本编辑器,5分钟上手指南 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。 项目地址: https://gitcode.com/GitHub_Trendi…

2026/7/6 18:13:58 阅读更多 →
Encog多线程训练指南:充分利用多核CPU加速机器学习

Encog多线程训练指南:充分利用多核CPU加速机器学习

Encog多线程训练指南:充分利用多核CPU加速机器学习 【免费下载链接】encog-java-core 项目地址: https://gitcode.com/gh_mirrors/en/encog-java-core 在当今的机器学习应用中,训练时间往往成为瓶颈。Encog机器学习框架提供了强大的多线程训练功…

2026/7/6 18:11:56 阅读更多 →
如何构建完全自主掌控的AI知识库?开源方案让数据隐私与智能分析兼得

如何构建完全自主掌控的AI知识库?开源方案让数据隐私与智能分析兼得

如何构建完全自主掌控的AI知识库?开源方案让数据隐私与智能分析兼得 【免费下载链接】open-notebook An Open Source implementation of Notebook LM with more flexibility and features 项目地址: https://gitcode.com/GitHub_Trending/op/open-notebook 在…

2026/7/6 18:11:56 阅读更多 →
git-peek未来路线图:社区反馈与功能规划展望

git-peek未来路线图:社区反馈与功能规划展望

git-peek未来路线图:社区反馈与功能规划展望 【免费下载链接】git-peek git repo to local editor instantly 项目地址: https://gitcode.com/gh_mirrors/gi/git-peek 想要快速预览远程Git仓库代码?git-peek工具为您提供了终极解决方案&#xff0…

2026/7/6 18:11:56 阅读更多 →
date-io核心原理:为什么它能成为日期库的万能适配器?

date-io核心原理:为什么它能成为日期库的万能适配器?

date-io核心原理:为什么它能成为日期库的万能适配器? 【免费下载链接】date-io Abstraction over common javascript date management libraries 项目地址: https://gitcode.com/gh_mirrors/da/date-io date-io是一个针对JavaScript日期管理库的…

2026/7/6 18:05:50 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻