追风筝的人儿

V1

2022/09/29阅读:57主题:绿意

用Python如何改变Windows浏览器代理设置?

Windows将其系统范围内的代理存储在注册表中,在HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings中查找。你可以使用Python _winreg模块来改变它(如果你使用Python 3,则只需要winreg)。下面是一个示例代码

import _winreg as winreg

INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
    r'Software\Microsoft\Windows\CurrentVersion\Internet Settings',
    0, winreg.KEY_ALL_ACCESS)

def set_key(name, value):
    _, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, name)
    winreg.SetValueEx(INTERNET_SETTINGS, name, 0, reg_type, value)

set_key('ProxyEnable', 1)
set_key('ProxyOverride', u'*.local;<local>')  # Bypass the proxy for localhost
set_key('ProxyServer', u'X.X.X.X:8080')

要禁用它,你只需要将ProxyEnable键设置为0。

set_key('ProxyEnable', 0)

脚本运行后,浏览器仍然会在内存中存储旧的代理,所以你需要重新启动它们,以便它们能够从注册表中重新读取新的代理设置。我发现这很烦人,所以我把这个片段转换成了Python。

import ctypes

INTERNET_OPTION_REFRESH = 37
INTERNET_OPTION_SETTINGS_CHANGED = 39

internet_set_option = ctypes.windll.Wininet.InternetSetOptionW

internet_set_option(0, self.INTERNET_OPTION_REFRESH, 0, 0)
internet_set_option(0, self.INTERNET_OPTION_SETTINGS_CHANGED, 0, 0)

这将刷新Windows设置,所以你所要做的就是在浏览器中点击F5,以便它抓住新的代理设置。

参考:

  • https://stackoverflow.com/questions/3050262/change-browser-proxy-settings-from-python
  • https://stackoverflow.com/questions/1201771/how-to-set-proxy-in-windows-with-python

分类:

后端

标签:

Python

作者介绍

追风筝的人儿
V1