Facebook 打开图表抓取器未看到 HTML

Facebook open graph scraper not seeing HTML

我无法让 Facebook open graph scraper 查看我的页面或识别它们上的元标记。我们的一些页面可以工作(例如图书产品页面),但大多数页面在调试器中不显示任何图像或正确的标题信息。主页是我特别感兴趣让 Facebook 识别的主页,但还有许多其他主页不起作用。我们所有的页面在此处的 facebook 爬虫中都显示了 206 响应代码:https://developers.facebook.com/tools/debug/ 但是,对于大多数页面,当我检查 'what the scraper sees' link 时,我得到一个空白页面。我也试过只抓取主页上的图像 URL,调试器可以很好地看到图像。

这是主页link: https://press.uchicago.edu/index.html

header 部分如下所示:

有一个从 https://press.uchicago.edu/ 到 index.html 页面的重定向,但我一直在使用上面的完整 link 进行测试。

但是,图书产品页面确实适用于抓取工具。比如这个:https://press.uchicago.edu/ucp/books/book/chicago/N/bo125517349.html

工作页面的 header 标签是这样的:

由于我通常在其他页面上看到响应 200,我在 scraper 调试器上测试,我还创建了一个主页的小版本,仅包含 open graph 元标记作为测试。该页面可以在这里看到:https://press.uchicago.edu/index4.html

这是该页面的全部来源:

即使是这么小的页面,调试器也给出了 206 的响应。我认为 206 可能与问题无关。 Facebook 支持页面说没问题,但这么小的页面会给出部分响应似乎很奇怪......所以这可能是问题的一部分。

另一件有趣的事情:我在我们的网站上测试了一个没有 og: 标签的页面,我第一次在抓取工具中尝试它时它成功了,显示了一张图片和许多构造的 og 标签.另外,当我点击 'What the scraper sees' link 时,它向我展示了很多信息。但是在调试器中对同一页面(根本没有改变)的后续测试是空图像,并且在抓取器中看到的是空白页面。这是那个页面:https://press.uchicago.edu/books/freeEbook.html

显然是缓存控件。我们将其设置为:“缓存控制:无缓存、无存储、必须重新验证、max-age=0”。但我将其更改为“Cache-Control: no-cache”,Facebook 突然可以看到该页面。

Facebook 一定需要存储该页面的副本,因此禁止存储设置可以防止这种情况发生。

这里有一些关于设置的更多信息:

“无缓存”和“无存储”

“无缓存”表示返回的响应不能用于满足对相同 URL 的后续请求,除非先与服务器核实响应是否已更改。因此,如果存在适当的验证令牌 (ETag),则无缓存会导致往返以验证缓存的响应,但如果资源未更改,则可以消除下载。

相比之下,“无店”就简单多了。它只是禁止浏览器和所有中间缓存存储任何版本的返回响应——例如,包含私人个人或银行数据的响应。每次用户请求此资产时,都会向服务器发送一个请求并下载完整的响应。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#directives