校园网自动登录程序

最近趁校园网免费在抓论文,然而脸黑,老被校园网踢,爱过。

于是写了一个保驾护航的自动登录~

 

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()
View Code

 

posted @ 2016-05-09 18:04  bbbbq  阅读(24925)  评论(0编辑  收藏  举报