1

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

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

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

我会考虑SecureRandom.urlsafe_base64为刮刀生成一个令牌,并在普通用户无法访问的空白页面(带有元数据)上进行异常处理,但从技术上讲,这并不安全,考虑到如果你看过在正确的 JS 文件(用于 Open Graph 操作 POST 中的 URL 引用)和元标记中,您可以获得受保护的用户数据。这个想法似乎并不接近正确......

有任何想法吗?

4

2 回答 2

2

用户代理很容易被伪造。小心允许仅基于用户代理的访问。

我相信他们有办法允许通过 api 进行抓取。

于 2016-07-07T18:25:04.050 回答
1

只要您的内容具有每个用户看到的唯一 URL(通常受登录过滤器保护),您就可以通过检查源 IP 或用户代理以匹配 Facebook 抓取工具来允许访问。

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

于 2013-02-07T21:17:54.390 回答