首页 > 解决方案 > 如何阻止图像被 file_get_contents 或 wget 抓取,以及如何应对?

问题描述

我的客户正在新浪博客上写博客,她只对它的编辑感到满意。因此,在她提交博客后,我使用一个小片段将图像和文本抓取到她自己的博客网站。它的核心是

$url = 'http://s5.sinaimg.cn/bmiddle/001MEJWgzy7xxRaXmDyd4&690';
$img_data = @file_get_contents($url);
$img = file_put_contents('1.jpg',$img_data);

听起来很奇怪,但它确实运作良好,为我们俩节省了大量时间。但是最近图像变成了空白,带有一些水印。我猜新浪终于发现了我们的小伎俩并阻止了图像被抓取。我只是好奇阻止是如何进行的,更重要的是,有没有办法解决?我试过用wget http://s5.sinaimg.cn/bmiddle/001MEJWgzy7xxRaXmDyd4&690它也只能得到空白图像。

标签: image-processingweb-scrapingfile-get-contents

解决方案


只是一个建议——站点检测爬虫的最简单(也是最有可能)的方法是查看请求标头,最常见的是“Accept”、“Referrer”和“User-Agent”。您可以尝试复制“真实”浏览器发送的值并将它们插入 wget 调用,如下所示:

希望有帮助!


推荐阅读