-
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-Fi 或 Ethernet),并替换到脚本中。
结果验证
可以通过以下命令验证是否成功设置代理:
networksetup -getsocksfirewallproxy Wi-Fi
输出类似以下内容:
Enabled: Yes
Server: 127.0.0.1
Port: 1080
Authenticated Proxy Enabled: 0
注意事项
权限:某些网络设置可能需要管理员权限。运行脚本时可能需要使用 sudo。
自动化工具:确保 Python 版本支持 subprocess.run,并在 macOS 环境中运行。
清理:在脚本完成后,如果代理设置不再需要,务必调用 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.cnblogs.com/yuzhihui/p/18686317
栏目列表
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
开启SQLSERVER数据库缓存依赖优化网站性能
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比