Я могу успешно вызвать API, используя ответ на https://stackoverflow.com/a/50974724/2014897
<?php ini_set('user_agent', 'Test App'); // Breach Title $breach_title = 'Adobe'; // JSON URL $url = 'https://haveibeenpwned.com/api/v2/breach/'.$breach_title; // Put the contents of the url into a variable $json = file_get_contents($url); // Decode the JSON feed $object = json_decode($json); // Echo Results echo $object->Title; echo $object->Name; echo $object->Domain; echo $object->Description; echo $object->BreachDate; ?>
... но я не могу понять, как выполнить проверку учетной записи с помощью
GET https://haveibeenpwned.com/api/v2/breachedaccount/{account}
который задокументирован на https://haveibeenpwned.com/API/v2
Я попытался изменить вышеуказанный код с этим изменением ...
$url = 'https://haveibeenpwned.com/api/v2/breachedaccount/'.urlencode($_GET['account']);
... но это изменение приводит к ...
Предупреждение: file_get_contents (https://haveibeenpwned.com/api/v2/breachedaccount/XXXXX@XXXXXXX.com): не удалось открыть поток: сбой HTTP-запроса! HTTP / 1.1 403 Forbidden
Я только что заметил, что официальные документы говорят
403 Запрещено - пользовательский агент не указан в запросе
Я предполагаю, что код пользовательского агента отправляется неправильно ... как это исправить?
Основываясь на комментариях ниже, я попробовал curl, и теперь у меня есть ...
<?php // JSON URL $url = 'https://haveibeenpwned.com/api/v2/breach/'.urlencode($_GET['account']); $options = array( CURLOPT_USERAGENT => "Test App" ); $ch = curl_init( $url ); curl_setopt_array( $ch, $options ); $json = curl_exec( $ch ); // Decode the JSON feed $object = json_decode($json); // Echo Results echo $object->Title; echo $object->Name; echo $object->Domain; echo $object->Description; echo $object->BreachDate; ?>
Теперь я не получаю ошибку кодирования, но получаю это ...
Вы были заблокированы от доступа к этому ресурсу в «Я уже был» Pwned