用Python編寫(xiě)腳本使IE實(shí)現(xiàn)代理上網(wǎng)的教程
廠里上個(gè)網(wǎng)需要設(shè)置代理服務(wù)器,切換各種環(huán)境『包括但不僅限于開(kāi)發(fā)環(huán)境、QA、預(yù)上線、驗(yàn)收、生產(chǎn)環(huán)境、壓力測(cè)試、Demo……』都需要給瀏覽器設(shè)置不同的代理服務(wù)器。
雖然俺有神器Firefox+Change Host+HostAdmin+Proxy Selector的組合來(lái)輕松切換Host,切換瀏覽器代理,但是…凡是就怕『但是』。
但是碰到一些IE才有的bug時(shí)候不得不換瀏覽器啊!!還要開(kāi)虛擬機(jī)進(jìn)去搞IE6、IE8、360、搜狗這些奇葩瀏覽器啊!!!
有同事建議搞個(gè)bat腳本來(lái)做這些,但沒(méi)人肯動(dòng)手……而且bat能不能實(shí)現(xiàn)先不說(shuō),重點(diǎn)是咱不熟啊。
搞個(gè)C#寫(xiě)個(gè)winform或者console控制臺(tái)還需要.NET framework不是,虛擬機(jī)裝個(gè).NET framework4.0又要很多時(shí)間『而且不同的snapshot都要裝一遍…』
最最重要的,好久不寫(xiě)文章了不是,咱不想在博客里寫(xiě)C#相關(guān)的東西不是。所以,操刀Python寫(xiě)幾行代碼和廠里兄弟們顯擺一下『人生苦短,我用Python』的好處。
具體實(shí)現(xiàn)步驟如下:
安裝pywin32、WMI支持。具體下載地址Google一下,因?yàn)槲业氖?2位python2.7系列,下載到的文件名分別為(pywin32-218.win32-py2.7.exe、WMI-1.4.7.win32.exe)
開(kāi)搞。
首先,我們查資料知道,IE瀏覽器的代理內(nèi)容在注冊(cè)表中『HKEYCURRENTUSERSoftwareMicrosoftWindowsCurrentVersionInternet Settings』這里存著,所以我們理論上只要修改這里相關(guān)的鍵值就可以切換IE代理。
所以,第一個(gè)函數(shù)就是修改注冊(cè)表鍵值:
因此段代碼中用到了pywin32的的東西,所以在文件最開(kāi)頭需要做import win32api, win32con,引入相關(guān)的class
修改系統(tǒng)注冊(cè)表的函數(shù)其實(shí)就這么幾行…當(dāng)然,因?yàn)槲覐S必須通過(guò)代理服務(wù)器上網(wǎng),所以修改系統(tǒng)注冊(cè)表的鍵值類型我只用到了REG_SZ這一種,實(shí)際其他情況還會(huì)有REG_DWORD啊等等類型。
然后咱需要一個(gè)配置文件,來(lái)保存各種場(chǎng)景『QA啊開(kāi)發(fā)環(huán)境啊』的不同的配置信息,這時(shí)候我使用的配置文件為ini格式,用Python自帶的ConfigParser就可以解析此種文件格式。
沒(méi)有采用以往我最熟悉的XML或者json純粹為了裝x,xml和json總覺(jué)著是web上用的東西,ini看起來(lái)比較像一個(gè).exe比較常用的配置文件格式。
也因?yàn)橐郧皼](méi)用過(guò)ini格式的配置文件,這次權(quán)當(dāng)又學(xué)會(huì)一種Python的玩法而已。
所以讀取ini配置文件的代碼為:
因此段代碼中用到了pywin32的的東西,所以在文件最開(kāi)頭需要做import win32api, win32con,引入相關(guān)的class
修改系統(tǒng)注冊(cè)表的函數(shù)其實(shí)就這么幾行…當(dāng)然,因?yàn)槲覐S必須通過(guò)代理服務(wù)器上網(wǎng),所以修改系統(tǒng)注冊(cè)表的鍵值類型我只用到了REG_SZ這一種,實(shí)際其他情況還會(huì)有REG_DWORD啊等等類型。
然后咱需要一個(gè)配置文件,來(lái)保存各種場(chǎng)景『QA啊開(kāi)發(fā)環(huán)境啊』的不同的配置信息,這時(shí)候我使用的配置文件為ini格式,用Python自帶的ConfigParser就可以解析此種文件格式。
沒(méi)有采用以往我最熟悉的XML或者json純粹為了裝x,xml和json總覺(jué)著是web上用的東西,ini看起來(lái)比較像一個(gè).exe比較常用的配置文件格式。
也因?yàn)橐郧皼](méi)用過(guò)ini格式的配置文件,這次權(quán)當(dāng)又學(xué)會(huì)一種Python的玩法而已。
所以讀取ini配置文件的代碼為:
這樣的方式來(lái)獲取『場(chǎng)景』這個(gè)參數(shù),這一段代碼就會(huì)變成:
既然已經(jīng)讀取到配置文件中的ProxyServer和ProxyOverride這倆東東了,寫(xiě)入到注冊(cè)表理論上就能完成咱們的修改IE代理配置的大業(yè)了:
前一句為啥是『理論上』呢,因?yàn)樽?cè)表內(nèi)容雖然已經(jīng)修改了,但實(shí)際上IE瀏覽器并沒(méi)有生效,讓IE瀏覽器生效需要關(guān)閉重新打開(kāi)。
這時(shí)候就用到前邊安裝的一個(gè)叫做WMI的東東,import wmi ctypes,然后:
當(dāng)然,這段代碼是有一點(diǎn)點(diǎn)問(wèn)題的,只關(guān)閉了IE沒(méi)有重新打開(kāi)……是因?yàn)榘惩祽辛耍晨梢越邮苁謩?dòng)打開(kāi)IE…
綜上所述:
完整的代碼為:
#coding=utf-8相關(guān)文章:
1. JSP動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)原理詳解2. XHTML 1.0:標(biāo)記新的開(kāi)端3. vue實(shí)現(xiàn)動(dòng)態(tài)給id賦值,點(diǎn)擊事件獲取當(dāng)前點(diǎn)擊的元素的id操作4. python如何使用騰訊云發(fā)送短信5. .NET6使用ImageSharp實(shí)現(xiàn)給圖片添加水印6. python基于win32實(shí)現(xiàn)窗口截圖7. WML學(xué)習(xí)之六 事件8. 詳解Java關(guān)于時(shí)間格式化的方法9. Vue中使用Echarts儀表盤展示實(shí)時(shí)數(shù)據(jù)的實(shí)現(xiàn)10. PHP擴(kuò)展之URL編碼、解碼及解析——URLs
