Я пытаюсь реализовать небольшую функцию для проверки возможных фишинговых URL-адресов и подумал, что использование Google Safe Browsing API будет хорошим началом.
Прочитав документацию по API, я подумал, что разобрался с вещами, и собрал следующий код:
import requests
import json
url = "https://safebrowsing.googleapis.com/v4/threatMatches:find?key=<REDACTED>"
headers = {'content-type': 'application/json'}
payload = {'client': {'clientId': "mycompany", 'clientVersion': "0.1"},
'threatInfo': {'threatTypes': ["SOCIAL_ENGINEERING", "MALWARE"],
'platformTypes': ["ANY_PLATFORM"],
'threatEntryTypes': ["URL"],
'threatEntries:': [{'url': "http://www.urltocheck1.org"}]}}
print (json.dumps(payload, indent=4))
r = requests.post(url, headers=headers, json=payload)
If I do a
print (json.dumps (полезная нагрузка, отступ = 4)
все это выглядит нормально. Однако ответ, который я получил от Google, не согласен.
{'error': {'message': 'Получены недопустимые данные JSON. Неизвестное имя "угрозы_стали:" в \ 'угроза_инфо \': поле не найдено. ',' Статус ':' INVALID_ARGUMENT ',' код ': 400,' детали ': [{' @type ':' type.googleapis.com /google.rpc.BadRequest ',' fieldViolations ': [{' field ':' dangerous_info ',' description ':' Получены недопустимые данные JSON. Неизвестное имя "Threat_entries:" at \ 'Threat_info \': Поле не найдено. '}]}]}} {' X-Frame-Options ':' SAMEORIGIN ',' Transfer-Encoding ':' chunked ',' Cache- Control ':' private ',' Date ':' Tue, 25 Oct 2016 07:55:30 GMT ',' Content-Type ':' application / json; charset = UTF-8 ',' Alt-Svc ':' quic = ": 443"; ma = 2592000; v = "36,35,34,33,32" ',' X-Content-Type-Options ':' nosniff ',' Content-Encoding ':' gzip ',' X-XSS-Protection ':' 1; режим = блок ',' Сервер ':' ESF '} application / json; charset = UTF-8
Я не могу - как обычно - заметить свою ошибку. Может ли кто-нибудь другой заметить это и, возможно, направить меня на правильный путь?