如何让Facebook刮板进入动态的,经过身份验证的页面

时间:2013-02-07 20:05:27

标签: ruby-on-rails ruby facebook facebook-opengraph scraper

我有一个社交网络,需要在用户输入之前进行身份验证和电子邮件验证。进入后,用户只能看到朋友的内容。它实际上非常简单,即使它听不到它。这是我在过滤前的身份验证:

  def authenticate
    if logged_in?
      redirect_to authentication_url if current_user.account_disabled
    else
      redirect_to root_url
    end
  end

我遇到的问题是让Facebook刮刀从某些动态页面获取元标记。我read你可以允许Facebook的用户代理进入非公共页面,但对于robots.txt文件中受保护的页面不是这样吗?我对刮刀没有经验,但肯定会需要一个cookie和一个启用的帐户来抓取我网站上的动态信息?我甚至不确定如何实际编写方法让刮刀进入或写入它。

我会为抓取器生成一个带有SecureRandom.urlsafe_base64的令牌,并在空白页面(带有元数据)上生成异常,这对于普通用户来说不应该是可访问的,但从技术上讲,这不会考虑到如果你查看正确的JS文件(用于Open Graph动作POST中的URL参考)和元标记,你可以得到受保护的用户数据。这个想法似乎没有接近正确......

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

只要您的内容具有每个用户看到的唯一网址(通常受登录过滤器保护),您就可以通过检查源IP或用户代理来匹配Facebook刮刀来进行访问。

但是,与大多数社交网站一样,您可能使用相同的URL来返回为当前登录用户呈现的自定义内容。这本质上是无法解决的 - 因为每个用户都有不同版本的''/ profile'。

答案 1 :(得分:1)

用户代理很容易伪造。小心只允许基于用户代理进行访问。

我相信他们有办法允许通过api刮刮。