作者: 铁锚

日期: 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 + "\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的示例:

使用说明:

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+"\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一些,可以在控制台显示图片了都.

// 保证即便 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的字面量编码形式而已,没多少先进的.

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

CSDN_投票评选_JS_分析脚本的更多相关文章

  1. linux实用的日志分析脚本

    日志分析 随意的tail一个access_log文件,下面是一条经典的访问记录 218.19.140.242 – - [10/Dec/2010:09:31:17 +0800] “GET /query/ ...

  2. python编写网络抓包分析脚本

    python编写网络抓包分析脚本 写网络抓包分析脚本,一个称手的sniffer工具是必不可少的,我习惯用Ethereal,简单,易用,基于winpcap的一个开源的软件 Ethereal自带许多协议的 ...

  3. BASE64编码原理分析脚本实现及逆向案例

    在互联网中的每一刻,你可能都在享受着Base64带来的便捷,但对于Base64的基础原理你又了解多少?今天小编带大家了解一下Base64编码原理分析脚本实现及逆向案例的相关内容.   01编码由来 数 ...

  4. Linux服务器性能日志收集和分析脚本(转)

    最近老大要求分析服务器的性能数据,找到服务器运行的性能瓶颈,结果花了两天时间,写了两个脚本可以生成日志并可以进行数据提取,最终生成数据可以放到excel生成报表.过程中也学到了不少shell编程技术. ...

  5. linux常用的日志分析脚本

    linux实用的日志分析脚本 日志分析 随意的tail一个access_log文件,下面是一条经典的访问记录 /Dec/::: +] “GET /query/trendxml/district/tod ...

  6. linux系统web日志分析脚本

    linux系统web日志分析这方面工具比较多,比如logwatch或awstats等使用perl语言开发,功能都非常强大.但这些软件都需要进行一些配置,很多朋友往往在技术方面没有投入太多力量,即便参照 ...

  7. MySQL 数据库慢查询日志分析脚本

    这个脚本是基于pt-query-digest做的日志分析脚本,变成可视化的格式. 目录结构是 ./mysql_data/log./mysql_data/log/tmp./slow_query # co ...

  8. 【转载】ltp压力测试结果分析脚本

    博客园 首页 新随笔 联系 管理 订阅 随笔- 8  文章- 0  评论- 0  ltp压力测试结果分析脚本   最近工作性质发生了改变,在做操作系统方面的测试.接手的第一个任务是做ltp stres ...

  9. Nginx日志分析脚本

    目录 一.简介 二.脚本 一.简介 运维工作是一个比较复杂的工作,有时候面对上万条的日志,如何作分析?难道一条条的分析? 这估计看两眼就要打哈欠了吧?聪明的人会选择脚本,这就是为什么现在提倡自动化运维 ...

随机推荐

  1. django之允许外部机器访问

    开开启django时,使用0.0.0.0:xxxx,作为ip和端口例如: python3 manage.py runserver 0.0.0.0:9000 然后在settings里修改ALLOWED_ ...

  2. Python3 数据结构

    列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能. 以下是 Python 中列表的方法: 方法 描述 list.append(x ...

  3. Elastic-Job——分布式定时任务框架

    摘要: Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架.去掉了和dd-job中的监控和ddframe接入规范部分.该项目基于成熟的开源产品Quartz和Z ...

  4. Bootstrap3 栅格系统-媒体查询

    在栅格系统中,我们在 Less 文件中使用以下媒体查询(media query)来创建关键的分界点阈值. /* 超小屏幕(手机,小于 768px) */ /* 没有任何媒体查询相关的代码,因为这在 B ...

  5. [Android]聊聊ActionMode

    最近一段时间都没有更新文章,趁工作之余,更新一篇. 今天介绍一个很常见效果也最容易被忽略的弹出框:ActionMode.主要是ActionMode使用和自己使用过程中遇到的一些问题,相对还是比较简单的 ...

  6. java学习路线图-----java基础学习路线图(J2SE学习路线图)

    安装JDK和开发软件跳过,网上太多了,不做总结,以下是我总结的学习路线图,欢迎补充. JAVA基础语法 注释,标识符命名规则及Java中的关键字 Java基本数据类型 Java运算符与表达式 Java ...

  7. Java基本语法-----java进制的转换

    进制: 进制是一种记数方式 ,可以用有限的数字符号代表所有的数值.由特定的数值组成. 1整型的表现形式 1.十进制: 都是以0-9这九个数字组成,不能以0开头. 2.二进制: 由0和1两个数字组成. ...

  8. 【NPR】非真实感渲染实验室

    写在前面 前几天在知乎看到一个问题--关于非实感图形学或者风格化渲染有哪些好的书或者paper,我刚好接触过一些就去里面回答了一下.答完以后突然想在Unity里搞一个这样的集锦,把一些简单的NPR论文 ...

  9. Linux系统编程---守护进程

    守护进程是什么?就是在后台运行的进程. 那么如何创建守护进程呢? 1. 创建孤儿进程 2. setsid() 创建进程会话 3. 重定向标准输入, 标准输出 4. chdir, 改当当前进程的工作目录 ...

  10. JPA(三)之实体关系一对多(多对一)

     1.背景介绍: 对于购买商品时,订单信息(Order)和订单商品信息(OrderItem)的关系就是一对多的关系. 2.实体bean: Order.java代码 ? 1 2 3 4 5 6 7 ...