【发布时间】:2021-06-16 00:38:55
【问题描述】:
我一直在尝试使用 Python 请求和/或 Scrapy 访问 API,但使用 POST 请求登录失败。我决定通过 JavaScript 使用 fetch 命令来试试运气,并能够使用以下代码成功登录。
fetch("https://vendoradmin.fashiongo.net/api/login", {
"headers": {
"accept": "application/json",
"accept-language": "en,en-US;q=0.9,it;q=0.8,es;q=0.7",
"content-type": "text/plain",
"sec-ch-ua": "\"Google Chrome\";v=\"89\", \"Chromium\";v=\"89\", \";Not A Brand\";v=\"99\"",
"sec-ch-ua-mobile": "?0",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin"
},
"referrer": "https://vendoradmin.fashiongo.net/",
"referrerPolicy": "strict-origin-when-cross-origin",
"body": "{\"username\":\"*****\",\"password\":\"*****\"}",
"method": "POST",
"mode": "cors",
"credentials": "omit"
})
无论我如何尝试使用 Python 请求设置标头和有效负载,我总是会收到 500 个状态码,但我认为我遗漏了一些东西。有没有人可以将上述 JS Fetch 直译为 Python 请求?或者解释一下为什么这适用于 JS 而不是 Python 请求?
我一直在尝试的当前 Python 请求脚本如下:
import requests
payload = {'username':'*****', 'password':'*****'}
headers = {
'Host': 'vendoradmin.fashiongo.net',
'Origin': 'https://vendoradmin.fashiongo.net/#/auth/login',
'Referrer':'https://vendoradmin.fashiongo.net/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'}
r = requests.post("https://vendoradmin.fashiongo.net/api/login", data = payload, headers = headers)
【问题讨论】:
-
使用
jsonkwarg 代替data。data使帖子表单编码
标签: javascript python api python-requests fetch