#!/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)