防止爬虫读取下划线模板
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 对其他爬虫有效。另请注意,某些爬虫根本不支持通配符。
我需要一个 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 对其他爬虫有效。另请注意,某些爬虫根本不支持通配符。