URL检查错误:在检查URL时发生了内部错误。

28
如何调试 Facebook 调试器?
问题详细描述:
我在自托管的 WordPress 网站上使用“帖子和页面中的开放图谱协议”插件手动输入帖子的 OG 数据。在将其分享到 Facebook 之前,我使用 FB 调试器工具测试帖子的 URL,并且结果总是正确的。
然而,最近调试器返回了这个错误消息:“Linting URL 错误:在对 URL 进行 Linting 时发生内部错误”,几天来我都无法摆脱它。我尝试了多次进行调试,但没有帮助。它被卡住了。我通过谷歌搜索寻找解决方案,但没有找到任何信息。也许我错了,但这个错误消息似乎很少见。
我不是专家,但我认为调试器工具由于我的帖子中存在双重 OG 数据而感到困惑:
1. 我手动插入插件“帖子和页面中的开放图谱协议”的 OG 信息。 2. JWPlayer WordPress 插件插入视频到帖子中时自动生成的 OG 信息。
我只需要第一个,我通常会删除 JWPlayer 的自定义字段,但这一次我忘记这么做了。
在调试器返回错误消息后,我删除了 JWP 自定义字段,希望它们引起了某些冲突,我保存了帖子并尝试再次调试。调试器再次返回错误消息。
Graph API 看到我的帖子中过时的信息,并且不会刷新它,即使我已经在帖子中更正了所有内容并进行了多次调试。对我来说,调试器看到了 URL 中的错误并且无法忘记它。
我甚至删除了帖子,将其内容复制并粘贴到新的帖子中,并赋予其相同的标题(失去那些可能跟随短链接但仍然访问的访客)。调试器同样对重新发布的帖子做出反应。错误消息再次出现。我在调试器中测试了我的其他帖子,一切都很完美。显然调试器记住了这个特定的 URL,原因不明。如果我使用不同的标题重新发布帖子,则问题将消失。
我将有问题的 URL 分享到 Facebook 上,奇怪的是它显示了正确的数据。一切似乎都没问题:标题、描述、缩略图等... 但是,我测试帖子中的“分享”按钮,它在 Facebook 上显示了错误的数据,即使我已经更正了它。调试器看到的数据不再在帖子中,所以我被迫移除“分享”按钮,以免游客在 Facebook 上分享错误的信息。
现在我处于一个自相矛盾的境地,试图找到一种方法来调试调试器。如何清除其内存,使其忘记我的 URL,并且我可以从零开始重新开始?
正如您所见,我不是这些问题的专家。我花费了巨大的时间和资源来构建我的网站,没有任何 PHP 和 CSS 的先前知识,现在由于这些 Facebook 问题,一切都变得混乱。我正在浪费宝贵的时间处理这些无聊的事情。为什么一切都必须如此复杂?我请求所有开发者,请制定一个好的、简单的、用户友好的和有效的标准,并坚持遵循。请停止让一切变得复杂化。现在是什么错误消息?调试器根本没有提供解
{
   "url": "http://mydomain/post-title/",
   "type": "video.movie",
   "title": "",
   "image": [
      {
         "url": "http://mydomain/uploads-folder/post-title-video-thumbnail.jpg"
      },
      {
         "url": "http://mydomain/uploads-folder/post-thumbnail.jpg"
      }
   ],
   "video": [
      {
         "url": "http://mydomain/uploads-folder/jw-player-plugin-for-wordpress/player/player.swf?file=http\u00253A\u00252F\u00252Fmydomain\u00252Ffiles\u00252Fvideo-title.flv&controlbar=bottom&dock=false&autostart=false&height=331&width=545&captions.back=false&captions.fontsize=12&captions.state=true&icons=true&playlist.position=none&playlistsize=180&repeat=none&shuffle=false&bufferlength=1&smoothing=true&stretching=uniform&wmode=opaque&mute=false&volume=90&plugins=captions-1\u00252Cgapro-2\u00252C&gapro.accountid=UA-76476476476-1&gapro.trackstarts=true&gapro.trackpercentage=true&gapro.tracktime=true",
         "type": "application/x-shockwave-flash",
         "width": 545,
         "height": 331
      }
   ],
   "description": "",
   "site_name": "here's the name",
   "updated_time": "2012-12-05T20:09:40+0000",
   "id": "754654658476545"

经过更正后,调试器应该看到的是这样的内容,但它未能实现。然而,当URL被粘贴在Facebook上时,它显示得正确:

{
   "url": "http://mydomain/post-title/",
   "type": "website",
   "title": "here's the title",
   "image": [
      {
         "url": "http://mydomain/uploads-folder/post-thumbnail.jpg"
      }
   ],
   "description": "This is a story about...",
   "site_name": "my site",
   "updated_time": "2012-12-05T20:11:56+0000",
   "id": "754654658476545"
}

通过按钮分享时,显示的是之前错误的数据。


如果有什么安慰的话,我也遇到了完全相同的问题。你能否发布页面的真实URL,我看看能否提供帮助? - gjb
1
JSON表示中video键下的URL已经损坏,因为所有百分号的实例都被替换为Unicode代码点引用(即\u0025而不是%)。然而,这种语法对于URL来说并没有定义,因此如果没有一些JS层进行反向替换,您的URL将无法正确解释。 - collapsar
请发URL给我,这样我就可以在Facebook的内部系统中运行它并尝试进行调试。 - Simon Cross
1
在底部有一个链接“查看我们的网络爬虫为您的URL所看到的内容”。如果数据不正确,请监控您的Web应用程序,以确定数据为何不正确。检查单击“获取新的抓取信息”时是否更新“抓取时间”。如果是这样,我会监控来自/去向您提供的URL的Web服务器的流量。 - Malcolm McCaffery
没有提供URL进行调查,所以无法给予负面评价。 - Colin Smillie
你为什么不提到可用的“获取新抓取信息”和“显示现有抓取信息”按钮呢?这听起来像是一个简单的缓存问题。如果您在之后对帖子进行更改并再次粘贴URL,大多数情况下FB会使用缓存的信息,您必须明确点击调试器中的“获取新的抓取信息”按钮才能获取更新的内容。 - lars.schwarz
1个回答

1
强制 Facebook 爬虫重新获取您的数据:

https://developers.facebook.com/docs/sharing/opengraph/using-objects#update

Facebook爬虫将重新抓取(因此更新)对象: 当在对象调试器中输入对象URL时,每30天后的第一次抓取 当应用程序使用API端点触发抓取时 此Graph API端点只是一个调用: POST /?id={object-instance-id or object-url}&scrape=true id参数可以是您对象的规范URL或图表中对象实例的ID。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接