廠里上個網需要設置代理服務器,切換各種環境『包括但不僅限于開發環境、QA、預上線、驗收、生產環境、壓力測試、Demo……』都需要給瀏覽器設置不同的代理服務器。
雖然俺有神器Firefox+Change Host+HostAdmin+Proxy Selector的組合來輕松切換Host,切換瀏覽器代理,但是…凡是就怕『但是』。
但是碰到一些IE才有的bug時候不得不換瀏覽器啊!!還要開虛擬機進去搞IE6、IE8、360、搜狗這些奇葩瀏覽器啊!!!
有同事建議搞個bat腳本來做這些,但沒人肯動手……而且bat能不能實現先不說,重點是咱不熟啊。
搞個C#寫個winform或者console控制臺還需要.NET framework不是,虛擬機裝個.NET framework4.0又要很多時間『而且不同的snapshot都要裝一遍…』
最最重要的,好久不寫文章了不是,咱不想在博客里寫C#相關的東西不是。所以,操刀Python寫幾行代碼和廠里兄弟們顯擺一下『人生苦短,我用Python』的好處。
具體實現步驟如下:
安裝pywin32、WMI支持。具體下載地址Google一下,因為我的是32位python2.7系列,下載到的文件名分別為(pywin32-218.win32-py2.7.exe、WMI-1.4.7.win32.exe)
開搞。
首先,我們查資料知道,IE瀏覽器的代理內容在注冊表中『HKEYCURRENTUSER/Software/Microsoft/Windows/CurrentVersion/Internet Settings』這里存著,所以我們理論上只要修改這里相關的鍵值就可以切換IE代理。
所以,第一個函數就是修改注冊表鍵值:
def changeIEProxy(keyName, keyValue): pathInReg = 'Software/Microsoft/Windows/CurrentVersion/Internet Settings' key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,pathInReg, 0, win32con.KEY_ALL_ACCESS) win32api.RegSetValueEx(key, keyName, 0, win32con.REG_SZ, keyValue) win32api.RegCloseKey(key)
因此段代碼中用到了pywin32的的東西,所以在文件最開頭需要做import win32api, win32con,引入相關的class
修改系統注冊表的函數其實就這么幾行…當然,因為我廠必須通過代理服務器上網,所以修改系統注冊表的鍵值類型我只用到了REG_SZ這一種,實際其他情況還會有REG_DWORD啊等等類型。
然后咱需要一個配置文件,來保存各種場景『QA啊開發環境啊』的不同的配置信息,這時候我使用的配置文件為ini格式,用Python自帶的ConfigParser就可以解析此種文件格式。
沒有采用以往我最熟悉的XML或者json純粹為了裝x,xml和json總覺著是web上用的東西,ini看起來比較像一個.exe比較常用的配置文件格式。
也因為以前沒用過ini格式的配置文件,這次權當又學會一種Python的玩法而已。
所以讀取ini配置文件的代碼為:
config = ConfigParser.ConfigParser()config.read('config.ini')if config.has_section(_section): _ProxyServer = config.get(_section, 'ProxyServer') _ProxyOverride = config.get(_section, 'ProxyOverride')
|
新聞熱點
疑難解答