Facebook支持Hash Bang#! Ajax Crawlable Urls?

时间:2011-10-28 19:02:16

标签: facebook-graph-api hash escaping fragment

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的网址在里面。这是Google的规范。 Facebook的lint爬虫需要做的是替换“#!”使用“_escaped_fragment_”。使用支持AJAX的链接似乎没有这样做。

1 个答案:

答案 0 :(得分:7)

这对我来说也是一个大问题,但遗憾的是Facebook似乎不支持这种Google URL表示法。 Facebook的抓取工具/解析器不会从哈希爆炸(#!)转换为_escaped_fragment_格式的网址。

和我一样,我在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增加对此的支持肯定只是时间问题,因为单页哈希爆炸网站只会变得更加普遍。