最近趁校園網免費在抓論文,然而臉黑,老被校園網踢,愛過。
於是寫了一個保駕護航的自動登錄~
Step1:分析包
之前我天真的以為里面只要寫了用戶名和密碼就行= = 啊我要找時間補計算機網絡。。
在瀏覽器裝了FireBug插件,手動登錄了一下抓下了包。
分析一下:
1.在網絡選項下,看到發送的地址是,鼠標移上去可以看到具體地址,不好截圖就不截了。
2.展開它,在請求頭信息里可以看到一堆東西,這里只需要Host 和Referer就差不多了
3.在Post欄,看到具體發送的參數
然后基本信息就准備好了。
Step2:檢測是否有網絡連接
打開一個網頁看能否打開,由於在未登錄狀態打開網頁會被定向到登錄的頁面(也可能直接打不開),所以先檢測是否能打開,如果是的話,分析頁面元素檢測Title是否一致。
在這里微軟大法好用了Bing當作測試頁面=w=
Step3:構建自己的數據包並發送
這里用Python大法好。
具體看代碼

1 import os 2 from bs4 import BeautifulSoup 3 from urllib.parse import urlencode 4 from urllib.request import urlopen 5 from urllib.request import build_opener 6 from urllib.request import HTTPCookieProcessor 7 from urllib.request import Request 8 import http.cookiejar 9 import time 10 def CheckLink(): 11 url = 'http://cn.bing.com' 12 13 try: 14 html = urlopen(url).read().decode("utf-8") 15 except: 16 return False 17 18 bsObj = BeautifulSoup(html) 19 print (bsObj.title) 20 if(bsObj.title == None or bsObj.title.get_text() == '登錄'): 21 return False 22 return True 23 24 25 def MakeLink(): 26 27 url = 'http://10.0.0.55:801/include/auth_action.php' 28 #set Post paras 29 userData = { 30 "action":"login", 31 "username":"", 32 "password":"", 33 "ac_id" : "1", 34 "user_ip":"", 35 "nas_ip":"", 36 "user_mac":"", 37 "save_me":"1", 38 "ajax":"1" 39 } 40 postData = urlencode(userData).encode(encoding='utf-8') 41 headers = { 42 "host":'10.0.0.55:804', 43 "Referer":'http://10.0.0.55:801/srun_portal_pc.php' 44 } 45 cookiejar = http.cookiejar.CookieJar() 46 47 #open in glabal 48 opener = build_opener(HTTPCookieProcessor(cookiejar)) 49 50 #get cookiejar 51 req = Request(url, postData, headers) 52 result = opener.open(req) 53 print (result.read()) 54 55 return 56 57 def main(): 58 while(True): 59 if(CheckLink() == False): 60 print ('outline') 61 MakeLink() 62 else: print('inline') 63 time.sleep(60) 64 65 if __name__ == '__main__': 66 main()