使用POST请求头Python发送xapikey

2024-06-16 10:29:01 发布

您现在位置:Python中文网/ 问答频道 /正文

给我的问题是:

#Write a script that uses a web API to create a social media post.
#There is a tweet bot API listening at http://127.0.0.1:8082, GET / returns basic info about the API.
#POST / with x-api-key:tweetbotkeyv1 and data with user tweetbotuser and a status-update of alientest.

我的代码回应说我没有提供x-api-key,但它在头中。我的代码:

# # Tweet bot API listening at http://127.0.0.1:8082. # GET / returns basic info about api. POST / with x-api-key:tweetbotkeyv1 # and data with user tweetbotuser and status-update of alientest # import urllib.parse import urllib.request data = urllib.parse.urlencode({ "x-api-key": "tweetbotkeyv1", "connection": "keep-alive", "User-agent": "tweetbotuser", "status-update": "alientest" }) url = "http://127.0.0.1:8082" data = data.encode("ascii") with urllib.request.urlopen(url, data) as f: print(f.read().decode("utf-8"))

返回:

{"success": "false", "message":"x-api-key Not provided", "flag":""}

标题有问题吗


Tags: andkeyapihttpdatabotstatuswith
1条回答
网友
1楼 · 发布于 2024-06-16 10:29:01

必须严格按照以下顺序提交url、参数和标题: urllib.request.Request(url, post_param, header) 结果将是:{"success": "true", "message":"Well done", "flag":"<the flag will be show here>"}

这是可行的解决方案

import urllib.parse
import urllib.request

url = "http://127.0.0.1:8082/"
header={"x-api-key" : 'tweetbotkeyv1'}
post_param = urllib.parse.urlencode({
                    'user' : 'tweetbotuser',
           'status-update' : 'alientest'
          }).encode('UTF-8')

req = urllib.request.Request(url, post_param, header)
response = urllib.request.urlopen(req)

print(response.read())

相关问题 更多 >