PHP文件获取内容给出404错误但存在

时间:2016-01-18 19:06:59

标签: php image api youtube file-get-contents

在我的脚本中,我使用Google YouTube API从YouTube频道接收头像图片。除了“标准”头像外,每个头像都会被收到并保存到我们自己的服务器上。

This is a screen shot of the standard avatar

我正在尝试使用file_get_contents保存它们,但它给了我一个错误。

代码:

$filename = './img/avatars/'. $ytname .'.jpg';
        if (file_exists($filename)) {
            print_r("http://youtube-top.eu/img/avatars/".$ytname.".jpg");
    } else {
        $url = file_get_contents("https://www.googleapis.com/youtube/v3/channels?part=brandingSettings,snippet&forUsername=".$ytname."&key=#KEYISPRIVATE#");
        $json = json_decode($url, true);
        $str = $json['items'][0]['snippet']['thumbnails']['default']['url'];
        $str = str_replace('https://', 'http://', $str );
        $content = file_get_contents($str);
        ?>
        /*
        <?php
        echo $str;
        ?>
        */
        <?php
        file_put_contents('./img/avatars/'. $ytname . '.jpg', $content);
        print_r("http://youtube-top.eu/img/avatars/".$ytname.".jpg");

    }
}

对于带有自定义头像的频道,它会保存到我们的服务器,而不是标准头像。这是错误:

  

的file_get_contents(http://i.ytimg.com/i/MJJbPVnNlvRAWSgfVuzxJA/1.jpg):   无法打开流:HTTP请求失败!找不到HTTP / 1.0 404

错误中的图像链接确实存在。

有人理解这个吗?

2 个答案:

答案 0 :(得分:0)

谷歌有一些阻止自动请求,热链接等的魔力。如果他们的监视程序算法标记了您的IP活动,他们可能会阻止您。

您可以尝试使用cURL函数并将User-Agent字符串设置为适合现代浏览器的内容。否则,我建议您重新考虑应用的逻辑。

来源:个人经历;我无法使用Google自动确定其中一个应用程序的二手办公机器的性质。

答案 1 :(得分:0)

  

谷歌有一些阻止自动请求的魔力,   如果他们的看门狗算法有标记的活动   从您的IP,他们可能阻止你。

但为什么不禁止我使用自定义头像,只为标准头像?

当我这样做时:

<img src="http://i.ytimg.com/i/MJJbPVnNlvRAWSgfVuzxJA/1.jpg" />

正确显示图像。所以谷歌没有阻止我服务器的IP ..