zoukankan      html  css  js  c++  java
  • CSDN_投票评选_JS_分析脚本

    作者: 铁锚

    日期: 2013年12月31日

    如题, 使用说明如下:

    1. 原创图书
    http://special.csdn.net/book2013/yc.html
    
    2. 引进图书
    http://special.csdn.net/book2013/yj.html
    
    //
    // 采用chrome 打开以后,右键点击页面,选择审查元素
    // 随后切换到console控制台
    // 复制js文件的所有代码,在控制台执行即可
    脚本如下:

    !(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 + "	" + 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("
    "));
        };
     }()
    );


    资源下载地址: 

    JS脚本抓取数据分析示例

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

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

    使用说明: 

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

    代码如下:

    (
        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接口并发的不规范代码:

    (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+"
    "
    				+"success_num="+success_num+"
    "
    				+"failure_num="+failure_num+"
    "
    				+"time="+time+" ms
    "
    				+"all_time="+all_time+" ms
    "
    				+"avg_time="+avg_time+" ms
    "
    				;
    				$("#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一些,可以在控制台显示图片了都.

    // 保证即便 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("程序?
    节操?
    软件?
    CSDN写博客不方便 orz 
    技术! 
    不等于实力。
    ");
    		console.log("邮箱: %c renfufei@qq.com(铁锚)", "color:red");
    		console.log("个人博客:http://blog.csdn.net/renfufei")
    	}
    } catch(e) {
    }
    下面的是 百度知道的效果:


    图2 百度知道的节操图

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

    if (window.console) {
    	console.log(
    		"
    
    %c", 
    		// 注意上面这个逗号,表明括号内是2个参数
    		"font-size:0;line-height:50px;padding-top:" 
    		+ 46 + "px; padding-left:" 
    		+ 137 + "px;background:" 
    		+ ""
    		+ ";background-repeat:no-repeat;"
    	);
    	// 上面的那个 %c 将一些字符以原生格式拼进去了,而不是被当做普通的字符串	
    	console.log("u671fu5f85u4f60u7684u52a0u76dfu3002http://zhidao.baidu.com/misc/more/joinus") 
    	console.log("u8bf7u5728u90aeu4ef6u4e2du6ce8u660e%cu6765u81ea:console", "color:red;font-weight:bold;");
    }

  • 相关阅读:
    SSH 连接超时解决办法
    alter system switch logfile和alter system archive log current 的区别
    Oracle 删除归档日志脚本
    Oracle 11g 新特性简介
    Oracle sqlplus 常用命令总结
    Oracle 11g 新特性简介
    计算文件的MD5值上传到服务器 下载验证文件是否被篡改
    看不下去的代码放这有机会用手机看。。。
    C++ Primer第一章学习笔记——C++初邂逅
    OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467050.html
Copyright © 2011-2022 走看看