Я даже не уверен, что это происходит, может быть что-то на 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, это возвращаемый объект request.get. Как это возможно? Что я делаю неправильно?
Запустите это в командной строке:
curl -X POST "https://urlscan.io/api/v1/scan/" \
-H "Content-Type: application/json" \
-H "API-Key: $apikey" \
-d "{\"url\": \"$url\", \"public\": \"on\"}"
Если вы получите такое же сообщение назад, то это скорее связано с ними.
За исключением того, что данные должны быть dict, а не форматированной json-строкой, вы не делаете ничего плохого.
r = requests.post('https://httpbin.org/post', data = {'key':'value'})
Эй, вот код, который работает для urlscan.io в Python:
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 даст вам идентификатор сканирования и конечную точку API для сканирования, вы можете использовать его для получения результата после небольшого ожидания. Пока сканирование не завершится, URL ответит кодом состояния HTTP 404.
Надеюсь, поможет!!