当前位置: 首页 > news >正文

【Python】Windows跟随程序启动和关闭系统代理

在这里插入图片描述

前言

在日常使用计算机时,偶尔可能需要配置代理来访问特定的网络资源或进行网络调试。
当在使用mitmproxy 时候,

  • 程序开始前,需要手动打开系统代理;
  • 程序解释后,需要手动关闭系统代理。

这些重复性且没有技术含量工作其实是很冗余且不友好的。
而在 Windows 操作系统中,使用Python编程是很容易去实现在程序启动和关闭时自动配置系统代理。
所以在以前也分享过一篇文章,【Python】通过 Python 设置电脑代理端口
在现在,发现了一个更佳的实现方式,这里做下记录,分享给各位小伙伴!


知识点

模块作用
winproxy通过Python模块函数和命令行编程来实现修改系统代理
atexit程序在退出时的处理器

atexit官方文档:https://docs.python.org/zh-cn/3/library/atexit.html

winproxy 在前面的文章中有做介绍,这里不着重介绍它;
这里主要介绍的是 Python 内置的atexit 模块。


atexit 应用场景

ps:应用场景是网上搬过来的,具体的应用应该根据日常开发中的需要来决定。

在 Python 编程中,我们通常需要确保程序在退出时能够执行一些必要的清理操作,以释放资源或完成其他任务。这就是 atexit 模块发挥作用的地方。以下是 atexit 模块的一些常见应用场景:

  • 资源释放:在程序中打开文件、网络连接或数据库连接等资源时,使用 atexit 来注册清理函数,以确保在程序退出时关闭这些资源,防止资源泄漏。

  • 日志记录:如果程序需要进行详细的日志记录,可以使用 atexit 来注册一个清理函数,以在程序退出时保存或上传日志文件。

  • 临时文件清理:如果程序生成了临时文件,可以使用 atexit 来注册一个清理函数,以在程序退出时删除这些临时文件,以释放磁盘空间。

  • 状态保存:有时需要在程序退出时保存一些状态信息,以便下次程序运行时可以恢复。atexit 可以用于执行状态保存的操作。

  • 子进程或线程管理:如果程序创建了子进程或线程,可以使用 atexit 来注册清理函数,以确保在程序退出时正确终止这些子进程或线程。

  • 网络连接管理:对于涉及网络通信的程序,使用 atexit 来注册清理函数,以在程序退出时关闭网络连接,释放网络资源。

使用

基础使用

在Python中,可以使用atexit模块来注册在程序退出后执行的操作。通过使用atexit模块,可以确保在程序退出时执行特定的操作,以释放资源或完成其他必要的清理工作。

代码释义:
代码定义了一个名为cleanup的清理函数,然后使用atexit.register()方法来注册它。当程序退出时,无论是正常退出还是由于异常退出,都会执行cleanup函数中定义的清理任务。

import atexitdef cleanup():print("Performing cleanup tasks...")# 注册清理函数
atexit.register(cleanup)# 主程序
print("Main program")

程序运行结果如下图所示:
在这里插入图片描述

Python 编程与系统代理配置

在了解atexit的基础使用后,现在来结合winproxy使用。

在这个示例中,使用 winproxy 库来操作 Windows 系统的代理设置。首先定义了 set_proxy 函数,用于设置系统代理。然后,使用 atexit 模块来注册 close_proxy 函数,以确保在程序退出时关闭代理。

部分代码参考我之前分享的一篇文章:【Python】通过 Python 设置电脑代理端口

import atexit
from winproxy import ProxySettingps = ProxySetting()def set_proxy():"""设置系统代理"""ps.enable = Trueps.server = '127.0.0.1:9527'ps.registry_write()print('代理已经打开!')def close_proxy():"""关闭系统代理"""ps.enable = Falseps.registry_write()print('代理已经关闭!')if __name__ == '__main__':# 打开代理set_proxy()# 注册清理函数atexit.register(close_proxy)

总结

通过结合 Python 编程和 atexit 模块,可以实现在程序启动和关闭时自动配置系统代理的功能。
这种方法确保了系统代理的正确使用,同时也展示了 atexit 模块在 Python 编程中的实际应用场景。
不得不说,atexit是个好东西!!!

后话✨✨

本次分享到此结束,
see you~~🐱‍🏍🐱‍🏍

相关文章:

【Python】Windows跟随程序启动和关闭系统代理

前言 在日常使用计算机时,偶尔可能需要配置代理来访问特定的网络资源或进行网络调试。 当在使用mitmproxy 时候, 程序开始前,需要手动打开系统代理;程序解释后,需要手动关闭系统代理。 这些重复性且没有技术含量工作…...

信钰证券:华为汽车概念股持续活跃 圣龙股份斩获12连板

近期,华为轿车概念股在A股商场遭到热捧,多只股票迭创前史新高。10月23日,华为轿车概念股再度走强,到收盘,板块内圣龙股份、银宝山新涨停,轿车ETF在重仓股提振下盘中一度上涨近2%。业界人士认为,…...

LSM Tree 深度解析

我们将深入探讨日志结构合并树,也称为LSM Tree:这是许多高度可扩展的NoSQL分布式键值型数据库的基础数据结构,例如Amazon的DynamoDB、Cassandra和ScyllaDB。这些数据库的设计被认为支持比传统关系数据库更高的写入速率。我们将看到LSM Tree如…...

BurpSuite安装

下载 BurpSuite 下载 Java17 下载后确定版本 java -version获取启动器 密钥生成器 破解 将下载的 BurpSuite、启动器、密钥生成器,放入同一个目录 打开 CMD 进入该目录 启动密钥生成器 java -jar burp-keygen-scz.jar开启新的CMD,进入该目录 启动…...

VB.NET 三层登录系统实战:从设计到部署全流程详解

目录 前言: 什么是三层 为什么要用到三层: 饭店→软件 理解: 过程: 1.三层包图: 2.数据库 3.三层项目 4.用户界面 5.添加引用 代码实现: Entity层 BLL层 DAL层 UI层 总结: 前言: 什么是三层 三层就是把各个功能模块划分为表示层&#…...

【前端性能】性能优化手段-高频面试题

持续更新.............................最近更新2023/10/24 1. 讲一下png8、png16、png32的区别,并简单讲讲 png 的压缩原理 PNG8、PNG16、PNG32 是 PNG 图像格式的不同变种,它们主要区别在于颜色深度和透明度支持的不同。 区别 PNG8: PN…...

cleanmymacX4.14免费版mac清除浏览器缓存软件

当我们使用浏览器访问网站时,浏览器会自动缓存一些数据,比如网页缓存、DNS缓存、插件缓存、SSL证书缓存和Cookie缓存等。虽然有些缓存可以提高浏览器的使用体验,但是缓存过多也会导致一些问题,比如网页更新后浏览器仍然显示旧的内…...

分享个包含各省、市、区的编码数据的在线静态资源脚本

在翻《SpringBootVue3》——十三尼克陈作者的大型前后端分离项目实战里面&#xff0c;在看到地址管理的部分时&#xff0c;发现了该作者记录有一个静态的地址资源脚本 这里做个记录&#xff0c;打点 一、引入js <script src"https://s.yezgea02.com/1641120061385/td…...

Elasticsearch聚合----aggregations的简单使用

文章目录 Getting started1、搜索 address 中包含 mill 的所有人的年龄分布以及平均年龄&#xff0c;但不显示这些人的详情2、size0不展示命中记录&#xff0c;只展示聚合结果3、按照年龄聚合&#xff0c;并且请求这些年龄段的这些人的平均薪资4、查出所有年龄分布&#xff0c;…...

GOPS·2023上海站 | 提前剧透!阿里、腾讯、字节、擎创等专家齐聚上海,共话互联网运维

一、前言 2023年10月26日-27日&#xff0c;第二十一届 GOPS 全球运维大会 2023 上海站即将举行。作为年终前最后一场面向 IT 技术从业者的高端运维盛会。大会上&#xff0c;来自腾讯、阿里、字节跳动、抖音、美团、擎创科技等明星专家&#xff0c;将带来十大互联网行业精彩主…...

防关联浏览器推荐:MuLogin指纹浏览器安全登录多平台账号

在现今的数字时代&#xff0c;我们的生活离不开互联网。我们使用在线平台进行银行交易、购物、社交媒体互动和其他各种活动。为了保护个人隐私和账号安全&#xff0c;我们需要寻找一种安全且方便的方式来管理我们的在线账号。MuLogin指纹浏览器正是为了满足这些需求而设计的一款…...

部署SeaTunnel单节点Standalone 模式环境

1.前置准备: SeaTunnel支持运行在JDK8及以上环境。该步骤需要用户自行安装JDK环境。 2.下载安装包 本次部署使用的是2.3.1版本。如果你需要下载其它版本&#xff0c;可以从如下网址中查询对应的版本。 Apache SeaTunnel ​ mkdir ~/seatunnel cd ~/seatunnelwget https://dl…...

二十三、设计模式之组合模式![

目录 二十三、设计模式之组合模式能帮我们干什么&#xff1f;主要解决什么问题&#xff1f;优缺点优点缺点&#xff1a; 使用的场景理解实现角色组合模式 总结 魔战已经完结。成功登顶。占领敌军最高峰。 二十三、设计模式之组合模式 “组合模式”也被称为“部分整体模式”该…...

hbase和aerospike基础概念及所对应的python包API使用

Hbase Hbase shell常用操作 1.创建表 create table name,column familytable name&#xff1a;表名 column family:列族名 2.查看所有表名称 list3.插入操作 put table name,row1,column family:column name,valuerow1:行键(即Row Key) column family:column name&#xf…...

监测难?误差大?北斗突破铁路监测预警难题,24小时全方位守护

受极端气象和复杂地形地质条件的影响&#xff0c;近年来铁路沿线地质灾害易发频发。为防范化解重大安全风险&#xff0c;提高自然灾害防治能力&#xff0c;国务院决策部署制定了《关于加强铁路自然灾害监测预警工作的指导意见》&#xff0c;强调了利用先进技术和手段开展各类自…...

kafka入门03——简单实战

目录 安装Java 安装Zookeeper 安装Kafka 生产与消费 主要是记录下Kafka的安装配置过程&#xff0c;前置条件需要安装jdk和zookeeper。 安装Java 1.Oracle官网下载对应jdk安装包 官网地址&#xff1a;Java Downloads | Oracle 好人分享了下载需要的oracle账号&#xff0c…...

工作两年,本地git分支达到了惊人的361个,该怎么快速清理呢?

说在前面 不知道大家平时工作的时候会不会需要经常新建git分支来开发新需求呢&#xff1f;在我这边工作的时候&#xff0c;需求都是以issue的形式来进行开发&#xff0c;每个issue新建一个关联的分支来进行开发&#xff0c;这样可以通过issue看到一个需求完整的开发记录&#x…...

行业追踪,2023-10-24

自动复盘 2023-10-24 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…...

【成功实现】CentOS磁盘扩容

对服务器磁盘扩容操作步骤 查看磁盘信息 fdisk -l 创建新分区 fdisk /dev/sda P n p … t 回车 8e w 重启虚拟机 reboot mkfs.ext4 /dev/sda4 查看磁盘信息 fdisk -l 创建物理卷 pvcreate /dev/sda4 y 创建卷组 并绑定物理卷 vgcreate centos /dev/sda4 创建逻辑…...

为什么亚马逊卖家一定要有独立站?新手低成本快速搭建跨境电商独立站完整图文教程

效果展示 翻译助手 一、购买域名 二、购买主机托管 三、搭建独立网站 四、网站装修设计 五、网站迁移 六、补充 前言&#xff1a;为什么亚马逊卖家一定要有独立站&#xff1f; 先来谈谈为什么亚马逊卖家一定得有独立站&#xff0c;从我一些个人经历来看&#xff0c;有独…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...

在Zenodo下载文件 用到googlecolab googledrive

方法&#xff1a;Figshare/Zenodo上的数据/文件下载不下来&#xff1f;尝试利用Google Colab &#xff1a;https://zhuanlan.zhihu.com/p/1898503078782674027 参考&#xff1a; 通过Colab&谷歌云下载Figshare数据&#xff0c;超级实用&#xff01;&#xff01;&#xff0…...

shell脚本质数判断

shell脚本质数判断 shell输入一个正整数,判断是否为质数(素数&#xff09;shell求1-100内的质数shell求给定数组输出其中的质数 shell输入一个正整数,判断是否为质数(素数&#xff09; 思路&#xff1a; 1:1 2:1 2 3:1 2 3 4:1 2 3 4 5:1 2 3 4 5-------> 3:2 4:2 3 5:2 3…...