Facebook 是不是支持 Hash Bang #! Ajax 可抓取网址?

Posted

技术标签:

【中文标题】Facebook 是不是支持 Hash Bang #! Ajax 可抓取网址?【英文标题】:Does Facebook support Hash Bang #! Ajax Crawlable Urls?Facebook 是否支持 Hash Bang #! Ajax 可抓取网址? 【发布时间】:2011-12-17 12:45:31 【问题描述】:

Facebook 是否支持 Google 的 ajax 抓取规范,如果支持,您需要做些什么来实现它?

我正在尝试让 Facebook“点赞”按钮与此处定义的 AJAX 可抓取网址一起使用:code.google.com/web/ajaxcrawling/docs/specification.html

我有这个网址,我可以直接访问它并加载它。注意“#!”在网址中:

http://www.idkshouldi.com/?#!idkDetails_idkKey=agppZGtzaG91bGRpcmMLEiljb21faWRrc2hvdWxkaV93ZWJfc2VydmVyX2dhZV9vYmpfSWRrVXNlciIDamltDAsSKWNvbV9pZGtzaG91bGRpX3dlYl9zZXJ2ZXJfZ2FlX29ial9JZGtJdGVtGN6kBgw

当我“喜欢”这个页面时,它应该抓取这个“转义片段”网址:

http://www.idkshouldi.com/?_escaped_fragment_=idkDetails_idkKey=agppZGtzaG91bGRpcmMLEiljb21faWRrc2hvdWxkaV93ZWJfc2VydmVyX2dhZV9vYmpfSWRrVXNlciIDamltDAsSKWNvbV9pZGtzaG91bGRpX3dlYl9zZXJ2ZXJfZ2FlX29ial9JZGtJdGVtGN6kBgw

为什么它不抓取这个页面? Facebook linter 没有正确抓取我的页面。如果有人在这里使用 Facebook linter 工具:developers.facebook.com/tools/debug

它不会正确抓取带有“#!”的启用 AJAX 的 URL在里面。这是谷歌的规范。 Facebook 的 lint 爬虫需要做的是替换“#!”与“_escaped_fragment_”。我的启用 AJAX 的链接似乎没有这样做。

【问题讨论】:

需要更多信息。不知道他在问什么。 很抱歉让您感到困惑。我的问题非常具体,以至于没有多少开发人员遇到过这个问题。如果您查看 Google 规范 code.google.com/web/ajaxcrawling/docs/specification.html(很长:(),那么可能会更好地理解我的问题。 这个问题不应该被关闭;这是一个合法的问题。 我知道这个问题已经结束,但我也同意应该重新打开它。 如果他们不重新打开这个,Facebook 确实支持 Google 的规范。确保包含 在您的脑海中,我将“/#!/”附加到 【参考方案1】:

这对我来说也是一个大问题,但不幸的是 Facebook 似乎不支持这种 Google URL 表示法。 Facebook 的爬虫/解析器不会将 hash bang (#!) 转换为 _escaped_fragment_ 格式的 URL。

和你一样,我已经在 Facebook 的 URL linter 上测试了我的页面,它只在动态原始页面中获取静态 Open Graph 标记,而不是在我的页面的_escaped_fragment_ 服务器端变体中特定于页面的 Open Graph 标记。不幸的是,这意味着 Facebook 将我的 Open Graph 标签视为特定于站点,而不是特定于页面。

具有讽刺意味的是,这似乎不受支持,因为 Facebook 本身使用这种方法来允许 Google 的爬虫获取 Facebook 页面。

一种可能对您有所帮助的潜在解决方法是:

1) 在 Facebook 链接中使用您的 _escaped_fragment_ 页面版本 2) 将自动重定向到您的 _escaped_fragment_ 变体添加到正确的版本。

这应该意味着 Facebook 将选择正确的元标记,用户将单击链接并最终进入正确的页面。这种方法的缺点是用户必须知道相当难看的_escaped_fragment_ URL。换句话说,可能只有您自己知道,除非您在页面上添加某种“生成可共享链接”按钮。

Facebook 增加对此的支持肯定只是时间问题,因为单页哈希爆炸网站只会变得更加普遍。

【讨论】:

我也遇到了类似的问题。在用户墙上,我可以看到呈现为 escaped_fragment 的链接...如果发现任何更好的解决方法,请更新

以上是关于Facebook 是不是支持 Hash Bang #! Ajax 可抓取网址?的主要内容,如果未能解决你的问题,请参考以下文章

做 Twitter、Hash-Bang # 之类的链接! URL的[重复]

为 SEO 的 hash-bang URL 放置啥 HTML 快照?

!!~(不是波浪号/bang bang 波浪号)如何改变“包含/包含”数组方法调用的结果?

在 RegEx 匹配中使用双 bang (!!) 是不是安全? [复制]

从扎克伯格Facebook泄露5千万用户数据的泄密门事件到Hash算法的密码签名

facebook-ios-sdk 是不是使用 iOS 6 Facebook 集成来支持登录而不打开本机 Facebook 应用程序?