突破Discuz!的防采集

当短时间内频繁采集discuz,会触发discuz的防采集机制,默认打开的是一段javascript脚本,然后再通过跳转跳转到真实地址,这样子的情况下如何采集呢,本文将教会你如何破解这类型的防采集的采集。

当短时间内频繁采集discuz,会触发discuz的防采集机制,默认打开的是一段javascript脚本,然后再通过跳转跳转到真实地址,这样子的情况下如何采集呢,本文将教会你如何破解这类型的防采集的采集。

Discuz开启防采集后的采集方法,也就是帖子后面加了?dsign=这样子的

Discuz在X3中增加了防采集功能,具体见Discuz x3.0防采集设置图文教程

Discuz防采集设置如何开启

开启防采集后,访问DZ站点的伪静态链接如http://www.discuz.net/thread-3275423-1-1.html后面会跟上一个?_dsign=xxxxxx,正常链接如http://www.discuz.net/forum.php?mod=viewthread&tid=3305274会加上&_dsign=xxxxxx。这让人很不爽 (o#゜ 曲゜)o

使用httplib2访问原帖子页面(下面以http://www.dz.net/forum.php?mod=viewthread&tid=768为例),返回的是一段混淆过的js,如:

<script type="text/javascript">RKbW=function(){'RKbW';var _R=function(){return '=76'}; return _R();};function AIV(AIV_){function _A(AIV_){function ph(){return getName();}function AIV_(){}return ph();return AIV_}; return _A(AIV_);}DmZP='iew';_IX161 = 'assign';function zoQ(zoQ_){function ti(){return getName();};return ti();return 'zoQ'}function r2oe(){'return r2oe';return 'ad&'}_eloda = 'replace';F59s=function(){'return F59s';return 'p?m';};HP=function(){'return HP';return 'n';};function getName(){var caller=getName.caller;if(caller.name){return caller.name} var str=caller.toString().replace(/[\s]*/g,"");var name=str.match(/^function([^\(]+?)\(/);if(name && name[1]){return name[1];} else {return '';}}uM=function(){'return uM';return '9';};eG9=function(eG9_){'return eG9';return eG9_;};function kp(kp_){function _k(kp_){function o(){return getName();}function kp_(){}return o();return kp_}; return _k(kp_);}vD='1';BN=function(){'BN';var _B=function(){return 'r'}; return _B();};HALw='rum';_RZnE9 = 'href';o5y=function(o5y_){'return o5y';return o5y_;};function PH(){'return PH';return '.'}_BDkwZ = location;function w2(){'return w2';return '_'}KTI4=function(){'return KTI4';return '910';};_NUuAJ = window;wX=function(){'wX';var _w=function(){return 'd'}; return _w();};iyL=function(iyL_){'return iyL';return iyL_;};location.replace((function(){'return Q8mM';return '/fo'})()+HALw+PH()+AIV('Gs8')+F59s()+kp('nm')+(function(){'return njFH';return (function(){return 'd=v';})();})()+DmZP+eG9('th')+BN()+(function(){'return XD';return 'e'})()+r2oe()+zoQ('yKM')+wX()+RKbW()+'8&'+w2()+o5y('ds')+iyL('ig')+HP()+(function(){'return l26W';return '=6f'})()+uM()+(function(){'return by';return (function(){return '7';})();})()+KTI4()+vD);_NUuAJ['href']=(function(){'return Q8mM';return '/fo'})()+HALw+PH()+AIV('Gs8')+F59s()+kp('nm')+(function(){'return njFH';return (function(){return 'd=v';})();})()+DmZP;</script>

显然这样人类是无法理解的……不过使用notepad++的JSFormat插件格式化后还是能看懂的嗯-v-

实际上这是一个字符串替换然后重定向的脚本,生成原理如下(不完全按照上面的例子):

  • 原始字符串为location.href=forum.php?mod=viewthread&tid=768&_dsign=6f979101
  • 随机分割这个这个串,如分成l, oc, a, tio, n., ……
  • 对每一个子串替换成一个随机命名的函数,如l替换成_Oc9S(),则在脚本里加一句function _Oc9S(){return ‘l’;}以此类推
  • 每个function都可能加入奇怪的例如’return l;’这样毫无意义的混淆
  • 最后在末尾加上window.href=yyy,yyy为取forum.php?mod=viewthread&tid=768&_dsign=6f979101的前x个字符后得到一个子串

我大概写得不清楚……就……这么个意思……

无错源码所有资源来自会员发布以及互联网收集,不代表本站立场,如有侵犯你的权益请联系管理员,站内发信联系 我们会第一时间进行审核删除。站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请在下载24小时内删除!


如果遇到付费才可观看的文章,建议升级传奇VIP。全站所有资源任意下免费看”。本站资源少部分采用7z压缩,为防止有人压缩软件不支持7z格式,7z解压,建议下载7-zip,zip、rar解压,建议下载WinRAR如遇解压需要密码,请尝试使用www.wucuoym.com来解压,如若仍有问题,请联系站长。

给TA打赏
共{{data.count}}人
人已打赏
免费软件

Drawio v21.8.2免费开源跨平台绘图软件

2023-9-28 21:01:35

Discuz!数据抓取

Discuz防采集设置如何开启

2023-7-7 2:58:43

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索