您的位置:首页 > Web前端 > JavaScript

CSDN_投票评选_JS_分析脚本

2016-09-05 15:07 309 查看
作者: 铁锚

日期: 2013年12月31日

如题, 使用说明如下:

[html] view
plain copy

 





1. 原创图书  
http://special.csdn.net/book2013/yc.html  
  

2. 引进图书  
http://special.csdn.net/book2013/yj.html  
  

//  

// 采用chrome 打开以后,右键点击页面,选择审查元素  

// 随后切换到console控制台  

// 复制js文件的所有代码,在控制台执行即可  

脚本如下:

[javascript] view
plain copy

 




!(function(){  

    // 创建script元素  

    var sc = document.createElement("script");  

    // 设置属性  

    sc.src = "http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js";  

    // 设置加载事件回调  

    sc.onload = pickVote;  

    // 添加到 body  

    document.body.appendChild(sc);  

    //  

    function Vote(id, name, ding_num){  

      this.id = id;  

      this.name = name;  

      this.ding_num = ding_num;  

    };  

    Vote.prototype = {  

      toString : function(){  

        return this.ding_num + "\t" + this.name ;  

      }  

    };  

    //  

    function pickVote(e){  

      if(!$){  

        alert("很抱歉,新浪服务器打盹了.");  

        return false;  

      }  

      //   

      var allbook = $(".container .list");  

      var len = allbook.length;  

      //  

      var allVote = [];  

      //   

      !!allbook.each(function(i,v){  

        var $this = $(this);  

        //  

        var $name =  $("p.black strong",$this);  

        var $ding_num = $(".ding_num", $this);  

        // 书名  

        var name = $name.text();  

        var ding_num = $ding_num.text();  

        //  

        ding_num = parseInt(ding_num);  

          

        //  

        var vote = new Vote(++i, name, ding_num);  

        allVote.push(vote);  

      });  

      function desc(x, y){  

        if (x.ding_num > y.ding_num) {  

                return -1;  

          } else if (x.ding_num < y.ding_num){      

                return 1;  

          } else {  

            return 0;  

          }  

      };  

      // 排序  

      allVote = Array.prototype.sort.call(allVote, desc);  

      // 输出信息  

      var title = document.title;  

      console.info(title+": 排名:");  

      console.info(allVote.join("\n"));  

    };  

 }()  

);  

资源下载地址: 


JS脚本抓取数据分析示例

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

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

使用说明: 

[javascript] view
plain copy

 





1. 首先 chrome 打开iteye的需要刷新的页面;这样才不会出现跨域。  

2. 然后打开console  

3. 粘贴执行刷新的JS,然后让页面一直开着。  

  

如果你想要自动刷新功能,可以使用傲游浏览器。当然,好像搜狗也支持,在标签页上点右键,自动刷新即可.  

代码如下:

[javascript] view
plain copy

 





(  

    function(){  

        // 获取当前地址  

        var url = window.location.href;  

        var timeout = 0.2 * 1000;  

        var iframe = document.createElement("iframe");  

        iframe.src = ""+url;  

        // 用 iframe来定时刷新  

        window.document.body.appendChild(iframe);  

        iframe.src= "";  

        var tms = 0;  

        var itv = window.setInterval(function(){  

            iframe.src= "";  

            iframe.src = ""+url;  

            tms += 1;  

            if(tms % 500 < 1){  

                console.info("tms="+tms);  

            }  

        }, timeout);  

    }()  

);  

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

[javascript] view
plain copy

 





(function() {  

        //  

        var $this = $('#apitestform');  

        // 密码加密  

        var password_clear = $("#password_clear").val() || "";  

        $("#password_md5").val(hex_md5(password_clear));  

        // 新密码加密  

        var newpassword_clear = $("#newpassword_clear").val() || "";  

        $("#newpassword_md5").val(hex_md5(newpassword_clear));  

          

        var data = $('#apitestform').serialize();  

          

        //  

        window.all_time = 0;  

        window.all_num = 0;  

        window.success_num = 0;  

        window.failure_num = 0;  

        //  

        var config =  {  

            url : $this.attr("action"),  

            data : data,  

            type : "POST",  

            dataType: "json",  

            beforeSend : function() {  

            },  

            complete : function(xhr,result) {  

                var text = xhr.responseText;  

                var js = JSON.parse(text);  

                if(js && (1 === js.success)){  

                    success_num += 1;  

                } else {  

                    failure_num += 1;  

                }  

                var pref = window.time || 0;  

                var current = new Date();  

                var time = current.getTime() - pref.getTime();  

                window.all_time +=  time;//current.getTime() - window.start_time.getTime();  

                var avg_time =  Math.round(all_time / all_num);  

                //  

                var log = "all_num="+all_num+"\n"  

                +"success_num="+success_num+"\n"  

                +"failure_num="+failure_num+"\n"  

                +"time="+time+" ms\n"  

                +"all_time="+all_time+" ms\n"  

                +"avg_time="+avg_time+" ms\n"  

                ;  

                $("#apitestresult").text(log);  

                  

                //  

                window.setTimeout(loop, 0.01 * 1000);  

            }  

        };  

        //  

        function loop(){  

            <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>  

            window.all_num += 1;  

            window.time = new Date();  

            jQuery.ajax(config);  

        }  

        //  

        window.startTime = 0;  

        window.setTimeout(loop, 0.01 * 1000);  

}());  

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

百度的节操:

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

显示效果如下:



图1 度娘的节操

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

[javascript] view
plain copy

 





// 保证即便 try 语句块内部的代码执行出错,也不会中断后面的JS代码的执行  

try {  

    // if 判断,短路与; 检查是否有console这个(控制台)对象,以及 log 这个日志方法  

    // Chrome和 Firefox 的 console 一般包含:  

    // console.error("错误信息")  

    // console.info("常规信息")  

    // console.debug("调试信息 %c yes",'color:red');  

    // %c 就类似于 C 语言 printf 的  

    if (!!(window.console && window.console.log)) {  

        console.log("程序?\n节操?\n软件?\nCSDN写博客不方便 orz \n技术! \n不等于实力。\n");  

        console.log("邮箱: %c renfufei@qq.com(铁锚)", "color:red");  

        console.log("个人博客:http://blog.csdn.net/renfufei")  

    }  

} catch(e) {  

}  

下面的是 百度知道的效果:



图2 百度知道的节操图

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

[javascript] view
plain copy

 





if (window.console) {  

    console.log(  

        "\n\n%c",   

        // 注意上面这个逗号,表明括号内是2个参数  

        "font-size:0;line-height:50px;padding-top:"   

        + 46 + "px; padding-left:"   

        + 137 + "px;background:"   

        + ""  

        + ";background-repeat:no-repeat;"  

    );  

    // 上面的那个 %c 将一些字符以原生格式拼进去了,而不是被当做普通的字符串   

    console.log("\u671f\u5f85\u4f60\u7684\u52a0\u76df\u3002http://zhidao.baidu.com/misc/more/joinus")   

    console.log("\u8bf7\u5728\u90ae\u4ef6\u4e2d\u6ce8\u660e%c\u6765\u81ea:console", "color:red;font-weight:bold;");  

}  

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: