Интеграция API с HIBP

#python #http #automation

#python #http #автоматизация

Вопрос:

Я пытаюсь написать скрипт на Python для подключения к https://haveibeenpwned.com / API , чтобы просмотреть список идентификаторов электронной почты на предмет любого нарушения.

Я начинаю просто строить на нем, но он не работает.

Ниже приведен мой текущий код :

 import requests
import json

headers = {}
headers['hibp-api-key']='xxx'# key removed 
headers['content-type']= 'application/json'
headers['User-Agent']='testingaccountbreach'
url ='https://haveibeenpwned.com/api/v3/breachedaccount/account'  # email should be URL encoded, email was removed for privacy

response = requests.get(url)
response.status_code
  

Приведенный выше код возвращает 401 ответ сервера. Затем я попробовал простой HTTP-запрос, но все равно не удалось, в то время как интеграция api с virustotal.com отлично работает со скриптом Python, и я могу подключаться к другим веб-сайтам.

 url ='https://haveibeenpwned.com/'
response = requests.get(url)
print(response)
  

Я пытаюсь работать над этим уже более недели, поэтому был бы признателен за любой ценный вклад или рекомендации .

С уважением,

Ответ №1:

Поэтому я недавно работал и над этим, пытаясь создать систему автоматизации для компании, в которой я работаю, чтобы использовать вызовы Python в HIBP и предоставлять информацию менеджеру документов. У меня было так много проблем с тем, чтобы заставить это работать с нуля с помощью предоставленных скриптов Python, которые люди разработали с помощью HIBP (см.: https://haveibeenpwned.com/API/Consumers ). Затем я наткнулся на ваш пост и код и попытался посмотреть, смогу ли я заставить его работать, но я продолжал получать тот же 401, что и вы. Затем я вспомнил, как мой друг рассказывал о Postman. Если вы не знакомы с ним, я настоятельно рекомендую его, потому что вы можете настроить запросы get с помощью ключей API и определенных строк URL или заголовков и выводить код на множестве языков программирования. Это так же просто, как подключить данные, а также просмотреть и скопировать код для разных языков, включая Python. Я протестировал его и получил идеальный ответ в моем скрипте на Python. Итак, я опубликовал ниже то, что должно работать лучше для вас. Убедитесь, что <> заполнено правильной информацией.

 import requests

url = "https://haveibeenpwned.com/api/v3/breachedaccount/<account>"
hibp_api_key = '<key>'
payload={}
headers = {
  'hibp-api-key': str(hibp_api_key),
  'format': 'application/json',
  'timeout': '2.5',
  'HIBP': str(hibp_api_key),
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)