撰写于2020-12-5
模拟登录的两种方式
首先打开GitHub登录页面,点击此链接即可
GitHub登录页面
然后查找输入账户密码,F12先清空再进行监听首先会得到一个session
关键参数如下:
suthenticity_token
login_in
password
然后继续在session里找最上面的General
这里的Request URL就是我们需要Form Data的表单数据发送到这里
Request URL: https://github.com/session
在session文件Response Headers中设置了Cookies需要我们返回
在Request Headers中也携带了Cookies
打开Settings的Profile,同样用F12查看
# General
Request URL: https://github.com/settings/profile
# Response Header
保存Set-Cookie*n个
#Request Headers
发送Cookie*1个
源代码
import requests
from lxml import etree
url = 'https://github.com/login'
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"}
response = requests.get(url=url, headers=headers)
content = response.text
html = etree.HTML(content)
token = html.xpath('//input[@name="authenticity_token"]/@value')[0]
cookies = response.cookies
print("登录页面token已获取{}".format(token))
print("登录页面cookies已获取".format(response.cookies))
print("-"*10)
url = "https://github.com/session"
data = {
'commit': 'Sign in',
'authenticity_token': token,
'login': 'chyaoyuan',
'password': 'lsxy13145678',
}
response = requests.post(url=url, headers=headers, data=data, cookies=cookies)
cookies = requests.cookies
print("个人首页cookies已获取".format(response.cookies))
print("http状态码为{}".format(response.status_code))
print("-"*10)
url = 'https://github.com/settings/profile'
response = requests.get(url=url, headers=headers)
print("http状态码为{}".format(response.status_code))
print(content)