【问题标题】:Facebook's Lint is crawling root URL rather than the given URLFacebook 的 Lint 正在抓取根 URL 而不是给定的 URL
【发布时间】:2013-07-22 01:53:31
【问题描述】:

网络上有关于此的先前帖子,但是没有一个提议的解决方案实际上适用于我的场景。

我有一个子页面,它们都有自己独特的 og 标签,以及一个带有自己的 og 标签的父根域页面,所有这些页面都将被 facebook 抓取,以便人们在发布时可以看到描述/图片。

但是,当我在框中发布我的子网址时,结果公然证明 facebook 爬取了父页面。甚至“确切地查看我们的 scraper 看到的内容”页面也证实了这一点,因为它只是显示了父模板。

这里是fb scraper的链接:https://developers.facebook.com/tools/debug

这是我在根域 html 模板中的 og 标签: 假设父母是www.me.com 假设一个孩子是www.me.com/path/path

<head> ...

    <meta name="keywords" content="...">

    <meta name="description" content="..." />

    <meta property="fb:app_id" content="..."/>
    <meta property="og:site_name" content="..." />
    <meta property="og:type" content="website" />
    <meta property="og:title" content="..." />
    <meta property="og:image" content="..." />
    <meta property="og:description" content="..." />
    <meta property="og:url" content="http://www.me.com" />

下面是子html模板中的og标签:

<head> ...

    <meta name="keywords" content="...">

    <meta name="description" content="..." />

    <meta property="fb:app_id" content="..."/>
    <meta property="og:site_name" content="..." />
    <meta property="og:type" content="article" />
    <meta property="og:title" content="..." />
    <meta property="og:image" content="..." />
    <meta property="og:description" content="..." />
    <meta property="og:url" content="http://www.me.com/path/path" />

这非常令人沮丧,因为我尝试以不同的组合删除和添加许多标签,并且每一次,www.me.com 父级都会被抓取,而子级则被忽略!!

我试图模仿其他网站的标签顺序,这个功能就像 cnn.com 一样,但是我的仍然拒绝抓取孩子..

有什么帮助吗?谢谢。

【问题讨论】:

  • 我怎样才能为这个赏金增加更多积分?
  • 你有一个应用ID:你有应用吗?它有规范的网址吗?
  • 是的,如果这会导致任何问题,我会将“站点 url”和“域”都设置为根 url。
  • 在您的应用程序中,您是否设置/操作对象 URL?这就是用于抓取的东西,我认为......
  • 我没有,它们最初是 django 模板变量,但我只是对它们进行了硬编码,看看它是否会失败,它仍然会失败

标签: facebook-graph-api facebook-opengraph


【解决方案1】:

检查你不是

  • 拒绝爬虫尝试到达子页面
  • 当爬虫尝试加载子页面时将子页面重定向到父页面
  • 在指向主页的子页面上包含 og:url 元标记
  • 在指向父页面的子页面中包含规范元标记

到目前为止,这些是最可能的原因,尽管您在问题中说过您的 og:url 标签是正确的,但根据我的经验,这很可能是问题

【讨论】:

  • 我什么都没做
  • 我删除了模板语言并硬编码了 url 标签,它们仍然不起作用
  • “拒绝爬虫试图到达子页面当爬虫尝试加载时将子页面重定向到父页面”你能详细说明你的前两点是什么意思吗?
  • 检查您返回到 Facebook 请求的内容,确保它不是错误或重定向页面,并且您返回的响应没有指向不同 URL 的 og:url 标签,或者您没有指向不同 URL 的规范元标记
  • 我在 facebook 的 lint 调试工具上点击了“查看我们的抓取工具看到的确切内容”,奇怪的是我看到的内容与父/根 url 完全相同,而不是应该获取的 url(子)。
【解决方案2】:

在终于注意到一些奇怪的提示后,我解决了这个问题。我正在处理的网站已设置,因此当且仅当未设置特定 cookie 时,第一个页面视图才会重定向到启动页面。

因此,Facebook 爬虫每次都在访问该页面。但这并不明显,因为启动页面继承了很多东西,看起来就像常规子页面之一。

多么不幸且耗时的错误。

【讨论】:

    【解决方案3】:

    这可能是一个愚蠢的问题,但我还是会问:子 URL 是否具有公共访问权限?您面临的问题可能是因为子 url 被重定向到根 url。

    在 facebook linter 输出中检查 Fetched UrlCanonical Url 部分。这会给你一些想法,是否正在发生重定向。

    【讨论】:

    • 这很令人沮丧。佳能与获取的网址是不同的。无论出于何种原因,Canon 都是根域 url,获取的是一些我们实际上想要从中获取数据的子 url……结果,所有应该属于子域的数据都从父域中提取了!!!!跨度>
    • “公共访问”是什么意思?我可以通过请求/浏览器访问任何页面
    • 在子模板中我查看了源代码并且标签是正确的,我粘贴到 lint,bam 他们只得到父标签
    • 我的意思是公开访问,任何外部方都可以查看子文档而无需任何身份验证。如果您的子页面需要经过身份验证的访问,则 facebook 爬虫将无法访问子页面,因为它将被重定向到父页面。
    • 如果你想检查这个,安装REST client for CHROME。使用该工具请求您的孩子网址并检查它得到的响应。
    【解决方案4】:

    它是 Facebook.... 在他们的“缓存”或任何你想称呼它的东西中都有一些东西.... 当一个页面注册的 url 不正确时......纠正这可能会很棘手......如果不是不可能......

    试试这个....将您的后页网址更改为: www.me.com/path/path/file1.php 并通过 linter 运行它......使用正确的元标记......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 2017-11-21
      • 2012-11-26
      相关资源
      最近更新 更多