2015-07-20 55 views
1

我需要robots.txt Disallow規則,以防止履帶從以下就像<script type="text/template">標籤模板標籤。從閱讀防止爬蟲強調模板

當爬,網址我得到的錯誤的模樣:

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

例如

Disallow: <%*%> 

任何想法:

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

通過類似阻止?

我也注意到,它似乎對錨發生與target="_blank"。不知道爲什麼。

回答

2

這是一個有點棘手。

許多爬蟲,包括谷歌,會悄悄地進行URL編碼任何不安全字符的URL,他們檢查針對的robots.txt之前。這意味着你必須阻止編碼版本。

例如,如果URL是:

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

,谷歌實際上覈對的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「。

我已經驗證了上述作品谷歌,但情況因人而異其他爬蟲。另外請注意,一些抓取工具根本不支持通配符。