最近趁校园网免费在抓论文,然而脸黑,老被校园网踢,爱过。
于是写了一个保驾护航的自动登录~
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()