【问题标题】:file_get_contents is blocked by websitefile_get_contents 被网站阻止
【发布时间】:2018-01-04 07:20:47
【问题描述】:

我通常使用此代码从 API 获取 JSON 内容:

$url_price_mun = "https://coinsmarkets.com/apicoin.php";
$json_price_mun = json_decode(file_get_contents($url_price_mun), true);
print_r ($json_price_mun);

但在这种情况下,从这个网站https://coinsmarkets.com/apicoin.php 我得到一个错误:

警告:file_get_contents(https://coinsmarkets.com/apicoin.php): 无法打开流:HTTP 请求失败! HTTP/1.1 503 服务 暂时不可用

如果我通过浏览器打开这个网站,它就可以正常工作。我发现该网站受 Cloudflare 保护。

我也用这段代码测试了 Curl,但输出是空白的:

$url = 'https://coinsmarkets.com/apicoin.php';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);
$obj = json_decode($result);
print_r ($obj);

我希望有人可以帮助我通过 PHP 从本网站获取 JSON 内容?

【问题讨论】:

  • 我的猜测是 Cloudflare 等待屏幕给你这个问题。它会检查浏览器,但我不确定它在 curl 和类似方面的表现如何

标签: php json curl


【解决方案1】:

这是一个云耀斑保护。我不确切知道它是如何工作的,但是如果您对该 URL 进行任何其他不是浏览器的调用,则会引发错误 503。我还在命令行中尝试了 wgetcurl 并具有相同的效果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    相关资源
    最近更新 更多