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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章