今天,我使用了一个api来获取特定IP地址的信息,它运行得很好。
file_get_contents("https://ipinfo.io/172.217.19.206");由此,我得到了正常的json输出,我可以json_decode。
{ "ip":"172.217.19.206",“主机名”:“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得到了页面的来源?
发布于 2019-02-10 20:31:06
这个网站使用用户代理的方法来处理这个问题。
你可以由邮递员来测试。
只在Header部分中为User-Agent设置空值,并将get请求发送到该url。

发布于 2019-02-11 04:32:30
我们在这里的文档中介绍了这一点:https://ipinfo.io/developers#json-response
我们试图自动检测何时有人想要调用我们的API和查看我们的网站,并发送适当的JSON响应,而不是HTML。我们这样做是基于已知流行编程语言、工具和框架的用户代理。
还有一些其他的“魔法”。如果有URL回调参数或AJAX头,我们将始终发送JSON。
还可以通过将/json添加到URL末尾或发送Accept: application/json头来强制JSON响应。
https://stackoverflow.com/questions/54620637
复制相似问题