Как IPinfo показывает данные json, используя file_get_contents - PullRequest
0 голосов
/ 10 февраля 2019

Сегодня я использовал API для получения информации для определенного IP-адреса, и он отлично работает.

file_get_contents("https://ipinfo.io/172.217.19.206");

Из этого я получаю нормальный вывод json, который я могу json_decode

{"ip ":" 172.217.19.206 "," hostname ":" ams16s31-in-f14.1e100.net "," city ":" "," region ":" "," country ":" US "," loc ": "37.7510, -97.8220", "org": "AS15169 Google LLC"}

Но что я не понимаю, так это то, что если я захожу на страницу https://ipinfo.io/172.217.19.206 с помощью браузера, то я делаю этоне вижу этот вывод вообще.Я всегда думал, что file_get_contents получает источник страницы?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Это описано в нашей документации здесь: https://ipinfo.io/developers#json-response

Мы пытаемся автоматически определить, когда кто-то хочет вызвать наш API, а не просматривать наш веб-сайт, и отправить обратно соответствующий ответ JSON, а не HTML,Мы делаем это на основе пользовательского агента для известных популярных языков программирования, инструментов и фреймворков

Есть еще несколько «волшебных» моментов.Мы всегда отправляем JSON, если есть параметр обратного вызова URL или заголовок AJAX.

Вы также можете форсировать ответ JSON, добавив /json в конец URL-адреса или отправив заголовок Accept: application/json.

0 голосов
/ 10 февраля 2019

Этот веб-сайт использовал метод useragent для обработки этого.

Вы можете проверить его почтальоном.

Только установить нулевое значение для User-Agent в разделе заголовков и отправить запрос на получение этого URL.

Postman Example

...