【问题标题】:Facebook debugger won't scrape my siteFacebook 调试器不会抓取我的网站
【发布时间】:2012-05-13 14:35:55
【问题描述】:

我正在创建站点 http://Meer.li,当我通过 facebook 调试器 - http://developers.facebook.com/tools/debug/og/object?q=meer.li 运行它时 - 它找不到我的元标记。

当我查看 facebook 抓取内容的来源时,它显示了我网站的精简版本,其中更改了文档类型并且没有元标记 - http://developers.facebook.com/tools/debug/og/echo?q=http%3A%2F%2Fmeer.li%2F

我在这里做错了什么?

我正在运行 rails 3.2、ruby 1.9.3,整个过程都在 Heroku 上运行,带有 mongo 数据库。

编辑

看来我的应用中确实有正确的接受标头...如果我在不同的视图中这样做:

<%= request.headers["Accept"] %>

我明白了:

text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

如果我们执行 curl -H 和正确的标题,为什么我们可以抓取整个站点?为什么 facebook 不抓取我的网站?

【问题讨论】:

    标签: ruby-on-rails facebook ruby-on-rails-3 debugging heroku


    【解决方案1】:

    在调试器中尝试您的 url,它说响应状态代码是 206,这意味着“部分内容”。

    我试图卷曲 url,实际上我得到的响应是部分的,它不包括 html、head 和 body 标签(或它们的结束标签),并且看起来像包装在 html 中的 jsonp 响应

    $("#designs_content").append
    

    我不知道为什么会这样,也许你的服务器会根据那个检查请求和响应的用户代理字符串?


    编辑

    我不确定这是否与 Heroku 有关,我从未与他们合作过。 另外,我对rails一无所知,所以我无能为力。

    Wget 与此无关,它是您的 Web 服务器根据 http 请求的标头返回的响应。 当您使用浏览器发出请求时,它会在请求中添加一些标头以帮助服务器找出一些事情。 如果您在 chrome(Safari 等)、网络选项卡(它们都有)或使用网络嗅探器中打开 firebug 或开发人员工具,则可以查看发送的标头。

    为了让您的生活更轻松,我检查了导致此问题的标题是什么... 试试这个:

    curl "http://meer.li/"
    

    您会看到响应是 jsonp 而不是整个 html 页面。 现在试试这个:

    curl -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" "http://meer.li/"
    

    您将获得页面的完整 html 版本。

    由于 facebook 在报废您的页面时不会发送“接受”标头,因此当您使用浏览器查看源代码时,响应不是您所看到的。

    我不知道您如何解决这个问题,因为这肯定与您的特定设置有关,但现在至少您知道问题所在了。

    【讨论】:

    • 嗯...好的。这到底是什么意思?我没有在应用程序中使用 wget。它可能与托管在 Heroku 上有关吗?我也将网站作为 json 发送(meer.li/designs/featured.json)...这与它有什么关系吗?
    • 非常酷。非常感谢您的帮助。非常感谢。你能告诉我标题通常在哪里定义吗?它是我应该查看的服务器还是我的应用程序中的某些东西?我在哪里可以阅读更多关于标题的信息?再次非常感谢:-)。
    • 我不确定,但是一些谷歌搜索想出了这个api.rubyonrails.org/classes/ActionController/MimeResponds.html:“Rails 从客户端提交的 HTTP Accept 标头中确定所需的响应格式”。所以我想问题出在 Rails 上,请进一步检查。
    • 哇...你很擅长调试:-)。我现在无法推送到heroku,但我明天会在可以的地方尝试。我也在回应 .js 和 .json - 这可能与它有关。不知道应该是什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    相关资源
    最近更新 更多