CSDN_投票评选_JS_分析脚本

作者: 铁锚

日期: 2013年12月31日

如题, 使用说明如下:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. 1. 原创图书  
  2. http://special.csdn.net/book2013/yc.html  
  3.   
  4. 2. 引进图书  
  5. http://special.csdn.net/book2013/yj.html  
  6.   
  7. //  
  8. // 采用chrome 打开以后,右键点击页面,选择审查元素  
  9. // 随后切换到console控制台  
  10. // 复制js文件的所有代码,在控制台执行即可  
脚本如下:

[javascript]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. !(function(){  
  2.     // 创建script元素  
  3.     var sc = document.createElement("script");  
  4.     // 设置属性  
  5.     sc.src = "http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js";  
  6.     // 设置加载事件回调  
  7.     sc.onload = pickVote;  
  8.     // 添加到 body  
  9.     document.body.appendChild(sc);  
  10.     //  
  11.     function Vote(id, name, ding_num){  
  12.       this.id = id;  
  13.       this.name = name;  
  14.       this.ding_num = ding_num;  
  15.     };  
  16.     Vote.prototype = {  
  17.       toString : function(){  
  18.         return this.ding_num + "\t" + this.name ;  
  19.       }  
  20.     };  
  21.     //  
  22.     function pickVote(e){  
  23.       if(!$){  
  24.         alert("很抱歉,新浪服务器打盹了.");  
  25.         return false;  
  26.       }  
  27.       //   
  28.       var allbook = $(".container .list");  
  29.       var len = allbook.length;  
  30.       //  
  31.       var allVote = [];  
  32.       //   
  33.       !!allbook.each(function(i,v){  
  34.         var $this = $(this);  
  35.         //  
  36.         var $name =  $("p.black strong",$this);  
  37.         var $ding_num = $(".ding_num", $this);  
  38.         // 书名  
  39.         var name = $name.text();  
  40.         var ding_num = $ding_num.text();  
  41.         //  
  42.         ding_num = parseInt(ding_num);  
  43.           
  44.         //  
  45.         var vote = new Vote(++i, name, ding_num);  
  46.         allVote.push(vote);  
  47.       });  
  48.       function desc(x, y){  
  49.         if (x.ding_num > y.ding_num) {  
  50.                 return -1;  
  51.           } else if (x.ding_num < y.ding_num){      
  52.                 return 1;  
  53.           } else {  
  54.             return 0;  
  55.           }  
  56.       };  
  57.       // 排序  
  58.       allVote = Array.prototype.sort.call(allVote, desc);  
  59.       // 输出信息  
  60.       var title = document.title;  
  61.       console.info(title+": 排名:");  
  62.       console.info(allVote.join("\n"));  
  63.     };  
  64.  }()  
  65. );  


资源下载地址: 

JS脚本抓取数据分析示例

-------------------------------------------------------------------------------------------------------------------

新加了一个测试ITEYE的防DDOS的示例: 

使用说明: 

[javascript]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. 1. 首先 chrome 打开iteye的需要刷新的页面;这样才不会出现跨域。  
  2. 2. 然后打开console  
  3. 3. 粘贴执行刷新的JS,然后让页面一直开着。  
  4.   
  5. 如果你想要自动刷新功能,可以使用傲游浏览器。当然,好像搜狗也支持,在标签页上点右键,自动刷新即可.  

代码如下:

[javascript]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. (  
  2.     function(){  
  3.         // 获取当前地址  
  4.         var url = window.location.href;  
  5.         var timeout = 0.2 * 1000;  
  6.         var iframe = document.createElement("iframe");  
  7.         iframe.src = ""+url;  
  8.         // 用 iframe来定时刷新  
  9.         window.document.body.appendChild(iframe);  
  10.         iframe.src= "";  
  11.         var tms = 0;  
  12.         var itv = window.setInterval(function(){  
  13.             iframe.src= "";  
  14.             iframe.src = ""+url;  
  15.             tms += 1;  
  16.             if(tms % 500 < 1){  
  17.                 console.info("tms="+tms);  
  18.             }  
  19.         }, timeout);  
  20.     }()  
  21. );  


一个在浏览器测试移动APP的API接口并发的不规范代码:

[javascript]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. (function() {  
  2.         //  
  3.         var $this = $('#apitestform');  
  4.         // 密码加密  
  5.         var password_clear = $("#password_clear").val() || "";  
  6.         $("#password_md5").val(hex_md5(password_clear));  
  7.         // 新密码加密  
  8.         var newpassword_clear = $("#newpassword_clear").val() || "";  
  9.         $("#newpassword_md5").val(hex_md5(newpassword_clear));  
  10.           
  11.         var data = $('#apitestform').serialize();  
  12.           
  13.         //  
  14.         window.all_time = 0;  
  15.         window.all_num = 0;  
  16.         window.success_num = 0;  
  17.         window.failure_num = 0;  
  18.         //  
  19.         var config =  {  
  20.             url : $this.attr("action"),  
  21.             data : data,  
  22.             type : "POST",  
  23.             dataType: "json",  
  24.             beforeSend : function() {  
  25.             },  
  26.             complete : function(xhr,result) {  
  27.                 var text = xhr.responseText;  
  28.                 var js = JSON.parse(text);  
  29.                 if(js && (1 === js.success)){  
  30.                     success_num += 1;  
  31.                 } else {  
  32.                     failure_num += 1;  
  33.                 }  
  34.                 var pref = window.time || 0;  
  35.                 var current = new Date();  
  36.                 var time = current.getTime() - pref.getTime();  
  37.                 window.all_time +=  time;//current.getTime() - window.start_time.getTime();  
  38.                 var avg_time =  Math.round(all_time / all_num);  
  39.                 //  
  40.                 var log = "all_num="+all_num+"\n"  
  41.                 +"success_num="+success_num+"\n"  
  42.                 +"failure_num="+failure_num+"\n"  
  43.                 +"time="+time+" ms\n"  
  44.                 +"all_time="+all_time+" ms\n"  
  45.                 +"avg_time="+avg_time+" ms\n"  
  46.                 ;  
  47.                 $("#apitestresult").text(log);  
  48.                   
  49.                 //  
  50.                 window.setTimeout(loop, 0.01 * 1000);  
  51.             }  
  52.         };  
  53.         //  
  54.         function loop(){  
  55.             <span style="color: rgb(0, 128, 255); font-family: Consolas, 'Lucida Console', monospace; font-size: 12px; white-space: pre-wrap;">if(true == window["stop_loop"]){ return;}</span>  
  56.             window.all_num += 1;  
  57.             window.time = new Date();  
  58.             jQuery.ajax(config);  
  59.         }  
  60.         //  
  61.         window.startTime = 0;  
  62.         window.setTimeout(loop, 0.01 * 1000);  
  63. }());  

如果确实要压力测试 移动API接口的 性能,请使用JMeter 工具来进行测试; 如果要停止上面的代码循环,只要在控制台执行  window["stop_loop"]=false; 即可

百度的节操:

招聘信息,使用chrome,也就是google浏览器,打开百度,或者百度百科,右键,审查元素(当然,也可以直接按F12打开调试工具),然后切换到 Console 控制台,即可看到其招聘信息:

显示效果如下:


图1 度娘的节操

查找出来的代码及分析如下,其实好像百度知道,百度百科的更牛X一些,可以在控制台显示图片了都.

[javascript]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // 保证即便 try 语句块内部的代码执行出错,也不会中断后面的JS代码的执行  
  2. try {  
  3.     // if 判断,短路与; 检查是否有console这个(控制台)对象,以及 log 这个日志方法  
  4.     // Chrome和 Firefox 的 console 一般包含:  
  5.     // console.error("错误信息")  
  6.     // console.info("常规信息")  
  7.     // console.debug("调试信息 %c yes",'color:red');  
  8.     // %c 就类似于 C 语言 printf 的  
  9.     if (!!(window.console && window.console.log)) {  
  10.         console.log("程序?\n节操?\n软件?\nCSDN写博客不方便 orz \n技术! \n不等于实力。\n");  
  11.         console.log("邮箱: %c renfufei@qq.com(铁锚)""color:red");  
  12.         console.log("个人博客:http://blog.csdn.net/renfufei")  
  13.     }  
  14. catch(e) {  
  15. }  
下面的是 百度知道的效果:


图2 百度知道的节操图

其代码如下,其实 \u 就是Unicode的字面量编码形式而已,没多少先进的.

[javascript]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. if (window.console) {  
  2.     console.log(  
  3.         "\n\n%c",   
  4.         // 注意上面这个逗号,表明括号内是2个参数  
  5.         "font-size:0;line-height:50px;padding-top:"   
  6.         + 46 + "px; padding-left:"   
  7.         + 137 + "px;background:"   
  8.         + ""  
  9.         + ";background-repeat:no-repeat;"  
  10.     );  
  11.     // 上面的那个 %c 将一些字符以原生格式拼进去了,而不是被当做普通的字符串   
  12.     console.log("\u671f\u5f85\u4f60\u7684\u52a0\u76df\u3002http://zhidao.baidu.com/misc/more/joinus")   
  13.     console.log("\u8bf7\u5728\u90ae\u4ef6\u4e2d\u6ce8\u660e%c\u6765\u81ea:console""color:red;font-weight:bold;");  
  14. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值