上网浏览时,有时候需要修改IE浏览器的代理,每次打开IE设置麻烦。最近在学习Python所以想利用Python简化操作。
首先是上网搜索资料:
参考一:
使用Python给IE设置代理
复制粘贴代码后:运行结果是config.ini is created, modify config.ini and try again 后来发现原因是没有新建一个config.ini文件
后来找到原因是需要自己忘记漏输入cfg.write(open('config.ini', 'a')) 导致浪费了不少时间
从参考一 中知道,使用pywin32修改注册表的方式进行IE代理的设置,并将配置保存在config.ini文件中
ConfigParser模块
读取: cfg.read('config.ini')
cfg.get('dev', 'ProxyServer')
def check_config():
if not os.path.isfile('config.ini'):
cfg = ConfigParser.ConfigParser()
cfg.add_section('dev')
cfg.set('dev', 'ProxyServer', '192.168.0.6:3128')
cfg.set('dev', 'ProxyOverride', 'localhost;127.0.0.1')
cfg.add_section('prepare')
cfg.set('prepare', 'ProxyServer', '192.168.0.6:3128')
cfg.set('prepare', 'ProxyOverride', 'localhost;127.0.0.1')
cfg.write(open('config.ini', 'a'))
return False
return True
后来的查找过程中发现可以使用自带的_winreg
参考二:
Python模块——_winreg操作注册表
_winreg模块记录
_winreg.OpenKey(key,sub_key,res=0,sam=KEY_READ)
proxy_path = r"Software\Microsoft\Windows\CurrentVersion\Internet Settings"
hKey = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, proxy_path)
_winreg.SetValueEx(key,value_name,reserved,type,value)
该函数用于设置key中对应value_name的type和value
_winreg.SetValueEx (hKey, value_name, 0, value_type, value)
_winreg.QueryValueEx(key,value_name)
该函数用于获取某个key中指定value的data和type,返回类型是tuple
value, type = _winreg.QueryValueEx(hKey, "ProxyEnable")
# -*- coding:UTF-8 -*-
import ctypes
import _winreg
if 1 == ctypes.windll.user32.MessageBoxW( None, u'是否设置代理?', u'代理设置', 1):
proxy = "127.0.0.1:8087"
proxy_path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings'
root = _winreg.HKEY_CURRENT_USER
hKey = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, proxy_path)
value, type = _winreg.QueryValueEx(hKey, "ProxyEnable")
set_proxy = [
[proxy_path, "ProxyEnable", _winreg.REG_DWORD, 1],
(proxy_path, "ProxyServer", _winreg.REG_SZ, proxy),
]
if 1 == ctypes.windll.user32.MessageBoxW( None, u'是否取消代理?', u'代理设置', 1) and value is not 1:
set_proxy[0][3] = 1
for keypath, value_name, value_type, value in set_proxy:
hKey = _winreg.CreateKey(root, keypath)
_winreg.SetValueEx (hKey, value_name, 0, value_type, value)
ctypes.windll.user32.MessageBoxW( None, u'代理设置完成', u'代理设置', 0)
else:
set_proxy[0][3] = 0
for keypath, value_name, value_type, value in set_proxy:
hKey = _winreg.CreateKey(root, keypath)
_winreg.SetValueEx (hKey, value_name, 0, value_type, value)
ctypes.windll.user32.MessageBoxW( None, u'代理取消完成', u'代理设置', 0)
else:
pass