zoukankan      html  css  js  c++  java
  • Java

    小米JS地址:

    http://p.www.xiaomi.com/zt/20130313/huodong/pm.min.js

    上面这个JS是小米抢手机页面的代码。和抢手机有直接关联。。


    虽然我3次都没抢到红米手机,但是今天偶尔发现这么一个js文件,对文件内容比较好奇,但是这个js开头有个数组,部分截图如下:


    开始这么一大堆的16进制字符串,这种类型的数据经常会在properties文件中看到,为了看到实际的内容,写了如下代码进行翻译。


    最简单的方式,只要把上面的代码,贴到浏览器(如chrome的console中),就可以看到还原的文字。


    另一种java方式,实现很简单,因为看到上面的x,首先想到的是16进制,看到u首先想到的是unicode,看如下完整代码:

    public class UnicodeHex {
    
    	public static String decode(String str) {
    		if(str==null||str.trim().equals("")){
    			return "";
    		}
    		String[] ss = str.split("\\");
    		int i = 0, j = 0;
    		int length = ss.length;
    		char[] cs = new char[length];
    		for (; i < ss.length; i++) {
    			if (!ss[i].trim().equals("")) {
    				cs[j] = (char) (Integer.valueOf(ss[i].substring(1), 16).intValue());
    				j++;
    			}
    		}
    		return new String(cs);
    	}
    
    	public static String encode(String str){
    		if(str==null||str.trim().equals("")){
    			return "";
    		}
    		StringBuffer sb = new StringBuffer();
    		char c;
    		for(int i=0;i<str.length();i++){
    			c = str.charAt(i);
    			if(c > 256){
    				sb.append("\u");
    			}
    			else {
    				sb.append("\x");
    			}
    			sb.append(Integer.toHexString(c));
    		}
    		return sb.toString();
    	}
    	
    	public static void main(String[] args) throws Exception {
    		String str = "\x3c\x2f\x69\x6e\x73\x3e\u5c0f\u65f6\x3c\x69\x6e\x73\x3e";
    		System.out.println(decode(str));
    		String ss = "</ins>小时<ins>";
    		System.out.println(encode(ss));
    		System.out.println(str);
    	}
    }


    使用decode解析上面的字符串,使用encode转换为上述字符串。


    小米这段代码都有什么呢,看如下部分内容(使用chrome,和上面java代码执行结果一样):



    这段代码中,最明显的应该就是:

    http://tc.hd.xiaomi.com/hdget?callback=hdcontrol&_=

    这段代码在后续点击按钮时,发送的请求就是这个。

    小米抢手机,好像是在服务器上限制了几百个线程,如果你正好抢到一个线程,你就进入了。如果抢不到,服务器返回一个503错误。


    小米每次的请求地址都不一样,如果在抢手机之前可以获得请求的字符串,也许就可以抢先别人获得线程...至于是否可行,就等下周二试试了。



  • 相关阅读:
    为什么下水井盖是圆的
    静心尽力
    菜鸟的一年
    [转]Libev教程
    流媒体:V4L2视频获取
    [转]Libev源码分析 -- 整体设计
    c#操作xml增删改查
    dwz简单配置与操作
    jsonp 跨域访问
    操作cookie.判断浏览器系统版本,判断safir浏览器存储数据
  • 原文地址:https://www.cnblogs.com/james1207/p/3285805.html
Copyright © 2011-2022 走看看