将请求告诉POST后,为什么请求使用GET?

时间:2018-10-15 19:37:54

标签: python python-requests

我什至不确定这是否正在发生,可能是URLScan.io的结尾,但是使用以下代码:

api = '####################'
url = 'https://www.urlscan.io/api/v1/scan/'

headers = {
    'Content-Type': 'application/json',
    'API-key': api
}

data = '{"url": "https://www.google.com", "public": "on"}'

resp = requests.post(url, data=data, headers=headers)

我一直收到以下错误:

{
  "message": "Wrong method, use POST",
  "description": "In order to scan a page, you have to POST here.",
  "status": 405
}

我不知道我在做什么错。在我的调试器中,它说,即使我调用request.post resp也是requests.get返回对象。怎么可能呢?我在做什么错了?

3 个答案:

答案 0 :(得分:3)

除了数据应该是字典,而不是预格式化的json字符串之外,您没有做错任何事情。

r = requests.post('https://httpbin.org/post', data = {'key':'value'})

Reference

答案 1 :(得分:3)

在命令行上运行它:

curl -X POST "https://urlscan.io/api/v1/scan/" \
    -H "Content-Type: application/json" \
    -H "API-Key: $apikey" \
    -d "{\"url\": \"$url\", \"public\": \"on\"}"

如果您收到相同的消息,则可能与他们有关。

答案 2 :(得分:0)

以下是适用于python中urlscan.io的代码:

import requests
import json

headers = {'API-Key':'your-api-key','Content-Type': 'application/json'}
params = {'url': 'scan-url' }
response = requests.post('https://urlscan.io/api/v1/scan/',headers=headers, data=json.dumps(params))

对API调用的响应将为您提供扫描的扫描ID和API端点,您可以在稍等片刻后使用它来检索结果。在扫描完成之前,URL将以HTTP 404状态代码响应。

希望有帮助!