【问题标题】:Preventing crawlers from reading underscore templates防止爬虫读取下划线模板
【发布时间】:2015-07-20 22:54:56
【问题描述】:

我需要一个 robots.txt Disallow 规则,以防止爬虫跟随 <script type="text/template"> 标签中的模板标签。

抓取时,我收到错误的网址如下所示:

404 GET /foo/bar/<%=%20 getPublicUrl %20%

例如

<script type="text/template">
  <a href="<%= my_var %>" target="_blank">Test</a>
</script>

被类似的东西阻止:

Disallow: <%*%>

有什么想法吗?

我确实注意到它似乎发生在 target="_blank" 的锚点上。不知道为什么会这样。

【问题讨论】:

    标签: templates web-crawler underscore.js robots.txt


    【解决方案1】:

    这有点棘手。

    包括 Google 在内的许多抓取工具会在与 robots.txt 核对之前对网址中的任何不安全字符进行静默网址编码。这意味着您必须阻止编码版本。

    例如,如果 URL 是:

    http://example.com/foo/bar/<% my_var %>
    

    Google 实际检查 robots.txt 的网址是:

    http://example.com/foo/bar/%3C%%20my_var%20%%3E
    

    空格和尖括号是静默 URL 编码的。所以你需要像这样阻止它:

    User-agent: *
    Disallow: */%3C%*%%3E
    

    如果您尝试像这样阻止它:

    # Does not work:
    User-agent: *
    Disallow: */<%*%>
    

    那么什么都不会被阻止,因为它将“”与“%3C”和“%3E”进行比较。

    我已验证上述内容适用于 Google,但 YMMV 适用于其他爬虫。另请注意,某些爬虫根本不支持通配符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-07
      • 1970-01-01
      相关资源
      最近更新 更多