Python 实现 macOS 系统代理的设置

设置 SOCKS 代理

在 macOS 系统中,可以通过 networksetup 工具来设置 SOCKS 代理。以下是 Python 实现的方法:


使用 networksetup 设置 SOCKS 代理

复制代码

|---|---------------------------------------------------------------------------|
| | import subprocess |
| | |
| | def set_socks_proxy(server, port): |
| | """ |
| | 设置 macOS 系统的 SOCKS 代理。 |
| | :param server: 代理服务器地址 |
| | :param port: 代理端口 |
| | """ |
| | try: |
| | # 设置 SOCKS 代理 |
| | subprocess.run( |
| | ['networksetup', '-setsocksfirewallproxy', 'Wi-Fi', server, str(port)], |
| | check=True |
| | ) |
| | print(f"SOCKS 代理已设置为 {server}:{port}") |
| | except subprocess.CalledProcessError as e: |
| | print(f"设置 SOCKS 代理失败: {e}") |
| | |
| | def disable_socks_proxy(): |
| | """ |
| | 禁用 macOS 系统的 SOCKS 代理。 |
| | """ |
| | try: |
| | # 关闭 SOCKS 代理 |
| | subprocess.run( |
| | ['networksetup', '-setsocksfirewallproxystate', 'Wi-Fi', 'off'], |
| | check=True |
| | ) |
| | print("SOCKS 代理已禁用") |
| | except subprocess.CalledProcessError as e: |
| | print(f"禁用 SOCKS 代理失败: {e}") |
| | |
| | if __name__ == "__main__": |
| | # 设置 SOCKS 代理 |
| | set_socks_proxy('127.0.0.1', 1080) |
| | |
| | # 禁用 SOCKS 代理 |
| | # disable_socks_proxy() |


参数说明

  • networksetup 是 macOS 用于管理网络设置的命令行工具。
    • -setsocksfirewallproxy 用于配置 SOCKS 代理。
    • -setsocksfirewallproxystate 用于启用或禁用 SOCKS 代理。
    • Wi-Fi 是网络服务名称,可能需要根据实际情况调整(例如 Ethernet)。

检查网络服务名称

在执行脚本前,可以通过以下命令查看可用的网络服务名称:

复制代码

|---|----------------------------------------|
| | networksetup -listallnetworkservices |

找到正确的服务名称(如 Wi-FiEthernet),并替换到脚本中。


结果验证

可以通过以下命令验证是否成功设置代理:

复制代码

|---|---------------------------------------------|
| | networksetup -getsocksfirewallproxy Wi-Fi |

输出类似以下内容:

复制代码

|---|----------------------------------|
| | Enabled: Yes |
| | Server: 127.0.0.1 |
| | Port: 1080 |
| | Authenticated Proxy Enabled: 0 |


注意事项

  1. 权限 :某些网络设置可能需要管理员权限。运行脚本时可能需要使用 sudo
  2. 自动化工具 :确保 Python 版本支持 subprocess.run,并在 macOS 环境中运行。
  3. 清理 :在脚本完成后,如果代理设置不再需要,务必调用 disable_socks_proxy() 清除设置。

设置 HTTP 和 HTTPS 代理

复制代码

|---|--------------------------------------------------------------------------------------------------|
| | import subprocess |
| | |
| | def set_web_proxy(server, port): |
| | """ |
| | 设置 macOS 系统代理。 |
| | :param server: 代理服务器地址 |
| | :param port: 代理端口 |
| | """ |
| | # 设置 HTTP 和 HTTPS 代理 |
| | subprocess.run(['networksetup', '-setwebproxy', 'Wi-Fi', server, str(port)], check=True) |
| | subprocess.run(['networksetup', '-setsecurewebproxy', 'Wi-Fi', server, str(port)], check=True) |
| | print(f"HTTP 和 HTTPS 代理设置为 {server}:{port}") |
| | |
| | def disable_web_proxy(): |
| | """ |
| | 禁用 macOS 系统代理。 |
| | """ |
| | # 关闭 HTTP 和 HTTPS 代理 |
| | subprocess.run(['networksetup', '-setwebproxystate', 'Wi-Fi', 'off'], check=True) |
| | subprocess.run(['networksetup', '-setsecurewebproxystate', 'Wi-Fi', 'off'], check=True) |
| | print("HTTP 和 HTTPS 代理已禁用") |
| | |
| | if __name__ == "__main__": |
| | # 设置代理 |
| | set_proxy('127.0.0.1', 1081) |
| | |
| | # 禁用代理 |
| | # disable_web_proxy() |

​ ​

关注灵活就业新业态,关注公账号:贤才宝(贤才宝https://www.51xcbw.com) ​

相关推荐
小江的记录本25 分钟前
【JVM虚拟机】JVM调优:常用JVM参数、调优核心指标、OOM排查、GC日志分析、Arthas工具使用(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
大数据魔法师27 分钟前
Streamlit(十三)- API 参考文档(六)- 媒体展示组件
python·web
爱写代码的倒霉蛋33 分钟前
Hello-Agents的第一个练习-5分钟实现一个智能体(实现详解)
python
金銀銅鐵38 分钟前
[Java] 用图形化界面演示 iadd, isub, iconst_<i> 指令的效果
java·后端·python
春日见1 小时前
五分钟入门 强化学习---DQN(Deep Q Net)算法与实现
人工智能·python·深度学习·算法·microsoft·机器学习
SomeOtherTime1 小时前
Geojson相关(AI回答)
java·前端·python
weelinking1 小时前
【产品】11_实现后端接口——数据在背后如何流动
java·人工智能·python·sql·oracle·json·ai编程
Dxy12393102161 小时前
三种方式避坑:案例 + 解决方法
python·mysql
moMo2 小时前
Python 的 dict 和 set —— 有无value的区别
python
编程探索者小陈2 小时前
接口自动化测试(一)
python·测试