由于實驗室項目要求,需要實現動態控制路由配置信息,我們知道,買到路由之后需要訪問:http://192.168.1.1 頁面進行路由配置。但是為了實現動態配置,不需要人手工操作,甚至定時任務配置的時候,就需要進一步研究對路由配置的相關操作了。
需要實現的目標是像一些商家提供的帶web認證的Wifi服務,如飛機場的CMCC接入,你連接Wifi熱點后還不能上網,他會自動跳轉到web認證頁面實施認證,通過之后才能實現上網。但是我們希望通過服務器主機自動更改添加web認證賬戶,比如像商戶可以發放免費上網電子券,券上面有對應的賬號。如果數量多的話,靠人工一個個添加配置是很麻煩的。如果可以電腦批量處理,那就是極其方便的。
下面按照實際方案過程和遇到的一些問題進行httplook抓取的過程描述,希望對以后遇到這方面問題的有部分幫助。之前是有兩套方案:
1、用wiwiz搭建web認證,并通過其Wiwiz Auth API進行接入的控制。參考資料如下:
成本低廉的賓館無線Wifi網絡覆蓋+Web認證方案;
Wiwiz Auth API參考手冊與接口規范;
但是、、、后來發現wiwiz貌似免費版的話提供的服務真的很少!付費才能達到項目要的要求,于是把這個方案當做備選!
2、自帶web認證的無線路由,調研后發現有自帶web認證的無線路由,我選用的是磊科NR235W無線上網管理路由器。順便吐槽下,七月底在某東買的時候是¥219.00,這幾天再看是¥129.00 (降價通知)。。。還好不是花自己的錢,不然虧死了。(吐槽可忽略)
現在就進入重點部分,如何在主機端借助某些接口自動完成路由配置,下面找了很久才找到比較好的方法:
教您用命令行輕松玩轉寬帶路由(上),教您用命令行輕松玩轉寬帶路由(中)然后死活都找不到(下)的部分。。。學著邊弄,最后才在翻了很多網頁之后找到“高手論道 教您用命令行輕松玩轉寬帶路由 ”,命名能再統一規范點嗎?而且在同一個網站不是連續的發文章,所以能找到最后一篇也算是幸運的。
一、curl工具:curl是一個使用URL語法來傳送文件的工具,支持HTTP/HTTPS/FTP/ FTPS/DICT/TELNET/LDAP/FILE和GOPHER等協議,同時也具備比較高的安全性。也就是說我們可以通過curl命令實現對基于HTTP協議頁面的互動。那么只要瀏覽器可以做到的操作,我們只要用curl模擬就可以做到。同理,對于一些網頁需要搶票刷頁面的,也是可以利用curl命令進行控制的。但是現在刷完之后那些搶票系統總是會彈出需要手動輸入隨機驗證碼的,也是作為一種手段來防止這種作弊行為。下載后建議把curl工具當前的路徑添加到系統的PATH路徑下,那么自信命令行之后就不用進到curl對應的路徑下才能執行,系統會自動去環境變量PATH路徑下收你輸入的這些命令行命令并執行。
二、監控工具:為了模擬瀏覽器的動作,那么我們需要知道瀏覽器訪問的地址以及對應的參數設置。于是又兩款監視工具對頁面信息參數進行抓取。其中遇到問題如下:
1、用httplook進行抓取時,只要啟動抓取,我的IE就會崩潰,而用搜狗瀏覽器卻只能抓到普通的頁面、而抓不到路由配置頁面的信息。
2、試用sniffer工具進行抓取,可以抓到,可是由于里面的相關信息復制不了,或者只能復制其ASCII碼,還要對其進行轉碼。于是我直接照著其參數手打出來。但是在用這些抓到的信息進行命令行配置時,電腦經常死機。事實證明,電腦的很多編碼形式呈現出的可視化的東西不是看到的就是那樣的,除了一些外形相似的字符,還有包括半角還是全角等小細節的出入。所以這些信息的轉移最好還是直接復制粘貼,不然宕機了自己都不知道什么回事。一開始我還以為是電腦硬件或者系統的問題,不放棄地不停嘗試,然后就是不停的死機重啟。差點重裝系統。
最后抱著試一試的心態,把IE卸載了重裝,然后用httplook重試,竟然抓到了,真有一種柳暗花明的感覺。對于瀏覽器的很多操作,用IE肯定是沒錯的,因為現在很多瀏覽器并不是使用IE內核的,很多也只是兼容而已。所以會出現這樣或那樣莫名的錯誤。而且很多時候你明明按照別人說的操作,可往往會出現跟別人描述的不一樣的結果,那肯定就是有原因,每一個小步驟都可能出現問題。如果可以的話從頭到尾分析一下都有哪些步驟,每一個步驟都嘗試下能做的試錯方案。最后能解決當然是很好的,如果嘗試完所有能想到的,搜盡所有資料都不能解決,那只能說是緣分了。。。但是在這個過程,只要你想要完成,就不能停止嘗試!!!一停你就輸了,當然有時候停一下過后再看,可能很容易就解決,但是不能完全放棄!
那現在就要開始進入抓取信息的部分了,以在我使用的自帶web認證的無線路由上進行過程介紹。
(一)、啟動httplook:點擊綠色箭頭啟動抓取,如下圖:
(二)、瀏覽器操作:用IE打開路由配置頁面并進行你想要的配置操作,我這里以要添加web認證賬戶為例,如下圖:
添加成功后我們可以在web認證頁面看到剛添加的賬戶:
(三)、httplook獲取配置參數:我們這邊按下綠色箭頭右邊第一個相鄰的紅色按鈕停止抓取,如圖我們可以看到httplook抓到的相關信息:
可以看到瀏覽器配置路由的時候是通過訪問用post方法訪問路由的“192.167.1.1//router/l7_web_auth_user_set .cgi”配置文件,并將如下參數post過去“action=0&enable=1&user=0&pass=0&name=&policy_group_id=&charge_mode=0&adv_type=0&auth_user_bind_mac_mode=0&auth_user_bind_mac=&count=1&idle_cut=1&auth_user_static_ip=&id=&deal=add”,其中我們注意到“user=0&pass=0”就是我們剛才設置添加賬戶所填寫的賬戶名與密碼。
(四)、curl命令行執行:完成抓取后就需要用curl工具進行命令行的調用實現。通過查詢curl的使用方法,我們知道其訪問帶用戶名及密碼頁面時的格式如下(就是我們進入路由配置頁面時獲取訪問權限時輸入的用戶名與密碼)格式為:curl -u 訪問頁面用戶名:密碼 -d “參數” http頁面地址。很多訪問路由頁面用戶名與密碼默認是“admin”或“guest” 也可以自己修改的。本機用戶名與密碼都是“guest”。使用如下:
通過在命令行運行窗口中運行如上命令,可以看到如下信息,說明配置成功:
此時,再去看路由配置頁面中web賬戶的列表,用戶名與密碼都為“123”的賬戶被添加了進去。同理,如果想要對其他頁面做相關動作,也可以采取上述同樣的方法進行操作。至此,我們用curl命令執行路由配置的相關操作就完成了。如果想要對無線Wifi熱點進行控制還可以將命令寫成“.bat”文件,然后設置系統中的定時任務功能來定時開啟和關閉熱點。如果需要像我上述的批量添加web認證賬戶,也可以使用其他語言對這個命令進行調用,只要改變其對應的user和pass參數就可以了。
只要瀏覽器能做到的,上述的辦法就能做到。關鍵就是要“抓”。而在我們遇到問題在自己所能接觸的知識庫(包括自己的學識、周圍的牛人資源、網上海量的資料牛人資源)中查詢解決方案的時候,不能出現預定效果的時候,不管你知不知道原因,都要嘗試地去在所有步驟中試錯。甚至到最后你成功解決后還不知道原因,但是這個過程中你不能停止嘗試。而很多人能順利進行方案而不會跟你一樣碰到這樣或那樣問題的時候,不要抱怨命運的不公,一件事的出現必定有他的原因。或許你現在可以不知道原因,但是不能停止嘗試的步伐。
因為一停,你就輸了!至于結果,還要看你自身的各種能力、、、和“緣”!