$_loc1_ = explode("/",$url);
if( strpos($url,"v.qq.com/x/cover") > 0 ){
    if( $_loc1_[6] ){
        $_loc2_ = explode(".",$_loc1_[6])[0];
        $data['vid'] = $_loc2_;
    }else{
        $_loc3_ = https_curl($url);
        preg_match("|<link rel=\"canonical\" href=\"([^(\}>)]+)\" />|",$_loc3_,$_loc4_);
        $_loc5_ = explode("/",$_loc4_[1]);
        $_loc6_ = explode(".",$_loc5_[6])[0];
        $data['vid'] = $_loc6_;
    }
}else if( strpos($url,"v.qq.com/x/page") > 0 ){
    if( $_loc1_[5] ){
        $_loc7_ = explode(".",$_loc1_[5])[0];
        $data['vid'] = $_loc7_;
    }else{
        $_loc8_ = https_curl($url);
        preg_match("|<link rel=\"canonical\" href=\"([^(\}>)]+)\" />|",$_loc8_,$_loc9_);
        $_loc10_ = explode("/",$_loc9_[1]);
        $_loc11_ = explode(".",$_loc10_[6])[0];
        $data['vid'] = $_loc11_;
    }
}
print_r($data);

var Destm = function(e, t) {
    function r(e, t) {
        var r = "";
        if ("object" == typeof e) for (var n in e) r += String.fromCharCode(e[n]);
        e = r || e;
        for (var i, o, a = new Uint8Array(e.length), s = t.length, n = 0; n < e.length; n++) o = n % s,
        i = e[n],
        i = i.toString().charCodeAt(0),
        a[n] = i ^ t.charCodeAt(o);
        return a
    }
    function n(e) {
        var t = "";
        if ("object" == typeof e) for (var r in e) t += String.fromCharCode(e[r]);
        e = t || e;
        var n = new Uint8Array(e.length);
        for (r = 0; r < e.length; r++) n[r] = e[r].toString().charCodeAt(0);
        var i, o, r = 0;
        for (r = 0; r < n.length; r++) i = n[r] % 3,
        0 != i && r + i < n.length && (o = n[r + 1], n[r + 1] = n[r + i], n[r + i] = o, r = r + i + 1);
        return n
    }
    function i(e) {
        var t = "";
        if ("object" == typeof e) for (var r in e) t += String.fromCharCode(e[r]);
        e = t || e;
        var n = new Uint8Array(e.length);
        for (r = 0; r < e.length; r++) n[r] = e[r].toString().charCodeAt(0);
        var r = 0,
        i = 0,
        o = 0,
        a = 0;
        for (r = 0; r < n.length; r++) o = n[r] % 2,
        o && r++,
        a++;
        var s = new Uint8Array(a);
        for (r = 0; r < n.length; r++) o = n[r] % 2,
        o ? s[i++] = n[r++] : s[i++] = n[r];
        return s
    }
    function o(e, t) {
        var r = 0,
        n = 0,
        i = 0,
        o = 0,
        a = "";
        if ("object" == typeof e) for (var r in e) a += String.fromCharCode(e[r]);
        e = a || e;
        var s = new Uint8Array(e.length);
        for (r = 0; r < e.length; r++) s[r] = e[r].toString().charCodeAt(0);
        for (r = 0; r < e.length; r++) if (o = s[r] % 5, 0 != o && 1 != o && r + o < s.length && (i = s[r + 1], n = r + 2, s[r + 1] = s[r + o], s[o + r] = i, r = r + o + 1, r - 2 > n)) for (; n < r - 2; n++) s[n] = s[n] ^ t.charCodeAt(n % t.length);
        for (r = 0; r < e.length; r++) s[r] = s[r] ^ t.charCodeAt(r % t.length);
        return s
    }
    function a(e) {
        var t, r, n, i, o, a, s;
        for (a = e.length, o = 0, s = ""; o < a;) {
            do t = f[255 & e.charCodeAt(o++)];
            while (o < a && t == -1);
            if (t == -1) break;
            do r = f[255 & e.charCodeAt(o++)];
            while (o < a && r == -1);
            if (r == -1) break;
            s += String.fromCharCode(t << 2 | (48 & r) >> 4);
            do {
                if (n = 255 & e.charCodeAt(o++), 61 == n) return s;
                n = f[n]
            } while ( o < a && n == - 1 );
            if (n == -1) break;
            s += String.fromCharCode((15 & r) << 4 | (60 & n) >> 2);
            do {
                if (i = 255 & e.charCodeAt(o++), 61 == i) return s;
                i = f[i]
            } while ( o < a && i == - 1 );
            if (i == -1) break;
            s += String.fromCharCode((3 & n) << 6 | i)
        }
        return s
    }
    for (var s = {
        data: {
            info: e
        }
    },
    l = {
        q: r,
        h: n,
        m: i,
        k: o
    },
    u = s.data.info, c = u.substring(u.length - 4).split(""), d = 0; d < c.length; d++) c[d] = c[d].toString().charCodeAt(0) % 4;
    c.reverse();
    for (var h = [], d = 0; d < c.length; d++) h.push(u.substring(c[d] + 1, c[d] + 2)),
    u = u.substring(0, c[d] + 1) + u.substring(c[d] + 2);
    s.data.encrypt_table = h,
    s.data.key_table = [];
    for (var d in s.data.encrypt_table)"q" != s.data.encrypt_table[d] && "k" != s.data.encrypt_table[d] || (s.data.key_table.push(u.substring(u.length - 12)), u = u.substring(0, u.length - 12));
    s.data.key_table.reverse(),
    s.data.info = u;
    var f = new Array(( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), 62, ( - 1), ( - 1), ( - 1), 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), ( - 1), 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, ( - 1), ( - 1), ( - 1), ( - 1), ( - 1));
    s.data.info = a(s.data.info);
    for (var d in s.data.encrypt_table) {
        var p = s.data.encrypt_table[d];
        if ("q" == p || "k" == p) {
            var v = s.data.key_table.pop();
            s.data.info = l[s.data.encrypt_table[d]](s.data.info, v)
        } else s.data.info = l[s.data.encrypt_table[d]](s.data.info)
    }
    if (t) return s.data.info;
    var g = "";
    for (d = 0; d < s.data.info.length; d++) g += String.fromCharCode(s.data.info[d]);
    return g
};
Destm('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jYIa9kFuHbVJYJS3mkwDKMuXpL6WfZWztFSB')

微信上次爆出根据appid和version_num可以下载小程序源码,然后在利用小程序源码分析代码最后利用抓包工具抓取到提交上传接口,但目前而言微信官方已经把下载小程序源码的漏洞修复,现在微信上面的跳一跳也挺火的,反正我好友排行最高第一是10W多,看来简直爆炸,然而他也是一名程序员,其次我的API研究所群里面也有人在研究这方面的东西,所以就咨询了下群里面的人获取到一个跳一跳小程序的源码在配合抓包工具抓到了一个https://mp.weixin.qq.com/wxagame/wxagame_settlement的上传口这种东西其实稍微会点抓包的都可以抓到,解说到此结束只要抓到这个接口就行,奥,对了,提交的action_data是AES加密。

如果想看更详情的解说请看这里曝光的内容:
https://www.v2ex.com/t/419056
例子:
github网友:

https://gist.github.com/feix/6dd1f62a54c5efa10f1e1c24f8efc417

以下我写的
demo:https://www.sslcvm.com/wxagame_tyt/
Github:https://github.com/lonewolfyx/wechat_jump_change_score
Coding:https://coding.net/u/lonewolfyx/p/wechat_jump_change_score/git

function decode(){
    document.getElementById("dst").value = (/\n(.+)/.exec(eval(document.getElementById('src').value.replace(/\s+/, "").slice(0, -2)))[1]);
}

若此函数运行出错那请将源数据在开发者工具console下运行测试

想写个JS播放影片库,之前也有写过几个版本,至于现在为什么想要在重构写一个呢,是因为前期几个版本太臃肿了,毕竟研究这东西有一年时间了吧,为了给自己这一年做一个总结,所以打算写一个JS播放库,初步打算是用上目前广大用户都在使用的dplayer,ckplayer,jwplayer三款播放器,至于要支持多少网站目前有一个目标,很多人不是都在关注you-get和ykdl这2个GitHub项目嘛,所以我打算把这2款项目里面国内的影视都尝试写上去(如果后期发现编写不行的话那可能会考虑写部分的吧,主流肯定都会写上去的),就是不知道会有多少人喜欢,喜欢的人在下面评论看看吧,顺便观察观察有多少人是关注我网站的,嘻嘻。

好了就差一天时间马上就2018年提前住大家狗年快乐,没有女票的赶紧去追啊,争取18年狗到一个。

对于广大用户写js播放影片时所需用到的pptv算法,此代码来源于:http://bbs.ckplayer.com/forum.php?mod=viewthread&tid=24437&fromuid=26158

function getkey(param1) {
    var w5 = 0;
    var w6 = 0;
    var w7 = 0; 
    var w2 = param1;
    var w3 = 0;
    var w4 = 0;
    while (w4 < w2.length) {
        w5 = w2[w4];
        w6 = w5.charCodeAt(0);
        w7 = w6 << w4 % 4 * 8;
        w3 = w3 ^ w7;
        w4++;
    }
    return w3;
}

function encrypt(param1, param2) {
    var w5 = 0;
    var w6 = 0;
    var w7 = 0;
    var w13 = 0;
    var w14 = 0;
    var w15 = 0;
    var w16 = 0;
    var w17 = 0;
    var w18 = 0;
    var w19 = 0;
    var w20 = 0;
    var w21 = 0;
    var w22 = 0;
    var w23 = 0;
    var w24 = 0;
    var w25 = 0;
    var w26 = 0;
    var w27 = 0;
    var w28 = 0;
    var w29 = 0;
    var w30 = 0;
    var w31 = 0;
    var w32 = 0;
    var w33 = 0;
    var w34 = 0;
    var w35 = 0;
    var w36 = 0;
    var w37 = 0;
    var w38 = 0;
    var w39 = 0;
    var w40 = 0;
    var w41 = 0;
    var w3 = 16;
    var w4 = getkey(param2); 
    var w8 = param1; 
    var w9 = param2;
    var w10 = w4;
    w5 = w10 << 8 | w10 >>> 24;
    w6 = w10 << 16 | w10 >>> 16;
    w7 = w10 << 24 | w10 >>> 8;
    var w11 = "";
    var w12 = 0;
    while (w12 + w3 <= w8.length) {
        w13 = w8[w12].charCodeAt(0) << 0;
        w14 = w8[(w12 + 1)].charCodeAt(0) << 8;
        w15 = w8[w12 + 2].charCodeAt(0) << 16;
        w16 = w8[w12 + 3].charCodeAt(0) << 24;
        w17 = w8[w12 + 4].charCodeAt(0) << 0;
        w18 = w8[w12 + 5].charCodeAt(0) << 8;
        w19 = w8[w12 + 6].charCodeAt(0) << 16;
        w20 = w8[w12 + 7].charCodeAt(0) << 24;
        w21 = 0 | w13 | w14 | w15 | w16;
        w22 = 0 | w17 | w18 | w19 | w20;
        w23 = 0;
        w24 = 0;
        while (w24 < 32) {
            w23 = w23 + 2654435769;
            w33 = (w22 << 4) + w4;
            w34 = w22 + w23;
            w35 = (w22 >>> 5) + w5;
            w36 = w33 ^ w34 ^ w35;
            w21 = w21 + w36;
            w37 = (w21 << 4) + w6;
            w38 = w21 + w23;
            w39 = w21 >>> 5;
            w40 = w39 + w7;
            w41 = w37 ^ w38 ^ w40;
            w22 = w22 + w41;
            w24++;
        }
        w25 = w21 >>> 0 & 255;
        w26 = w21 >>> 8 & 255;
        w27 = w21 >>> 16 & 255;
        w28 = w21 >>> 24 & 255;
        w29 = w22 >>> 0 & 255;
        w30 = w22 >>> 8 & 255;
        w31 = w22 >>> 16 & 255;
        w32 = w22 >>> 24 & 255;
        w11 = w11 + String.fromCharCode(w21 >>> 0 & 255);
        w11 = w11 + String.fromCharCode(w21 >>> 8 & 255);
        w11 = w11 + String.fromCharCode(w21 >>> 16 & 255);
        w11 = w11 + String.fromCharCode(w21 >>> 24 & 255);
        w11 = w11 + String.fromCharCode(w22 >>> 0 & 255);
        w11 = w11 + String.fromCharCode(w22 >>> 8 & 255);
        w11 = w11 + String.fromCharCode(w22 >>> 16 & 255);
        w11 = w11 + String.fromCharCode(w22 >>> 24 & 255);
        w12 = w12 + w3;
    } 
    w11 = w11 + param1.slice(8, 16).join("");
    return w11;
}

function add(param1, param2) {
    var w3 = 0;
    while (w3 < param2) {
        param1 = param1 + String.fromCharCode(0);
        w3++;
    }
    param1 = param1.split("");
    return param1;
}

function time2String(param1) {
    var w8 = 0;
    var w2 = new Array(8);
    var w4 = "0123456789abcdef";
    var w5 = w4.split("");
    var w6 = 0;
    while (w6 < 8) {
        w8 = param1 >>> 28 - w6 % 8 * 4 & 15;
        w2[w6] = w5[w8];
        w6++;
    }
    var w7 = w2.join("");
    return w7;
}

function Str2Hex(param1) {
    var w7 = 0;
    var w8 = 0;
    var w2 = "0123456789abcdef".split("");
    var w3 = w2;
    var w4 = param1;
    var w6 = w4.length;
    var w5 = new Array(2 * w6);
    var w9 = 0;
    while (w9 < w6) {
        if (w9 < 8) {
            w7 = w4[w9].charCodeAt(0) & 15;
            w8 = w4[w9].charCodeAt(0) >>> 4 & 15;
            w5[2 * w9] = w3[w4[w9].charCodeAt(0) & 15];
            w5[2 * w9 + 1] = w3[w4[w9].charCodeAt(0) >>> 4 & 15];
        } else {
            w5[2 * w9] = w3[Math.floor(Math.random() * 15)];
            w5[2 * w9 + 1] = w3[Math.floor(Math.random() * 15)];
        }
        w9++;
    }
    return w5.join("");
}

function constructKey(param1) {
    var w2 = time2String(param1);
    var w3 = w2;
    if (w3.length < 16) {
        w2 = add(w2, 16 - w3.length);
    }
    var w4 = "";
    var w5 = "qqqqqww";
    if (w5.length < 16) {
        w5 = add(w5, 16 - w5.length);
    }
    w4 = encrypt(w2, w5);
    w4 = Str2Hex(w4);
    return w4;
}

<?php
class AAEncoder
{
    /**
     * Encode any JavaScript program to Japanese style emoticons (^_^)
     * @param string $js
     * @param int $level [optional]
     * @return string
     */
    public static function encode($js, $level=0)
    {
        $result = "゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ ['_']; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); " .
            "(゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);" .
            "(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] " .
            ",゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] " .
            ",゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];" .
            "(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];" .
            "(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];" .
            "(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + " .
            "((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+" .
            "((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+" .
            "((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+" .
            "((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];" .
            "(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+" .
            "((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+" .
            "((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; " .
            "(゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\\\'; " .
            "(゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];" .
            "(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];" .
            "(゚Д゚) [゚o゚]='\\\"';" .
            "(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+" .
            "/*´∇`*/(゚Д゚)[゚o゚]+ ";

        for ($i = 0, $len = mb_strlen($js); $i < $len; $i++) {
            $code = unpack('N', mb_convert_encoding(mb_substr($js, $i, 1, 'UTF-8'), 'UCS-4BE', 'UTF-8'))[1];
            $text = '(゚Д゚)[゚ε゚]+';
            if ($code <= 127) {
                $text .= preg_replace_callback('/([0-7])/', function($match) use ($level) {
                    $byte = intval($match[1]);
                    return ($level ? self::randomize($byte, $level) : self::$bytes[$byte]) . '+';
                }, decoct($code));
            }
            else {
                $hex = str_split(substr('000' . dechex($code), -4));
                $text .= "(o゚ー゚o)+ ";
                for ($i = 0, $len = count($hex); $i < $len; $i++) {
                    $text .= self::$bytes[hexdec($hex[$i])] . '+ ';
                }
            }
            $result .=  $text;

        }
        $result .= "(゚Д゚)[゚o゚]) (゚Θ゚)) ('_');";
        return $result;
    }

    /**
     * @var array
     */
    protected static $bytes = [
        "(c^_^o)",
        "(゚Θ゚)",
        "((o^_^o) - (゚Θ゚))",
        "(o^_^o)",
        "(゚ー゚)",
        "((゚ー゚) + (゚Θ゚))",
        "((o^_^o) +(o^_^o))",
        "((゚ー゚) + (o^_^o))",
        "((゚ー゚) + (゚ー゚))",
        "((゚ー゚) + (゚ー゚) + (゚Θ゚))",
        "(゚Д゚) .゚ω゚ノ",
        "(゚Д゚) .゚Θ゚ノ",
        "(゚Д゚) ['c']",
        "(゚Д゚) .゚ー゚ノ",
        "(゚Д゚) .゚Д゚ノ",
        "(゚Д゚) [゚Θ゚]",
    ];

    /**
     * @param int $byte
     * @param int $level
     * @return string
     */
    protected static function randomize($byte, $level)
    {
        $random = [
            0 => [['+0', '-0'], ['+1', '-1'], ['+3', '-3'], ['+4', '-4']],
            1 => [['+1', '-0'], ['+3', '-1', '-1'], ['+4', '-3']],
            2 => [['+3', '-1'], ['+4', '-3', '+1'], ['+3', '+3', '-4']],
            3 => [['+3', '-0'], ['+4', '-3', '+1', '+1']],
            4 => [['+4', '+0'], ['+1', '+3'], ['+4', '-0']],
            5 => [['+3', '+1', '+1'], ['+4', '+1'], ['+3', '+3', '-1']],
            6 => [['+3', '+3'], ['+4', '+1', '+1'], ['+4', '+3', '-1']],
            7 => [['+3', '+4'], ['+3', '+3', '+1'], ['+4', '+4', '-1']],
        ];
        while ($level--) {
            $byte = preg_replace_callback('/[0-7]/', function($match) use ($random) {
                $numbers = $random[$match[0]][mt_rand(0, count($random[$match[0]]) - 1)];
                shuffle($numbers);
                $byte = ltrim(implode('', $numbers), '+');
                return "($byte)";
            }, $byte);
        }
        $byte = str_replace('+-', '-', $byte);
        return str_replace(array_keys(self::$bytes), self::$bytes, $byte);
    }
}

看见CK圈子里面很多人都使用了aaencode加密了部分js代码,仔细观察观察他的加密方案其实是很容易理解的,开头他是写了一堆东西的,反正也看不懂对不对,那我们就将他清空。

需要清空的内容:

var r = "゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ ['_']; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); ";
r += "X=_=3; ";
r += "\r\n\r\n    X / _ / X < \"来週も見てくださいね!\";\r\n\r\n";
r += "(゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);"+
    "(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] "+
    ",゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] "+
    ",゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];"+
    "(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];"+
    "(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];"+
    "(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + "+
    "((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+"+
    "((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+"+
    "((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+"+
    "((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];"+
    "(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+"+
    "((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+"+
    "((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; "+
    "(゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\\\'; "+
    "(゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];"+
    "(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];"+//TODO
    "(゚Д゚) [゚o゚]='\\\"';"+ 
    "(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+";
r += "(゚Д゚)[゚o゚]+ ";
r += "(゚Д゚)[゚o゚]) (゚Θ゚)) ('_');";
r += "+ ";

以上内容全部清空,那么你们将会发现一个奇迹,内容怎么特么会这么少,对吧。

var b = [
   "(c^_^o)",
   "(゚Θ゚)",
   "((o^_^o) - (゚Θ゚))",
   "(o^_^o)",
   "(゚ー゚)",
   "((゚ー゚) + (゚Θ゚))",
   "((o^_^o) +(o^_^o))",
   "((゚ー゚) + (o^_^o))",
   "((゚ー゚) + (゚ー゚))",
   "((゚ー゚) + (゚ー゚) + (゚Θ゚))",
   "(゚Д゚) .゚ω゚ノ",
   "(゚Д゚) .゚Θ゚ノ",
   "(゚Д゚) ['c']",
   "(゚Д゚) .゚ー゚ノ",
   "(゚Д゚) .゚Д゚ノ",
   "(゚Д゚) [゚Θ゚]"
];

最后我们在将t = "(゚Д゚)[゚ε゚]+";给分段后在做进制转换处理就可以得出最终的结果了,做处理的时候还要注意(b数组)他有一个数组替换的。

在线:在线解密