【Python】读取windows代理信息

一、代理信息

【Windows修改代理注册表位置】

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings

【这个表下面有三个值】

  1. ProxyEnable:表示当前电脑是否开启了代理?1:开启、0:关闭
  2. ProxyServer:代理服务器的IP和端口
  3. ProxyOverride:不代理的ip,一般是本地

【注意】

如果电脑从未使用过代理工具,从未设置过代理,则不会有ProxyEnable这个key的

二、API文档

https://docs.python.org/zh-cn/3/library/winreg.html

三、代码实现

复制代码
# coding=utf-8
import winreg
 
 
# 处理代理服务器
 
class ProxyServer:
 
    def __init__(self):
        self.__path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings'
        self.__INTERNET_SETTINGS = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER,
                                                    self.__path, 0, winreg.KEY_ALL_ACCESS)
 
    def get_server_form_Win(self):
        """获取代理配置的ip和端口号"""
        ip, port = "", ""
        if self.is_open_proxy_form_Win():
            try:
                ip, port = winreg.QueryValueEx(self.__INTERNET_SETTINGS, "ProxyServer")[0].split(":")
                print("获取到代理信息:{}:{}".format(ip, port))
            except FileNotFoundError as err:
                print("没有找到代理信息:" + str(err))
            except Exception as err:
                print("有其他报错:" + str(err))
        else:
            print("系统没有开启代理")
        return ip, port
 
    def is_open_proxy_form_Win(self):
        """判断是否开启了代理"""
        try:
            if winreg.QueryValueEx(self.__INTERNET_SETTINGS, "ProxyEnable")[0] == 1:
                return True
        except FileNotFoundError as err:
            print("没有找到代理信息:" + str(err))
        except Exception as err:
            print("有其他报错:" + str(err))
        return False
 
 
if __name__ == '__main__':
    ps = ProxyServer()
    print(ps.get_server_form_Win())
    print(ps.is_open_proxy_form_Win())
复制代码

 

posted @   进击的懒羊  阅读(387)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示