zoukankan      html  css  js  c++  java
  • 电子科技大学信息门户模拟登录

    首先抓包或者按下F12进入浏览器开发者模式进行分析:
    2018-1-25(1).jpg
    由这张图我们可以得出我们填写完学号和密码后post的表单包含的内容有username,password,lt,execution,eventld,rmShown。而execution,_eventId,rmShown都是常量,分别为

    'execution': 'e1s1',
    '_eventId': 'submit',
    'rmShown': '1'
    

    而lt每次都是不同的一串字符串,查看源代码:
    2018-1-25(2).png
    这个lt实际上是登录的用户需要的流水号,相当于你起银行办理业务的时候,首先得拿到一个流水号排队表示你进入了办理整个业务的流程。而在这里,只有有了webflow发放的有效的流水号,用户才可以说明是已经进入了webflow流程。否则,没有流水号的情况下,webflow会认为用户还没有进入webflow流程,从而会重新进入一次webflow流程,从而会重新出现登录界面。
    而为了得到lt,我们可以通过BeautifulSoup库进行解析,在<input>标签下找到name='lt',并提取出value后的一串字符串即可。此外,在我们请求页面以获取lt值后,如果再用post发送我们构造好的表单,在这个过程中,相当于刷新了一下页面,,我们先前获得的lt值已经不再是现在的lt值了,所以这个时候我们就要用requests的session方法来保持cookie不变了,session方法可以让同一个实例发出的所有请求保持相同的cookie。
    代码如下:

    __author__=='YunLambert'
    import requests
    from http import cookiejar
    from bs4 import BeautifulSoup as bs
    
    header = {'User-Agent':...} #填写自己浏览器的请求头部信息即可
    loginurl = 'http://idas.uestc.edu.cn/authserver/login?service=http://portal.uestc.edu.cn/index.portal'
    
    def getLt(str):
        lt = bs(str, 'html.parser')
        dict = {}
        for i in lt.form.find_all('input'):
            if(i.get('name')) != None:
                dict[i.get('name')] = i.get('value')
        return dict
    
    print('****UESTC模拟登录*****')
    print('请输入学号:')
    username = input()
    print('请输入密码:')
    password = input()
    
    s = requests.Session()
    s.cookies = cookiejar.CookieJar()
    r = s.get(loginurl)
    dict = getLt(r.text)
    postdata={
        'username': username,#学号
        'password': password,#密码
        'lt': dict['lt'],
        'execution': 'e1s1',
        '_eventId': 'submit',
        'rmShown': '1'
    }
    response = s.post(loginurl, data = postdata, headers = header)
    print(response)
    #如果返回值为200,说明模拟登陆成功;404说明错误,登陆失败;500的话,可能是学校网又炸了....
    
    作者:YunLambert

    -------------------------------------------

    个性签名:一名会音乐、爱健身的不合格程序员

    可以Follow博主的Github哦(っ•̀ω•́)っ✎⁾⁾

  • 相关阅读:
    CloudFoundry 中的GoRouter性能測试
    Android-SharedPreferences
    Oracle 闪回表实验
    使用Jfree实现吧条形图,java代码
    ZOJ Monthly, October 2010 ABEFI
    熟知CDN
    看,2015阿里巴巴视觉设计人员面临的问题招收学校
    于win7使用虚拟磁盘隐藏文件
    2015广东工业大学ACM学校巡回赛 I 游戏高手 (如压力dp)
    spring mvc 错误摘要--。位。
  • 原文地址:https://www.cnblogs.com/yunlambert/p/8345157.html
Copyright © 2011-2022 走看看