использовать запросы Python для входа в GitHub с правильным стилем, но код статуса ответа 422? - PullRequest
0 голосов
/ 21 июня 2019

Итак, я хотел бы попрактиковаться, войти в 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,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...