我无法使用请求登录网站,也无法获取帐户背后的API数据。请求的有效负载数据与用于正常登录的表单数据相匹配。
我的代码如下:
urlpage = 'https://speechanddebate.org/login'
header = {'User-Agent': 'Chrome/84.0.4147.89'}
payload = {'log': "email@gmail.com",
'pwd': "password",
'wp-submit': 'Log In',
'rememberme': 'forever',
'redirect_to': '/account',
'testcookie': '1'}
session = requests.Session()
test = session.post(urlpage, headers = header, data = payload)
我使用inspect元素来查找正常登录时(而非通过网络抓取)通过POST发送的数据,当我在网络下进行检查时,它会给出以下结果:
与其他StackOverFlow答案相比,我不确定自己在做什么。这是我尝试进行的代码修改的列表:
with requests.Session() as session:
块,而不只是
session = requests.Session()
正常登录后,我会收到状态码302,表示登录成功,并且我已转移到另一个网页。但是,当我通过网络抓取方法执行操作时,它无法登录并返回状态代码200,并将其返回到登录页面。
答案 0 :(得分:0)
尝试
headers = {
'authority': 'www.speechanddebate.org',
'cache-control': 'max-age=0',
'upgrade-insecure-requests': '1',
'origin': 'https://www.speechanddebate.org',
'content-type': 'application/x-www-form-urlencoded',
'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Mobile Safari/537.36',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'navigate',
'sec-fetch-user': '?1',
'sec-fetch-dest': 'document',
'referer': 'https://www.speechanddebate.org/login/',
'accept-language': 'en-US,en;q=0.9',
}