【问题标题】:Facebook Debugger Returning "Document returned no data"Facebook 调试器返回“文档未返回数据”
【发布时间】:2015-06-23 05:13:06
【问题描述】:

最近我注意到 Facebook 的对象调试器无法抓取我网站的任何页面。在对互联网进行故障排除和搜索后,我不知道可能导致此错误的原因。

每当我尝试获取我网站的新抓取时,都会返回以下错误:

解析输入 URL 时出错,没有数据被缓存,或者没有数据被抓取。

当点击“查看我们的抓取工具为您的 URL 看到的确切内容”时,抓取工具返回:

文档未返回任何数据

由于缺乏数据,这显然有点难以调试。到目前为止,这是我尝试过的:

  • 检查 DNS 设置,一切正常
  • 尝试使用“Fetch as Google”,GoogleBot 在获取页面 HTML 时没有问题
  • 验证了网站上的所有元设置。 fb:app_idog:titleog:descriptionog:site_nameog:urlog:type 都在场。
  • 确保规范 URL 引用主页,并且没有任何尾部斜杠或尾部数据。
  • 回滚到上次成功抓取日期之前的提交

我不知道是什么原因造成的。如果有人有任何想法或需要更多信息,我很乐意提供。

检查访问日志后,我看到以下内容:

173.252.112.115 - - [22/Jun/2015:20:49:02 +0000] "GET / HTTP/1.1" 404 993 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"

但这很奇怪,因为它立即被普通用户跟踪:

[用户 ip] - - [22/Jun/2015:20:48:09 +0000] "GET / HTTP/1.1" 200 28227 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, 像壁虎)Chrome/16.0.912.63 Safari/535.7"

robots.txt 中没有任何内容禁止机器人。

编辑:这个站点在 Django 上运行,AngularJS 正在为我的页面提供服务。我正在使用 django-seo-js 与 prerender 一起改进 SEO。

【问题讨论】:

  • 你能提供一个实际页面的 URL 吗?您是否检查过服务器的访问和错误日​​志,了解触发抓取的时间戳?来自 FB 爬虫的请求是否会到达您的服务器?
  • 网址是taggler.com;我要查看访问日志,我会报告回来
  • 当我请求抓取时,它似乎在我的访问日志中注册。 173.252.112.115 - - [22/Jun/2015:20:49:02 +0000] "GET / HTTP/1.1" 404 993 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" 好像是 404 了?我们有一些日志表明还有 200 条回复。
  • 是的,当我在 Chrome 中访问您的页面并发送 facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php) 作为 User-Agent 标头的值时,我也得到了 404(我为此使用了 ModHeader 扩展),而使用我的请求正常的 Chrome 用户代理向我展示你的起始页就好了。因此,请调查您是否有任何插件、“防火墙”规则或类似设置来应对“机器人”的请求——在这方面,当涉及到来自 FB 抓取工具的访问时,这可能有点过分了。
  • 是的......它正在抛出一个 Javascript 堆栈跟踪。这似乎是由预渲染引起的。感谢您的帮助 - 请随时发布您的回复,我可以接受它作为答案。

标签: facebook facebook-graph-api


【解决方案1】:

当我在 Chrome 中访问您的页面并发送 facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php) 作为 User-Agent 标头的值时,我也得到一个 404(我为此使用了 ModHeader 扩展),而使用我的普通 Chrome 用户代理的请求显示我你的起始页就好了。

因此,请调查您是否设置了任何插件、“防火墙”规则或类似设置来应对“机器人”的请求——当涉及到来自 FB 抓取工具的访问时,在这方面可能有点过分热心。
但这似乎不是(只是有根据的猜测,因为这通常是导致此类问题的原因),但正如您所说,

它正在抛出一个 Javascript 堆栈跟踪。这似乎是由预渲染引起的

– 如果您找到了确切的原因,请告诉我们。

【讨论】:

  • 确实如此。 Facebook bot 的用户代理被发送到我们的?_escaped_fragment_= URL,这反过来又引发了 prerender.io 错误。一张票用于预渲染以确定此 404 的原因。
  • 事实证明,这是由 nginx 服务器故障引起的。重建新服务器后,一切恢复正常。
  • @ZackTanner 你能详细说明一下吗,我想我也有同样的问题。
猜你喜欢
  • 2018-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多