Итак, я хотел бы попрактиковаться, войти в github по запросам, я думаю, что я использую правильный стиль для публикации, но когда я отправляю данные в 'https://github.com/session',, status_code ответа равен 422, это означает, что ошибка семантики, я никогда не сталкиваюсь с этой проблемой, кто-то может мне помочь?
# 尝试GitHub登陆
import requests
from bs4 import BeautifulSoup
import re
from lxml import html
#✓
class Login:
def __init__(self):
self.headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/'
'webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0',
'Host': 'github.com'
}
self.post_url = 'https://github.com/session'
self.login_url = 'https://github.com/login'
self.session = requests.Session()
def token(self):
response = self.session.get(self.login_url, headers=self.headers)
if response.status_code == 200:
token = re.findall(r'name="authenticity_token" value="(.*?)">', response.text)
if token:
return token[0]
else:
print('链接失败')
return None
def login(self, email, password):
token = self.token()
print(type(token))
data = {
'commit': 'Sign in',
'utf8': '✓',
'authenticity_token': token,
'login': email,
'password': password,
'webauthn - support': 'supported'
}
response = self.session.post(self.post_url, data=data)
print(response.status_code)
soup = BeautifulSoup(response.text, 'html.parser')
ul = soup.find(name='ul')
if ul:
for li in ul.find_all('li'):
spans = li.find_all('span')
for span in spans:
print(span.text)
if __name__ == '__main__':
login = Login()
login.login(email,password)
при печати кода ответа.статус, показывать 422,