使用Python登录大学网站

时间:2016-10-10 20:19:29

标签: python cas

我正在尝试构建一个python脚本,它将自动打开我的大学网站并登录。该站点使用CAS进行身份验证,我使用请求模块将我的凭据传递给登录表单。无论我尝试什么,我都无法通过登录屏幕。

这是我的代码:

import requests, webbrowser, sys

with requests.Session() as s:
    url = 'https://signin.bradley.edu/cas/login?service=https://mybu.bradley.edu/MyBU/Login'

    USERNAME = ''
    PASSWORD = ''

    response = s.get(url)
    content = str(response.content)
    LT = content[2558:2599]
    EXECUTION = content[2660:2666]
    ID = content[2726:2734]

    print(LT)
    print(EXECUTION)
    print(ID)

    login_headers = {'User-Agent':'Mozilla/5.0',
                    'Referer':"https://signin.bradley.edu/cas/login?service=https://mybu.bradley.edu/MyBU/Login"}

    payload = {'username':USERNAME, 
                'password':PASSWORD,
                'lt':LT,
                'execution':EXECUTION,
                '_eventId':ID}


    response = s.post(url, data=payload, headers = login_headers)

    print(response.status_code)
    print(response.content)

我使用字符串切片来提取添加到POST消息有效负载所需的隐藏表单值(LT令牌,执行,_eventId)。脚本体中间的三个打印语句用于调试目的。

以下是脚本输出的一个实例:

"LT-55040-XwgXJsgy2bpnc59lGKTJutrS7amrrG"
"e1s1"
"submit"
500
b'\n\n<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n\n\n\n\n\n\n\n\n<html xmlns="http://www.w3.org/1999/xhtml" lang="en">\n\t<head>\n\t    <title>Bradley University Signin Service</title>\n        \n\t\t\n        <link type="text/css" rel="stylesheet" href="/cas/css/cas.css" />\n        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\n\t    <link rel="icon" href="/cas/favicon.ico" type="image/x-icon" />\n\t</head>\n\t<body id="cas" class="fl-theme-iphone">\n    <div class="flc-screenNavigator-view-container">\n        <div class="fl-screenNavigator-view">\n            <div id="header" class="flc-screenNavigator-navbar fl-navbar fl-table">\n\t\t\t\t\n                <h1 id="app-name" class="fl-table-cell">Bradley University Signin Service</h1>\n            </div>\t\t\n            <div id="content" class="fl-screenNavigator-scroll-container">\n\t\t<div id="welcome">\n\t\t\t<h2>CAS is Unavailable</h2>\n\n\t\t\t<p>\n\t\t\t   There was an error trying to complete your request.  Please notify your support desk or try again.\n\t\t\t</p>\n\t\t</div>\n\n\n\n</div>\n                <div id="footer" class="fl-panel fl-note fl-bevel-white fl-font-size-80">\n                \n                \n\n <p>Served by snape  </p>\n \n                \t<a id="jasig" href="http://www.jasig.org" title="go to Jasig home page"></a>\n                    <div id="copyright">\n                        <p>Copyright &copy; 2005 - 2012 Jasig, Inc. All rights reserved.</p>\n                        <p>Powered by <a href="http://www.jasig.org/cas">Jasig Central Authentication Service 3.5.2.1</a></p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>\n        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>\n        <script type="text/javascript" src="/cas/js/cas.js"></script>\n    </body>\n</html>\n\n'

您可以看到我上面提到的隐藏值包含在print(response.content)语句的输出中。

感谢您的帮助!

0 个答案:

没有答案