首页 > 编程语言 >Python 实现 macOS 系统代理的设置

Python 实现 macOS 系统代理的设置

时间:2025-01-22 16:46:18浏览次数:1  
标签:macOS Python 代理 SOCKS subprocess 设置 networksetup

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()

标签:macOS,Python,代理,SOCKS,subprocess,设置,networksetup
From: https://www.cnblogs.com/yuzhihui/p/18686317

相关文章

  • Python基础5-装饰器与推导式
    1.装饰器1.1引入装饰器的代码v=1v=2deffunc():passv=10v=fun#变量v指向了函数funcdefbase():print(1)defbar():print(2)bar=basebar()deffunc():definner():passreturninnerv=func()print(v)#inner函......
  • python操作mysql
    前言在Python3中,我们可以使用mysqlclient或者pymysql三方库来接入MySQL数据库并实现数据持久化操作。二者的用法完全相同,只是导入的模块名不一样。我们推荐大家使用纯Python的三方库pymysql,因为它更容易安装成功。下面我们仍然以之前创建的名为hrs的数据库为例,为大家......
  • 【Python】函数(一)
    函数是什么?编程中的函数和数学中的函数有一定的相似之处.数学上的函数,比如y=sinx,x取不同的值,y就会得到不同的结果.编程中的函数,是一段可以被重复使用的代码片段代码示例:求数列的和,不使用函数#1.求1-100的和sum=0foriinrange(1,101):......
  • 如何在Python中高效地读写大型文件?
    大家好,我是V哥。上一篇给大家介绍如何使用Python进行文件读写操作的方法,问题来了,如何读写的是大型文件,有没有什么方法来提高效率呢,不要捉急,这一篇来聊聊如何在Python中高效地读写大型文件。以下是在Python中高效读写大型文件的一些方法:一、逐行读取大型文件:defread_larg......
  • Python和Python 3 的区别
    Python和Python3都是非常流行的编程语言,在开发中都有各自的优点和特点。以下是其中一些值得注意的区别:代码兼容性:Python2.x和Python3.x不兼容,这是最重要的区别之一。Python2.x是早期版本,而Python3.x是重大更新后的版本,并且不完全向后兼容。这意味着在迁移过程中,需......
  • Python多继承时子类如何调用指定父类
    在Python中,多继承是一种强大的特性,允许一个类同时继承多个父类的属性和方法。然而,当多个父类中存在同名方法时,子类需要明确调用哪个父类的方法。本文将详细介绍如何在多继承情况下,子类调用指定父类的方法。一、多继承的基本概念1.1多继承的定义多继承指一个类可以继承多个父类......
  • 抽取网易云音乐热门评论:html+css+python+js 音乐与灵魂的碰撞
    抽取网易云音乐热门评论:html+css+python+js音乐与灵魂的碰撞代码链接不说废话,上代码!!!get.py#get.pyimporturllib.requestimporturllib.errorimporturllib.parseimportjson#抓取网易云音乐指定url的热评defget_hotComments(id):url='https://music.163.......
  • 6. 马科维茨资产组合模型+AI金融智能体(DeepSeek-V3)识别政策意图方案(理论+Python实战
    目录0.承前1.幻方量化&DeepSeek1.1Whatis幻方量化1.2WhatisDeepSeek2.重写AI金融智能体函数3.汇总代码4.反思4.1不足之处4.2提升思路5.启后0.承前本篇博文是对上一篇文章,链接:5.马科维茨资产组合模型+AI金融智能体(qwen-max)+政策信息优化方案......
  • 抽取网易云音乐热门评论(附代码):html+css+python+js 音乐与灵魂的碰撞
    抽取网易云音乐热门评论:html+css+python+js音乐与灵魂的碰撞代码链接不说废话,上代码!!!get.py#get.pyimporturllib.requestimporturllib.errorimporturllib.parseimportjson#抓取网易云音乐指定url的热评defget_hotComments(id):url='https://musi......
  • python 读取word、pdf文件内容
    importdocx2txtimportfitzimportdocxfromdocx.oxmlimportparse_xmldefget_doc_content(filepath):"""获取word文本内容"""try:doc=docx.Document(filepath)content=[]forelementindoc.elem......