1. 程式人生 > >Python 實現windows下自動切換代理IP

Python 實現windows下自動切換代理IP

簡介:利用python實現windows下“開啟代理”和“關閉代理”切換

原理:通過修改登錄檔 "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" 下的子項,能夠設定IE代理,然後通過代理可以上網或做其它事情。基於該原理通過python指令碼呼叫winreg模組來訪問和操作登錄檔,達到自動切換代理的目的

import winreg

#########################################################################
KEY_ProxyEnable = "ProxyEnable"
KEY_ProxyServer = "ProxyServer"
KEY_ProxyOverride = "ProxyOverride"
KEY_XPATH = "Software\Microsoft\Windows\CurrentVersion\Internet Settings"
#########################################################################

'''
設定代理
  enable: 0關閉,1開啟
  proxyIp: 代理伺服器ip及埠,如 "192.168.70.127:808"
  IgnoreIp:忽略代理的ip或網址,如 "172.*;192.*;"
'''
def SetProxy(enable, proxyIp, IgnoreIp):
    hKey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, KEY_XPATH, 0, winreg.KEY_WRITE)
    winreg.SetValueEx(hKey, KEY_ProxyEnable, 0, winreg.REG_DWORD, enable)
    winreg.SetValueEx(hKey, KEY_ProxyServer, 0, winreg.REG_SZ, proxyIp)
    winreg.SetValueEx(hKey, KEY_ProxyOverride, 0, winreg.REG_SZ, IgnoreIp)
    winreg.CloseKey(hKey)

# 獲取當前代理狀態
def GetProxyStatus():
    hKey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, KEY_XPATH, 0, winreg.KEY_READ)
    retVal = winreg.QueryValueEx(hKey, KEY_ProxyEnable)
    winreg.CloseKey(hKey)
    return retVal[0]==1

def main():
    if GetProxyStatus():
        SetProxy(0, "", "")
        print("關閉代理")
    else:
        SetProxy(1, "192.168.70.127:808", "172.*;192.*;")
        print("開啟代理")

if __name__ == '__main__':
    main()