发送带有数据的 POST 请求时出错

Error while sending POST request with data

我试图创建程序来在这个网站上创建帐户:https://www.kostkuj.cz/register 我的主要问题是我真的不知道它是如何工作的,所以我根据我的要求重新构建了一个项目。

我还尝试将登录数据作为解析文本发送请求:

    email: "email@gmail.com"
    plainPassword: {first: "pass1", second: "pass1"}
    first: "pass1"
    second: "pass1"
    username: "username3" 

但是我不知道我做错了什么。

这是我的全部代码:

import requests


headers = {
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36 OPR/63.0.3368.71'
}

register_data = {
    {"username":"username3","email":"email@gmail.com","plainPassword":{"first":"pass1","second":"pass1"}}
}

with requests.Session() as s:
    url = 'https://api.kostkuj.cz/register'
    r = s.get(url, headers=headers)
    r = s.post(url, data=register_data, headers=headers)
    print(r.content)

我收到如下错误:

Traceback (most recent call last):
 File "C:\Users\jiris\Desktop\spamkostkuj.py", line 9, in <module>
   {"username":"username3","email":"email@gmail.com","plainPassword":{"first":"pass1","second":"pass1"}}
TypeError: unhashable type: 'dict'

给你:

r = s.post(url, json=register_data, headers=headers)

首先 headers 需要成对的 ro,即键值对。在你的情况下是这样的:

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36 OPR/63.0.3368.71'
}

其次,您发送的数据是不正确的,而是发送 dict,例如:

register_data = {"username":"username3","email":"email@gmail.com","plainPassword":{"first":"pass1","second":"pass1"}}

试试这个。希望对你有用。