zoukankan      html  css  js  c++  java
  • 校园网自动登录程序

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

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

    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
  • 相关阅读:
    python 输入和输出
    python 深入模块和包
    python 模块
    python 字典 注意点
    javaNIO核心概念
    redis使用bit做只有两种情况的“状态“统计(如是否在线的用户统计)
    mysqlbinlog二三事儿
    mysql在windows下的服务安装
    javassist标识符
    使用redis调用lua脚本的方式对接口进行限流
  • 原文地址:https://www.cnblogs.com/bbbbbq/p/5474912.html
Copyright © 2011-2022 走看看