一、代理信息
【Windows修改代理注册表位置】
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
?【这个表下面有三个值】
- ProxyEnable:表示当前电脑是否开启了代理?1:开启、0:关闭
- ProxyServer:代理服务器的IP和端口
- ProxyOverride:不代理的ip,一般是本地
【注意】
如果电脑从未使用过代理工具,从未设置过代理,则不会有ProxyEnable这个key的
二、API文档
winreg --- 访问 Windows 注册表 — Python 3.10.2 文档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())
|