Bing Search,Imgur和Reddit等网站如何从URL生成网站的缩略图


How do sites like Bing Search, Imgur, and Reddit generate a thumbnail of the website from a URL?

在Imgur中,您可以输入图像URL,几秒钟后,就会出现图像的缩略图。或者在必应搜索中,你可以(或习惯)在访问网站之前在搜索结果中查看网站的缩略图。

我很想为我的网站实现类似的东西,但我无法弄清楚它是如何完成的。此外,难道没有安全问题吗?我想服务器至少必须下载网站,渲染它并截取屏幕截图。如果它是一个恶意网站,并且您在服务器上下载了恶意内容怎么办?

像PhantomJS这样的无头Web浏览器引擎可以用于此目的。请参阅他们维基上的示例。是的,谨慎的做法是在某种沙箱中运行它,将 URL 队列输入其中,然后从文件系统中获取生成的缩略图。

虽然我不知道上述任何服务的内部工作原理,但我猜他们下载/创建图像的本地副本并从中生成缩略图。

Imgur作为图像托管服务,在能够从中生成缩略图或其他任何内容之前,肯定需要图像的副本。图像可以存储在本地或仅存储在内存中,但无论哪种方式,都必须下载。

显示网站屏幕截图的搜索引擎可能具有在内容被索引时定期截取可视区域的屏幕截图的服务,然后将这些屏幕截图(或衍生品)与搜索结果一起提供。截取屏幕截图确实并不危险,因此无需担心,并且无论使用什么工具来加载/解析/索引网站,显然都会考虑到安全考虑。

当然,您正在下载的数据也存在安全问题;图像很容易在其EXIF数据中包含可执行代码(例如PHP),因此您需要小心如何处理图像以及如何处理。