使用curl_cffi发出POST请求时出现400错误请求

问题描述 投票:0回答:1

我正在使用 Python 中的curl_cffi 库向 URL https://www.midjourney.com/api/auth/signin/discord 发出 POST 请求。但是,我遇到了“400 Bad Request”错误。当我从 https://www.midjourney.com/api/auth/csrf 检索 CSRF 令牌时,但当我尝试向 https:// 发出 POST 请求时,我收到了成功的响应(状态代码 200) www.midjourney.com/api/auth/signin/discord,我收到“400 错误请求”错误。响应文本是包含错误详细信息的 HTML 页面。我怀疑可能需要在 https://www.midjourney.com/api/auth/signin/discord 的请求中包含一些特定的格式要求或附加参数,以避免此错误。粘贴浏览器请求中的所有其他标头没有帮助。

这是我正在使用的代码:

from curl_cffi import requests
import json, urllib

s = requests.Session()

r = s.get('https://www.midjourney.com/api/auth/csrf', impersonate="chrome110")
print(r.status_code)
csrf = json.loads(r.text)['csrfToken']

data = { "callbackUrl":"https://www.midjourney.com/app/", "csrfToken":csrf, "json":True}
headers = {
    'Content-length': str(len(urllib.parse.urlencode(data, quote_via=urllib.parse.quote))),
    'Content-Type': 'application/x-www-form-urlencoded'
}
h = requests.Headers([("content-length", str(len(urllib.parse.urlencode(data, quote_via=urllib.parse.quote)))), ('content-type', 'application/x-www-form-urlencoded')])
r = s.post(f'https://www.midjourney.com/api/auth/signin/discord?', headers=h, allow_redirects=True, data=data, impersonate="chrome110")
print(r.status_code)
print(r.url)
print(r.text)

我也想使用我的脚本登录中途网站来检索图像数据。但由于关闭了 cloudflare 反机器人保护,从 requests 切换到 curl_cffi 后,我得到了 400 响应

python-3.x python-requests
1个回答
0
投票

在之前的版本中,curl_cffi 确实按照大多数用户的预期从 POST 切换到 GET。最新版本应该已经修复了。

© www.soinside.com 2019 - 2024. All rights reserved.