Python3 requests模擬登錄天善智能!

#!/usr/bin/env python
#coding=utf-8
#@author:Chris iven
#Python version 3.6

"""
分析網站行爲:
login_url = "https://passport.hellobi.com/sso/login"

data:
    _token
        _token是在login_url裏面的一個 登錄必須帶的參數,單獨獲取不行!
    username
    password


其模擬登錄的思路便是:
    利用session()維持當前會話信息,然後,在當前的頁面中提取想要的登錄必備的數據,在返回去進行登錄!
"""
"""
思路:
1.定製一個login()函數!
    目的真正登錄!
2.定製一個login_web_get_token():
    目的,獲取動態的_token!
    然後登錄login()函數!
"""
import requests,re
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 BIDUBrowser/8.7 Safari/537.36",
           "Referer":"https://www.hellobi.com/"}

def login(url,_token,r_session):
    data = {"_token":_token,
            "username":input("請輸入賬號:"),
            "password":input("請輸入密碼:")
            }
    #這個函數纔是主角!
    response = r_session.post(url,data=data,headers=headers)
    return response.text


def login_web_get_token(url):
    r_session = requests.Session()
"""
創建一個requests.Session()實例 r_session然後利用這個實例去訪問要訪問的頁面,就會把該頁面維持住!
然後,獲取該頁面上登錄所需要的數據,最後調用login()登錄!"""
    page = r_session.get(url)

    reg = re.compile(r'<meta name="_token" content="(.*?)"')
    _token = re.findall(reg,page.text)[0]

    login_page = login(url,_token,r_session)
#因爲我的天善智能博客名稱叫做 "Chris iven",所以這裏添加一個判斷!
    if "iven" in login_page:
        print("登陸成功!")
    else:
        print("登錄失敗!")
    print(login_page)

if __name__ == "__main__":
    url = "https://passport.hellobi.com/sso/login"
    login_web_get_token(url)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章