防止爬虫读取下划线模板

Preventing crawlers from reading underscore templates

我需要一个 robots.txt Disallow 规则来防止抓取工具跟随 <script type="text/template"> 标签中的模板标签。

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

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

例如

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

被以下内容阻止:

Disallow: <%*%>

有什么想法吗?

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

这有点棘手。

许多爬虫,包括 Google,会在 URL 中对 URL 中的任何不安全字符进行静默 URL 编码,然后再根据 robots.txt 进行检查。这意味着您必须阻止编码版本。

例如,如果 URL 是:

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

Google 实际检查 robots.txt 的 URL 将是:

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 对其他爬虫有效。另请注意,某些爬虫根本不支持通配符。