代码改变世界

POST自动登录

2019-07-01 17:20  tankyy  阅读(430)  评论(0编辑  收藏  举报
import requests
import re
login_url='https://github.com/login'
# login页面的请求头信息
login_header={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3704.400 QQBrowser/10.4.3587.400'
}
login_res=requests.get(url=login_url,headers=login_header)
# print(login_res.text)
# 解析提取token字符串
authenticity_token=re.findall('<input type="hidden" name="authenticity_token" value="(.*?)" />',
                              login_res.text,
                              re.S)[0]
print(authenticity_token)
# 获取login页面的cookies信息
login_cookies=login_res.cookies.get_dict()
# session登录url
session_url='https://github.com/session'
# 请求头信息
session_headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
# 请求体信息
'''
commit: Sign in
    utf8: ✓
    authenticity_token:authenticity_token
    login: ****
    password": ****
    webauthn-support: supported
'''
form_data={
    "commit": "Sign in",
    "utf8": "",
    "authenticity_token":authenticity_token,
    "login": "***",
    "password": "***",
    "webauthn-support": "supported"
}
session_res=requests.post(url=session_url,
                          headers=session_headers,
                          cookies=login_cookies,
                          data=form_data)
with open('github.html','w',encoding='utf-8') as f:
    f.write(session_res.text)