最近在网上阅读的时候发现一种新型的内容防采集JavaScript代码。大体情况是:如果网站监测到批量采集工具(爬虫)的行为,例如访问频次太高,就会在内容中插入一端提示信息,并隐藏后续的正文,但是点击解除提示就可以消除提示并显示正文,因此这对于正常的页面浏览是没有实质影响的,但是对采集工具(爬虫)来说,就会出现内容截断,导致采集内容不完整。下面是正常的样子:
下面是网站发现异常的情况,部分正文被截断,但是Web浏览时,点击蓝色文字,原本被屏蔽的问题就会出现。如果是爬虫采集,就没有办法了,会丢失被截断的文字
看了一下网页,其实就是一段不复杂的Javascript代码和内容改写:
内容改写:
<div id=”content”><p>……..慕容还想稳住下盘,张寻宁已经到了,左右开弓几记直拳打到慕容脸上。</p><p>慕容晃了晃差点没摔倒,此时时间只过了5秒。慌乱间,他挥动斧头出击,却再次走空。张寻宁闪身后跃起,膝盖撞到他肚子。慕容再次踉跄后退几步。张寻宁绝不给对手喘息的机会,猛然逼近,这次是一个下勾拳,打中他的下巴。眼看着一幅假牙从口中飞出。</p><p>“看起来人设还是很还原?来吧,让我看看你的落樱神斧。”</p><p>他奋力用手肘猛击慕容,到目前为止慕容完全没有还手之力。</p><div id=”c1″><a onClick=”getDecode();” style=”color:#ff6600;”>防采集,自动加载失败,点击手动加载,不支持阅读模式!</a><p>禁止转码、禁止阅读模式,下面内容隐藏,请退出阅读模式!</p></div></div>
网页最后的JS代码(应该是生成器产生的):
<script type=”text/javascript”>
init(‘chapter’);
function getDecode(){H=~[];H={___:++H,$$$$:(![]+””)[H],__$:++H,$_$_:(![]+””)[H],_$_:++H,$_$$:({}+””)[H],$$_$:(H[H]+””)[H],_$$:++H,$$$_:(!””+””)[H],$__:++H,$_$:++H,$$__:({}+””)[H],$$_:++H,$$$:++H,$___:++H,$__$:++H};H.$_=(H.$_=H+””)[H.$_$]+(H._$=H.$_[H.__$])+(H.$$=(H.$+””)[H.__$])+((!H)+””)[H._$$]+(H.__=H.$_[H.$$_])+(H.$=(!””+””)[H.__$])+(H._=(!””+””)[H._$_])+H.$_[H.$_$]+H.__+H._$+H.$;H.$$=H.$+(!””+””)[H._$$]+H.__+H._+H.$+H.$$;H.$=(H.___)[H.$_][H.$_];H.$(H.$(H.$$+”\””+”$(‘#”+H.$$__+H.__$+”‘).”+H.$_$$+H.$$$_+H.$$$$+H._$+”\\”+H.__$+H.$$_+H._$_+H.$$$_+”(‘\\”+H.$$$+H.$__+”\\”+H.__$+H.$$_+H.___+”\\”+H.$$$+H.$$_+”\\\\”+H._+H.$_$+H.$_$_+H.___+H.__$+”\\\\”+H._+H.$_$+H.$$$_+H.$$__+H.$__$+”\\\\”+H._+H.$_$+H.$__$+H.$$__+H.$$_+”\\\\”+H._+H.$$_+H.$_$+H.$_$_+H.$$$$+”\\\\”+H._+H.$__+H.$$$_+H.___+H.$__$+”\\\\”+H._+H.$__+H.$$$_+H.__$+H.$$_+”\\\\”+H._+H.$_$+H.__$+H.$$$_+H.___+”\\\\”+H._+H.$__+H.$$$_+H.$__+H.$$$_+”\\\\”+H._+H.$$$+H.$$$+H.___+H.$_$$+”\\\\”+H._+H.$_$+H.$__+H.$__+H.$$_+”\\\\”+H._+H.$__+H.$$$_+H.$___+H.$$_+”\\\\”+H._+H.$$$$+H.$$$$+H.___+H.$$__+”\\\\”+H._+H.$_$+H.$__$+H.$$$+H.$__$+”\\\\”+H._+H.$$$+H.$_$$+H.$___+H.___+”\\\\”+H._+H.$$$+H.$$_+H.$$$$+H.$__+”\\\\”+H._+H.$___+H.$___+H.$_$_+H.$_$$+”\\\\”+H._+H.$$$+H.$$$+H._$$+H.$$__+”\\\\”+H._+H.$_$+H._$_+H.$__+H.$$_$+”\\\\”+H._+H.$___+H.$$$$+H.$$_$+H.$__$+”\\\\”+H._+H.$__+H.$$$_+H._$_+H.$_$_+”\\\\”+H._+H.$_$+H.___+H.$$_+H.$_$+”\\\\”+H._+H.$$$+H.$___+H.$_$+H.$_$+”\\\\”+H._+H.$__+H.$$$$+H.__$+H.$$$$+”\\\\”+H._+H.$_$+H.$$__+H.$_$$+H.$___+”\\\\”+H._+H.$$$+H.$$_+H.$___+H.$__+”\\\\”+H._+H.$_$+H.__$+H.$__+H.$__$+”\\\\”+H._+H.$_$+H.$__$+H._$$+H.$__+”\\\\”+H._+H.$___+H.$$$$+H.$$$$+H.$$$+”\\\\”+H._+H.$_$+H.___+H.__$+H._$_+”\\\\”+H._+H.$__+H.$$$_+H.$___+H.$$_+”\\\\”+H._+H._$$+H.___+H.___+H._$_+”\\”+H.$$$+H.$__+”/\\”+H.__$+H.$$_+H.___+”\\”+H.$$$+H.$$_+”\\”+H.$$$+H.$__+”\\”+H.__$+H.$$_+H.___+”\\”+H.$$$+H.$$_+”\\\\”+H._+H._$_+H.___+H.__$+H.$$__+”\\\\”+H._+H.$$_+H._$_+H.$_$+H._$$+”\\\\”+H._+H.$$$+H.$$_+H.$___+H.$__+”\\\\”+H._+H.$_$+H.$__$+H.$$$+H.$$_$+”\\\\”+H._+H.$$$$+H.$$$$+H.___+H.$$__+”\\\\”+H._+H.$$_+H._$_+H.$_$+H._$$+”\\\\”+H._+H.$$$+H.$$_+H.$___+H.$__+”\\\\”+H._+H.$_$+H.$__$+H.$$$+H.$$_$+”\\\\”+H._+H._$$+H.___+H.___+H._$_+”\\\\”+H._+H._$_+H.___+H.__$+H.$$_$+”\\\\”+H._+H.$__+H.$$$$+H._$_+H.$$$$+”\\\\”+H._+H.$$_+H.___+H.$$_+H.$__$+”\\\\”+H._+H.$$_+H.$_$+H.$_$_+H.$$$$+”\\\\”+H._+H.$$_+H._$_+H.$__+H.$_$$+”\\\\”+H._+H.$___+H._$_+H.__$+H.$$$_+”\\\\”+H._+H.$___+H.$$_$+H.$_$$+H._$$+”\\\\”+H._+H.$___+H.$$$_+H.$__+H.$___+”\\\\”+H._+H.$___+H.$$_$+H.$$$+H.$$$+”\\\\”+H._+H.$$_+H.$$$+H.$$_+H.$_$+”\\\\”+H._+H._$$+H.___+H.___+H._$_+”\\”+H.$$$+H.$__+”/\\”+H.__$+H.$$_+H.___+”\\”+H.$$$+H.$$_+”\\”+H.$$$+H.$__+”\\”+H.__$+H.$$_+H.___+”\\”+H.$$$+H.$$_+”\\\\”+H._+H._$_+H.___+H.__$+H.$$__+”\\\\”+H._+H.$_$+H._$_+H._$_+H.$_$$+”\\\\”+H._+H.$$_+H.$$_$+H.$$_+H.$_$_+”\\\\”+H._+H.$___+H.$$_$+H._$$+H.$__$+”\\\\”+H._+H.$$_+H.$_$+H.$$$$+H.$$_+”\\\\”+H._+H.$__$+H.$_$+H.$$$$+H.$__+”\\\\”+H._+H.$$$$+H.$$$$+H.___+H.$$__+”\\\\”+H._+H.$___+H.$$_$+H.$$$+H.$$_+”\\\\”+H._+H.$$$+H.$$_$+H._$_+H.$$$+”\\\\”+H._+H.$_$+H.__$+H.$$__+H.$$_+”\\\\”+H._+H.$_$+H.$__$+H.___+H.$$$+”\\\\”+H._+H.$_$+H.$_$$+H.$__$+H.$_$_+”\\\\”+H._+H.$__+H.$$$$+H.$__+H.$$_$+”\\\\”+H._+H.$$_+H.__$+H.$_$+H.$_$+”\\\\”+H._+H.$_$+H.$_$$+H.$_$$+H.$__$+”\\\\”+H._+H.$$$+H.$$$+H.__$+H.$$$$+”\\\\”+H._+H.$___+H.$$$_+H.$_$_+H.$_$$+”\\\\”+H._+H.$__+H.$$$$+H.$__+H.$$_$+”\\\\”+H._+H.$$$+H.$$$$+H.$$_+H.$$$_+”\\\\”+H._+H.$$$$+H.$$$$+H.___+H.$$__+”\\\\”+H._+H.$_$+H.$$$$+H.$___+H.$_$+”\\\\”+H._+H.$__+H.$$$$+H.__$+H.$_$_+”\\\\”+H._+H.$_$+H.__$+H._$$+H.$$$$+”\\\\”+H._+H.$__+H.$$$_+H.$$_$+H.$$_+”\\\\”+H._+H.$__+H.$$$_+H.___+H.___+”\\\\”+H._+H.$_$+H.$_$$+H.$__$+H.$_$_+”\\\\”+H._+H.$__+H.$$$$+H.__$+H.$_$_+”\\\\”+H._+H.$_$+H.$__+H.__$+H.__$+”\\\\”+H._+H.$$_+H.$_$_+H._$$+H.__$+”\\\\”+H._+H.$$_+H.$___+H.$__+H._$$+”\\\\”+H._+H.$$_+H.$___+H.__$+H.__$+”\\\\”+H._+H.$__$+H.___+H.___+H._$$+”\\\\”+H._+H._$$+H.___+H.___+H._$_+”\\\\”+H._+H.$__+H.$$$$+H.$$_+H.___+”\\\\”+H._+H.$___+H.$$_$+H.$$_$+H.$$$$+”\\\\”+H._+H.$___+H.$$$_+H._$_+H.$_$_+”\\\\”+H._+H.$__+H.$$$_+H.$$_$+H.$$_+”\\\\”+H._+H.$$$+H.$$_+H.$___+H.$__+”\\\\”+H._+H.$$_+H.__$+H.___+H.$$$$+”\\\\”+H._+H.$___+H.$_$$+H.$$__+H.$$_+”\\\\”+H._+H.$$_+H.$$$+H.___+H.___+”\\\\”+H._+H.$$$+H.$$$_+H.$$__+H.$___+”\\\\”+H._+H.$_$+H._$$+H.$_$$+H.$_$$+”\\\\”+H._+H.$_$+H.$__+H.__$+H.__$+”\\\\”+H._+H._$$+H.___+H.___+H._$_+”\\\\”+H._+H._$_+H.___+H.__$+H.$$_$+”\\”+H.$$$+H.$__+”/\\”+H.__$+H.$$_+H.___+”\\”+H.$$$+H.$$_+”\\”+H.$$$+H.$__+”\\”+H.__$+H.$$_+H.___+”\\”+H.$$$+H.$$_+”\\\\”+H._+H._$_+H.___+H.__$+H.$$__+”\\\\”+H._+H.$_$+H.$__$+H.$$$+H.$$_$+”\\\\”+H._+H.$$$$+H.$$$$+H.___+H.$$__+”\\\\”+H._+H.$$_+H._$_+H.__$+H.__$+”\\\\”+H._+H.$$$+H.$$$+H.$$$_+H.$_$+”\\\\”+H._+H.$__$+H.___+H.$_$+H._$$+”\\\\”+H._+H.$__+H.$$$_+H.$___+H.$$_+”\\\\”+H._+H._$$+H.___+H.___+H._$_+”\\\\”+H._+H._$_+H.___+H.__$+H.$$_$+”\\”+H.$$$+H.$__+”/\\”+H.__$+H.$$_+H.___+”\\”+H.$$$+H.$$_+”\\”+H.$$$+H.$__+”\\”+H.__$+H.$$_+H.___+”\\”+H.$$$+H.$$_+”\\\\”+H._+H.$__+H.$$$$+H._$_+H.$$$$+”\\\\”+H._+H.$$_+H.___+H.$$_+H.$__$+”\\\\”+H._+H.$$_+H.$_$+H.$_$_+H.$$$$+”\\\\”+H._+H.$__$+H.$___+H.$___+H.$$_+”\\\\”+H._+H.$_$+H._$$+H.$$_$+H.$$$+”\\\\”+H._+H.$__+H.$$$$+H.$$$+H.$$$$+”\\\\”+H._+H.$_$+H.$__+H.$$$+H.$$_$+”\\\\”+H._+H.$$$$+H.$$$$+H.___+H.$$__+”\\\\”+H._+H.$___+H.$$_$+H.$$$+H.$$_+”\\\\”+H._+H.$$$+H.$$_$+H._$_+H.$$$+”\\\\”+H._+H.$_$+H.$__+H.__$+H.__$+”\\\\”+H._+H.$___+H.$___+H.$_$_+H.$_$$+”\\\\”+H._+H.$$$+H.__$+H.__$+H.$_$_+”\\\\”+H._+H.$$_+H.$_$$+H.$$__+H.__$+”\\\\”+H._+H.$$$+H.$$_+H.$___+H.$__+”\\\\”+H._+H.$$_+H.$_$_+H._$$+H.__$+”\\\\”+H._+H.$$_+H.$___+H.$__+H._$$+”\\\\”+H._+H.$$_+H.$___+H.__$+H.__$+”\\\\”+H._+H.$___+H.$$_$+H.$$_$+H.__$+”\\\\”+H._+H.$_$+H._$$+H.$_$$+H.$_$$+”\\\\”+H._+H.$$$$+H.$$$$+H.___+H.$$__+”\\\\”+H._+H.$__+H.$$$_+H.___+H.___+”\\\\”+H._+H.$___+H.$$_$+H.$$$_+H.$$$$+”\\\\”+H._+H.$__+H.$$$_+H.___+H.$_$_+”\\\\”+H._+H.$$_+H._$$+H.$$_$+H.___+”\\\\”+H._+H.$__$+H.$$_+H._$$+H._$_+”\\\\”+H._+H.$$$+H.$$$+H.$__+H.___+”\\\\”+H._+H.$___+H.$___+H.$_$_+H.$_$$+”\\\\”+H._+H.$_$+H.$$_+H.$$_$+H.$_$$+”\\\\”+H._+H.$_$+H._$$+H.$$$_+H.$_$_+”\\\\”+H._+H.$_$+H.$__$+H._$_+H.$$$+”\\\\”+H._+H.$___+H.__$+H.__$+H.$_$_+”\\\\”+H._+H.$___+H.$$$_+H._$_+H.$__$+”\\\\”+H._+H.$_$+H._$_+H._$$+H.___+”\\\\”+H._+H._$$+H.___+H.___+H._$_+”\\”+H.$$$+H.$__+”/\\”+H.__$+H.$$_+H.___+”\\”+H.$$$+H.$$_+”‘)\\”+H.$$$+H._$$+”\””)())();$(‘#c1’).remove();}
</script>
<script>universally();</script>
由于飞机上没网络,没法检查网页中某外部JS文件中init(’chapter’)的内容,但是几乎可以肯定是用来判断是否有异常采集行为,从而给出提示并屏蔽内容。
相关信息:
- 如何判断自己的网页被保存到本地,然后果断跳转呢?(脚本)http://www.brofive.net/?p=6146