【问题标题】:Facebook/Twitter OpenGraph not scraping images on Node.js/Angular.js web applicationFacebook/Twitter OpenGraph 不会在 Node.js/Angular.js Web 应用程序上抓取图像
【发布时间】:2018-05-21 12:43:23
【问题描述】:

我最近在一个 MEAN Stack 应用程序上工作,这是一种博客,作者在其中发表文章。为了克服 OpenGraph 应用程序不抓取 Javascript 的问题,我在我的 Nginx 反向代理上实现了一个静态 php 页面和一个规则,该规则将来自某些用户代理(如 Facebook、Google+、Twitter 等)的所有调用重定向到静态页面,在为了正确地抓取数据。

一切都很好,除了一个小细节,基于 OpenGraph 的应用程序似乎无法抓取文章中的图像,因此丰富的社交分享效果不如预期。

例如,测试以下链接:https://moveramontanha.pt/article/5a21539cfdebb1074ed1436d

重定向到静态页面:

https://www.moveramontanha.pt/static_mam.php?id=5a21539cfdebb1074ed1436d

  • Facebook 共享调试器随机发出以下错误:

不支持的图像文件扩展名提供了 og:image URL, https://www.moveramontanha.pt/uploads/authors/1512141975423.jpg 确实 没有受支持的扩展程序。

提供的“og:image”属性尚不可用,因为新 图像是异步处理的。确保共享新 URL 包括图像,使用'og:image:width'指定尺寸和 'og:image:height' 标签。

  • Twitter 卡验证器日志:(无图片)

信息:页面获取成功信息:找到 17 个元标记信息: twitter:card = 找到摘要标签 信息:卡已成功加载 警告: 这张卡被重定向到 https://www.moveramontanha.pt/static_mam.php?id=5a21539cfdebb1074ed1436d

我尝试添加额外的标签,如图像宽度/高度、更改的图像格式、安全标签等。没有任何效果。

有没有其他人偶然发现过这样的问题?

提前致谢!

【问题讨论】:

  • 不确定这是否是正确的错误消息(调试工具有时也会出错) - 无论如何,您的图片太小,Facebook OG 图片的最小尺寸为 200 x 200 像素。

标签: php facebook twitter mean-stack facebook-opengraph


【解决方案1】:

对于 Twitter 的卡片爬虫,有一个深入的故障排除常见问题解答 herehere

我刚刚尝试了以下请求来获取页面中引用的图像:

curl -L -A Twitterbot -v https://www.moveramontanha.pt/uploads/authors/1501255270817.jpg

这将返回 HTML 页面,而不是 JPEG 图像。这意味着 Twitter 的卡片抓取工具无法获取有效图片。

您应该修复您的服务器以将有效的 JPEG 图像返回给 Twitterbot 用户代理。

【讨论】:

  • 当然,nginx 反向代理引擎将任何 Twitter/Facebook 用户代理请求定向到相应的 PHP 页面,无论扩展名如何!我很确定这是问题的解决方案,只允许机器人直接抓取图像,而不是将所有流量从这些用户代理转发到静态页面!
猜你喜欢
  • 2016-04-29
  • 2012-05-03
  • 2013-03-13
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
  • 2015-04-09
  • 2013-04-04
相关资源
最近更新 更多