├── ddmc.png ├── header.png ├── params.png ├── wx-group.jpg ├── .gitignore ├── README.md └── deviceToken.js /ddmc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/testerSunshine/ddmc/HEAD/ddmc.png -------------------------------------------------------------------------------- /header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/testerSunshine/ddmc/HEAD/header.png -------------------------------------------------------------------------------- /params.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/testerSunshine/ddmc/HEAD/params.png -------------------------------------------------------------------------------- /wx-group.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/testerSunshine/ddmc/HEAD/wx-group.jpg -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | *.iml 3 | **/target/ 4 | # Build and Release Folders 5 | bin-debug/ 6 | bin-release/ 7 | [Oo]bj/ 8 | [Bb]in/ 9 | 10 | # Other files and folders 11 | .settings/ 12 | 13 | # Executables 14 | *.swf 15 | *.air 16 | *.ipa 17 | *.apk 18 | 19 | # Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties` 20 | # should NOT be excluded as they contain compiler settings and other important 21 | # information for Eclipse / Flash Builder. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 叮咚小程序自动预约 2 | 本程序为自动预约叮咚买菜小程序商品,为exe软件,无需配置代码环境,开箱即用 3 | ![图片](./ddmc.png) 4 | 5 | ## 使用教程 6 | 1. 在release下载已经打包好的程序并打开,也会在gitee上同步更新此仓库 https://gitee.com/wenxiansen/ddmc-gui 7 | ``` 8 | 蓝奏云下载地址 9 | https://wwz.lanzoub.com/b00vjtkkf 10 | 密码:96hg 11 | github release 下载地址 12 | https://github.com/testerSunshine/ddmc/releases 13 | ``` 14 | 2. 选用Charles抓包填入参数 15 | 3. 执行即可 16 | 17 | 18 | ## 注意事项 19 | 20 | 1. 如果在6点和8点30(进APP看公告有写开放时间)没买到不要一直跑程序,长时间并发接口会被对方拉黑到IP黑名单中,接口返回405,一般一分钟内没预约到就建议关闭程序 21 | 2. 推送配置说明: 22 | 1. 点击此链接关注公众号 https://wxpusher.zjiecode.com/wxuser/?type=1&id=20101#/follow 23 | 2. 然后点击「我的」-「我的UID」查询到UID 24 | 3. 填入uid到推送uid,点击测试 25 | 3. 关于各个按钮的说明 26 | - ck(必填): 登录态,对应抓包header中的cookies 27 | - deviceToken(必填): 抓包获取 28 | - referer(必填): 抓包获取 29 | - devicesId(必填): 抓包获取 30 | - 读取配置: 由于配置项越来越多,每次重新打开软件重新配置比较麻烦,选中一个叫config.dd的文件中读取出来 31 | - 保存配置: 由于配置项越来越多,请在程序跑通之后将配置保留在你的文件夹中 32 | - 下单线程: 捡漏设置1,抢购设置5-10 33 | - 购物车线程: 捡漏设置1,抢购设置3 34 | - 配送线程: 捡漏设置1,抢购设置3 35 | - 验单线程: 捡漏设置1,抢购设置3 36 | - 休眠(S): 这个只对下单模式中的捡漏选项有用,目前由于封号严重,推荐为30S以上 37 | - 下单模式: 捡漏(非抢购时段有一定几率放库存和运力),直接预约(早6和早8.30分会有大量库存和运力,此时段改为直接预约,此功能非常容易封号,一般2-5分钟没成功改为捡漏模式) 38 | - 开始时间: 对应的直接预约功能,会卡住提交订单时间到你所设置的时间,并不是定时跑功能 39 | - 下单金额: 当购物车中的商品金额大于下单金额才会下单,默认为0,也就是所有金额都可以下单 40 | - 收货地址:默认为第一个收货地址,可以按照顺序填写 41 | - 音乐: 成功后播放音乐,请调大电脑音频音量,也就是美好的一天即将从这里开始 42 | - 推送uid: 成功后有一个微信推送提醒你付款,在推送配置说明有详细的操作步骤,务必配置好和测试好,别错过一次吃饱的机会 43 | - 下单先检查运力: 目前直接刷配送时间接口会封号,目前换了个接口检查运力,希望能有改善封号的几率 44 | 45 | 46 | ## 快捷抓包 47 | 48 | 忘记小程序已经有PC版了,手机进入小程序右上角3个点->在电脑中打开即可,送上一个参考文章https://blog.csdn.net/z2181745/article/details/123002569 比手机抓包方便太多。 49 | 50 | 注意事项 51 | 1. Charles安装和配置好后再打开或重新打开电脑端叮咚小程序,如果在之前打开可能会抓不到 52 | 2. 如果使用电脑端小程序抓包,则不要去碰手机微信里的叮咚小程序,否则session会失效,反过来也一样,其他操作在app上操作不影响,但不能同时在两个端的小程序操作,互斥 53 | 3. exe中session、referer、device_id将从header中读取 54 | exe中devices将从header中读取 55 | 56 | ## 版本 57 | 2022041605版本更新日志 58 | 1. devicesToken 59 | 60 | 2022041604版本更新日志 61 | 1. 运力检查 62 | 63 | 2022041603版本更新日志 64 | 1. 语音播报修复 65 | 66 | 2022041504版本更新日志 67 | 1. 优化下单 68 | 69 | 2022041501版本更新日志 70 | 1. 优化下单 71 | 72 | 2022041404版本更新日志 73 | 1. 增加wxpusher推送 74 | 75 | 2022041403版本更新日志 76 | 1. 更新api版本号和捡漏逻辑, 请勿使用2022041402版本捡漏 77 | 78 | [=2022041402版本更新日志=] 79 | 1. 更改捡漏逻辑,捡漏请用此版本 80 | 81 | 2022041401版本更新日志 82 | 1. 抢购成功增加音乐提醒,避免错误付款时间 83 | 2. 优化下单参数 84 | 3. 修复购物车无商品会校验订单 85 | 4. 增加最小订单金额下单逻辑,如果小于改下单金额,则不会下单 86 | 5. 新增收货地址选择,按照收货地址顺序填入,默认是第一个,但是目前测试会按照你定位的地址自动选择 87 | 88 | 2022041303版本更新日志 89 | 1. 捡漏模式加强,建议捡漏设置间隔时间为10S 90 | 2. 增加自动全选购物车所有商品 91 | 92 | 2022041302版本更新日志 93 | 1. 修复只有一个地址时的报错 94 | 2. 优化线程打印 95 | 96 | ![图片](./header.png) 97 | ![图片](./params.png) 98 | 有使用上的疑问可以加群咨询 99 | ![图片](./wx-group.jpg) -------------------------------------------------------------------------------- /deviceToken.js: -------------------------------------------------------------------------------- 1 | function E() { 2 | var e = new Date(), t = e.getFullYear().toString(), n = (e.getMonth() + 1).toString(), r = e.getDate().toString(), o = e.getHours().toString(), i = e.getMinutes().toString(), a = e.getSeconds().toString(); 3 | return n = 9 >= n ? "0" + n : n, r = 9 >= r ? "0" + r : r, o = 9 >= o ? "0" + o : o, 4 | i = 9 >= i ? "0" + i : i, a = 9 >= a ? "0" + a : a, t + n + r + o + i + a; 5 | } 6 | 7 | function b() { 8 | return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(e) { 9 | var t = 0 | 16 * Math.random(); 10 | return ("x" == e ? t : 8 | 3 & t).toString(16); 11 | }); 12 | } 13 | 14 | function h(e) { 15 | var t, n, r = "0123456789abcdef", o = ""; 16 | for (n = 0; n < e.length; n += 1) t = e.charCodeAt(n), o += r.charAt(15 & t >>> 4) + r.charAt(15 & t); 17 | return o; 18 | } 19 | 20 | function _(e) { 21 | return d(v(e)); 22 | } 23 | 24 | function d(e) { 25 | return l(f(p(e), 8 * e.length)); 26 | } 27 | 28 | function u(e, t, n, r, o, a, c) { 29 | return i(n ^ (t | ~r), e, t, o, a, c); 30 | } 31 | function o(e, t) { 32 | return e << t | e >>> 32 - t; 33 | } 34 | function i(e, t, n, i, a, c) { 35 | return r(o(r(r(t, e), r(i, c)), a), n); 36 | } 37 | function a(e, t, n, r, o, a, c) { 38 | return i(t & n | ~t & r, e, t, o, a, c); 39 | } 40 | function r(e, t) { 41 | var n = (65535 & e) + (65535 & t); 42 | return (e >> 16) + (t >> 16) + (n >> 16) << 16 | 65535 & n; 43 | } 44 | 45 | function f(e, t) { 46 | e[t >> 5] |= 128 << t % 32, e[14 + (t + 64 >>> 9 << 4)] = t; 47 | var n, o, i, f, l, p = 1732584193, d = -271733879, h = -1732584194, v = 271733878; 48 | for (n = 0; n < e.length; n += 16) o = p, i = d, f = h, l = v, d = u(d = u(d = u(d = u(d = s(d = s(d = s(d = s(d = c(d = c(d = c(d = c(d = a(d = a(d = a(d = a(d, h = a(h, v = a(v, p = a(p, d, h, v, e[n], 7, -680876936), d, h, e[n + 1], 12, -389564586), p, d, e[n + 2], 17, 606105819), v, p, e[n + 3], 22, -1044525330), h = a(h, v = a(v, p = a(p, d, h, v, e[n + 4], 7, -176418897), d, h, e[n + 5], 12, 1200080426), p, d, e[n + 6], 17, -1473231341), v, p, e[n + 7], 22, -45705983), h = a(h, v = a(v, p = a(p, d, h, v, e[n + 8], 7, 1770035416), d, h, e[n + 9], 12, -1958414417), p, d, e[n + 10], 17, -42063), v, p, e[n + 11], 22, -1990404162), h = a(h, v = a(v, p = a(p, d, h, v, e[n + 12], 7, 1804603682), d, h, e[n + 13], 12, -40341101), p, d, e[n + 14], 17, -1502002290), v, p, e[n + 15], 22, 1236535329), h = c(h, v = c(v, p = c(p, d, h, v, e[n + 1], 5, -165796510), d, h, e[n + 6], 9, -1069501632), p, d, e[n + 11], 14, 643717713), v, p, e[n], 20, -373897302), h = c(h, v = c(v, p = c(p, d, h, v, e[n + 5], 5, -701558691), d, h, e[n + 10], 9, 38016083), p, d, e[n + 15], 14, -660478335), v, p, e[n + 4], 20, -405537848), h = c(h, v = c(v, p = c(p, d, h, v, e[n + 9], 5, 568446438), d, h, e[n + 14], 9, -1019803690), p, d, e[n + 3], 14, -187363961), v, p, e[n + 8], 20, 1163531501), h = c(h, v = c(v, p = c(p, d, h, v, e[n + 13], 5, -1444681467), d, h, e[n + 2], 9, -51403784), p, d, e[n + 7], 14, 1735328473), v, p, e[n + 12], 20, -1926607734), h = s(h, v = s(v, p = s(p, d, h, v, e[n + 5], 4, -378558), d, h, e[n + 8], 11, -2022574463), p, d, e[n + 11], 16, 1839030562), v, p, e[n + 14], 23, -35309556), h = s(h, v = s(v, p = s(p, d, h, v, e[n + 1], 4, -1530992060), d, h, e[n + 4], 11, 1272893353), p, d, e[n + 7], 16, -155497632), v, p, e[n + 10], 23, -1094730640), h = s(h, v = s(v, p = s(p, d, h, v, e[n + 13], 4, 681279174), d, h, e[n], 11, -358537222), p, d, e[n + 3], 16, -722521979), v, p, e[n + 6], 23, 76029189), h = s(h, v = s(v, p = s(p, d, h, v, e[n + 9], 4, -640364487), d, h, e[n + 12], 11, -421815835), p, d, e[n + 15], 16, 530742520), v, p, e[n + 2], 23, -995338651), h = u(h, v = u(v, p = u(p, d, h, v, e[n], 6, -198630844), d, h, e[n + 7], 10, 1126891415), p, d, e[n + 14], 15, -1416354905), v, p, e[n + 5], 21, -57434055), h = u(h, v = u(v, p = u(p, d, h, v, e[n + 12], 6, 1700485571), d, h, e[n + 3], 10, -1894986606), p, d, e[n + 10], 15, -1051523), v, p, e[n + 1], 21, -2054922799), h = u(h, v = u(v, p = u(p, d, h, v, e[n + 8], 6, 1873313359), d, h, e[n + 15], 10, -30611744), p, d, e[n + 6], 15, -1560198380), v, p, e[n + 13], 21, 1309151649), h = u(h, v = u(v, p = u(p, d, h, v, e[n + 4], 6, -145523070), d, h, e[n + 11], 10, -1120210379), p, d, e[n + 2], 15, 718787259), v, p, e[n + 9], 21, -343485551), 49 | p = r(p, o), d = r(d, i), h = r(h, f), v = r(v, l); 50 | return [ p, d, h, v ]; 51 | } 52 | 53 | function s(e, t, n, r, o, a, c) { 54 | return i(t ^ n ^ r, e, t, o, a, c); 55 | } 56 | 57 | function c(e, t, n, r, o, a, c) { 58 | return i(t & r | n & ~r, e, t, o, a, c); 59 | } 60 | 61 | function a(e, t, n, r, o, a, c) { 62 | return i(t & n | ~t & r, e, t, o, a, c); 63 | } 64 | 65 | function l(e) { 66 | var t, n = "", r = 32 * e.length; 67 | for (t = 0; t < r; t += 8) n += String.fromCharCode(255 & e[t >> 5] >>> t % 32); 68 | return n; 69 | } 70 | 71 | function p(e) { 72 | var t, n = []; 73 | for (n[(e.length >> 2) - 1] = void 0, t = 0; t < n.length; t += 1) n[t] = 0; 74 | var r = 8 * e.length; 75 | for (t = 0; t < r; t += 8) n[t >> 5] |= (255 & e.charCodeAt(t / 8)) << t % 32; 76 | return n; 77 | } 78 | 79 | function g(e) { 80 | return h(_(e)); 81 | } 82 | function y(e) { 83 | return g(e); 84 | } 85 | 86 | function v(e) { 87 | return unescape(encodeURIComponent(e)); 88 | } 89 | 90 | function getDeviceId() { 91 | var e = E() + y(b()) + "00"; 92 | return e + y("smsk_weapp_" + e).substr(0, 14) + 0; 93 | } 94 | 95 | function T() { 96 | var e = getDeviceId(); 97 | return new Date(), { 98 | deviceId: e, 99 | version: "2.0.0" 100 | }; 101 | } 102 | 103 | function H() { 104 | return { 105 | deviceId: "", 106 | sign: "", 107 | timestamp: "", 108 | length: 0, 109 | }; 110 | } 111 | 112 | function O(e) { 113 | var t = []; 114 | for (var r in e) if (e.hasOwnProperty(r)) { 115 | var o = e[r]; 116 | "object" == n(e[r]) && (o = JSON.stringify(o)), t.push(r + "=" + encodeURIComponent(o)); 117 | } 118 | return t.join("&"); 119 | } 120 | 121 | var _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { 122 | return typeof e; 123 | } : function(e) { 124 | return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e; 125 | }; 126 | 127 | function n(e) { 128 | return (n = "function" == typeof Symbol && "symbol" === _typeof(Symbol.iterator) ? function(e) { 129 | return void 0 === e ? "undefined" : _typeof(e); 130 | } : function(e) { 131 | return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : void 0 === e ? "undefined" : _typeof(e); 132 | })(e); 133 | } 134 | 135 | function K(e) { 136 | var t, n, r, o, i, a, c, s = String.fromCharCode, u = [ -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 ]; 137 | for (a = e.length, i = 0, c = ""; i < a; ) { 138 | do { 139 | t = u[255 & e.charCodeAt(i++)]; 140 | } while (i < a && -1 == t); 141 | if (-1 == t) break; 142 | do { 143 | n = u[255 & e.charCodeAt(i++)]; 144 | } while (i < a && -1 == n); 145 | if (-1 == n) break; 146 | c += s(t << 2 | (48 & n) >> 4); 147 | do { 148 | if (61 == (r = 255 & e.charCodeAt(i++))) return c; 149 | r = u[r]; 150 | } while (i < a && -1 == r); 151 | if (-1 == r) break; 152 | c += s((15 & n) << 4 | (60 & r) >> 2); 153 | do { 154 | if (61 == (o = 255 & e.charCodeAt(i++))) return c; 155 | o = u[o]; 156 | } while (i < a && -1 == o); 157 | if (-1 == o) break; 158 | c += s((3 & r) << 6 | o); 159 | } 160 | return c; 161 | } 162 | 163 | function F(e, t, n, r, o, i) { 164 | var a, c, s, u, f, l, p, d, h, v, _, g, y, m, E = String.fromCharCode, b = [ 16843776, 0, 65536, 16843780, 16842756, 66564, 4, 65536, 1024, 16843776, 16843780, 1024, 16778244, 16842756, 16777216, 4, 1028, 16778240, 16778240, 66560, 66560, 16842752, 16842752, 16778244, 65540, 16777220, 16777220, 65540, 0, 1028, 66564, 16777216, 65536, 16843780, 4, 16842752, 16843776, 16777216, 16777216, 1024, 16842756, 65536, 66560, 16777220, 1024, 4, 16778244, 66564, 16843780, 65540, 16842752, 16778244, 16777220, 1028, 66564, 16843776, 1028, 16778240, 16778240, 0, 65540, 66560, 0, 16842756 ], A = [ -2146402272, -2147450880, 32768, 1081376, 1048576, 32, -2146435040, -2147450848, -2147483616, -2146402272, -2146402304, -2147483648, -2147450880, 1048576, 32, -2146435040, 1081344, 1048608, -2147450848, 0, -2147483648, 32768, 1081376, -2146435072, 1048608, -2147483616, 0, 1081344, 32800, -2146402304, -2146435072, 32800, 0, 1081376, -2146435040, 1048576, -2147450848, -2146435072, -2146402304, 32768, -2146435072, -2147450880, 32, -2146402272, 1081376, 32, 32768, -2147483648, 32800, -2146402304, 1048576, -2147483616, 1048608, -2147450848, -2147483616, 1048608, 1081344, 0, -2147450880, 32800, -2147483648, -2146435040, -2146402272, 1081344 ], P = [ 520, 134349312, 0, 134348808, 134218240, 0, 131592, 134218240, 131080, 134217736, 134217736, 131072, 134349320, 131080, 134348800, 520, 134217728, 8, 134349312, 512, 131584, 134348800, 134348808, 131592, 134218248, 131584, 131072, 134218248, 8, 134349320, 512, 134217728, 134349312, 134217728, 131080, 520, 131072, 134349312, 134218240, 0, 512, 131080, 134349320, 134218240, 134217736, 512, 0, 134348808, 134218248, 131072, 134217728, 134349320, 8, 131592, 131584, 134217736, 134348800, 134218248, 520, 134348800, 131592, 8, 134348808, 131584 ], O = [ 8396801, 8321, 8321, 128, 8396928, 8388737, 8388609, 8193, 0, 8396800, 8396800, 8396929, 129, 0, 8388736, 8388609, 1, 8192, 8388608, 8396801, 128, 8388608, 8193, 8320, 8388737, 1, 8320, 8388736, 8192, 8396928, 8396929, 129, 8388736, 8388609, 8396800, 8396929, 129, 0, 0, 8396800, 8320, 8388736, 8388737, 1, 8396801, 8321, 8321, 128, 8396929, 129, 1, 8192, 8388609, 8193, 8396928, 8388737, 8193, 8320, 8388608, 8396801, 128, 8388608, 8192, 8396928 ], T = [ 256, 34078976, 34078720, 1107296512, 524288, 256, 1073741824, 34078720, 1074266368, 524288, 33554688, 1074266368, 1107296512, 1107820544, 524544, 1073741824, 33554432, 1074266112, 1074266112, 0, 1073742080, 1107820800, 1107820800, 33554688, 1107820544, 1073742080, 0, 1107296256, 34078976, 33554432, 1107296256, 524544, 524288, 1107296512, 256, 33554432, 1073741824, 34078720, 1107296512, 1074266368, 33554688, 1073741824, 1107820544, 34078976, 1074266368, 256, 33554432, 1107820544, 1107820800, 524544, 1107296256, 1107820800, 34078720, 0, 1074266112, 1107296256, 524544, 33554688, 1073742080, 524288, 0, 1074266112, 34078976, 1073742080 ], S = [ 536870928, 541065216, 16384, 541081616, 541065216, 16, 541081616, 4194304, 536887296, 4210704, 4194304, 536870928, 4194320, 536887296, 536870912, 16400, 0, 4194320, 536887312, 16384, 4210688, 536887312, 16, 541065232, 541065232, 0, 4210704, 541081600, 16400, 4210688, 541081600, 536870912, 536887296, 16, 541065232, 4210688, 541081616, 4194304, 16400, 536870928, 4194304, 536887296, 536870912, 16400, 536870928, 541081616, 4210688, 541065216, 4210704, 541081600, 0, 541065232, 16, 16384, 541065216, 4210704, 16384, 4194320, 536887312, 0, 541081600, 536870912, 4194320, 536887312 ], R = [ 2097152, 69206018, 67110914, 0, 2048, 67110914, 2099202, 69208064, 69208066, 2097152, 0, 67108866, 2, 67108864, 69206018, 2050, 67110912, 2099202, 2097154, 67110912, 67108866, 69206016, 69208064, 2097154, 69206016, 2048, 2050, 69208066, 2099200, 2, 67108864, 2099200, 67108864, 2099200, 2097152, 67110914, 67110914, 69206018, 69206018, 2, 2097154, 67108864, 67110912, 2097152, 69208064, 2050, 2099202, 69208064, 2050, 67108866, 69208066, 69206016, 2099200, 0, 2, 69208066, 0, 2099202, 69206016, 2048, 67108866, 67110912, 2048, 2097154 ], C = [ 268439616, 4096, 262144, 268701760, 268435456, 268439616, 64, 268435456, 262208, 268697600, 268701760, 266240, 268701696, 266304, 4096, 64, 268697600, 268435520, 268439552, 4160, 266240, 262208, 268697664, 268701696, 4160, 0, 0, 268697664, 268435520, 268439552, 266304, 262144, 266304, 262144, 268701696, 4096, 64, 268697664, 4096, 266304, 268439552, 64, 268435520, 268697600, 268697664, 268435456, 262144, 268439616, 0, 268701760, 262208, 268435520, 268697600, 268439552, 268439616, 0, 268701760, 266240, 266240, 4160, 4160, 262208, 268435456, 268701696 ], w = V(e), I = 0, k = t.length, D = 0, x = 32 == w.length ? 3 : 9; 165 | d = 3 == x ? n ? [ 0, 32, 2 ] : [ 30, -2, -2 ] : n ? [ 0, 32, 2, 62, 30, -2, 64, 96, 2 ] : [ 94, 62, -2, 32, 64, 2, 30, -2, -2 ], 166 | 2 == i ? t += " " : 1 == i ? (s = 8 - k % 8, t += E(s, s, s, s, s, s, s, s), 167 | 8 == s && (k += 8)) : !i && (t += "\0\0\0\0\0\0\0\0"); 168 | var N = "", L = ""; 169 | for (1 == r && (h = o.charCodeAt(I++) << 24 | o.charCodeAt(I++) << 16 | o.charCodeAt(I++) << 8 | o.charCodeAt(I++), 170 | _ = o.charCodeAt(I++) << 24 | o.charCodeAt(I++) << 16 | o.charCodeAt(I++) << 8 | o.charCodeAt(I++), 171 | I = 0); I < k; ) { 172 | for (l = t.charCodeAt(I++) << 24 | t.charCodeAt(I++) << 16 | t.charCodeAt(I++) << 8 | t.charCodeAt(I++), 173 | p = t.charCodeAt(I++) << 24 | t.charCodeAt(I++) << 16 | t.charCodeAt(I++) << 8 | t.charCodeAt(I++), 174 | 1 == r && (n ? (l ^= h, p ^= _) : (v = h, g = _, h = l, _ = p)), l ^= (s = 252645135 & (l >>> 4 ^ p)) << 4, 175 | l ^= (s = 65535 & (l >>> 16 ^ (p ^= s))) << 16, l ^= s = 858993459 & ((p ^= s) >>> 2 ^ l), 176 | l ^= s = 16711935 & ((p ^= s << 2) >>> 8 ^ l), l = (l ^= (s = 1431655765 & (l >>> 1 ^ (p ^= s << 8))) << 1) << 1 | l >>> 31, 177 | p = (p ^= s) << 1 | p >>> 31, c = 0; c < x; c += 3) { 178 | for (y = d[c + 1], m = d[c + 2], a = d[c]; a != y; a += m) u = p ^ w[a], f = (p >>> 4 | p << 28) ^ w[a + 1], 179 | s = l, l = p, p = s ^ (A[63 & u >>> 24] | O[63 & u >>> 16] | S[63 & u >>> 8] | C[63 & u] | b[63 & f >>> 24] | P[63 & f >>> 16] | T[63 & f >>> 8] | R[63 & f]); 180 | s = l, l = p, p = s; 181 | } 182 | p = p >>> 1 | p << 31, p ^= s = 1431655765 & ((l = l >>> 1 | l << 31) >>> 1 ^ p), 183 | p ^= (s = 16711935 & (p >>> 8 ^ (l ^= s << 1))) << 8, p ^= (s = 858993459 & (p >>> 2 ^ (l ^= s))) << 2, 184 | p ^= s = 65535 & ((l ^= s) >>> 16 ^ p), p ^= s = 252645135 & ((l ^= s << 16) >>> 4 ^ p), 185 | l ^= s << 4, 1 == r && (n ? (h = l, _ = p) : (l ^= v, p ^= g)), L += E(l >>> 24, 255 & l >>> 16, 255 & l >>> 8, 255 & l, p >>> 24, 255 & p >>> 16, 255 & p >>> 8, 255 & p), 186 | 512 == (D += 8) && (N += L, L = "", D = 0); 187 | } 188 | return N + L; 189 | } 190 | 191 | function V(e) { 192 | for (var t, n, r, o = [ 0, 4, 536870912, 536870916, 65536, 65540, 536936448, 536936452, 512, 516, 536871424, 536871428, 66048, 66052, 536936960, 536936964 ], i = [ 0, 1, 1048576, 1048577, 67108864, 67108865, 68157440, 68157441, 256, 257, 1048832, 1048833, 67109120, 67109121, 68157696, 68157697 ], a = [ 0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272, 0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272 ], c = [ 0, 2097152, 134217728, 136314880, 8192, 2105344, 134225920, 136323072, 131072, 2228224, 134348800, 136445952, 139264, 2236416, 134356992, 136454144 ], s = [ 0, 262144, 16, 262160, 0, 262144, 16, 262160, 4096, 266240, 4112, 266256, 4096, 266240, 4112, 266256 ], u = [ 0, 1024, 32, 1056, 0, 1024, 32, 1056, 33554432, 33555456, 33554464, 33555488, 33554432, 33555456, 33554464, 33555488 ], f = [ 0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746, 0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746 ], l = [ 0, 65536, 2048, 67584, 536870912, 536936448, 536872960, 536938496, 131072, 196608, 133120, 198656, 537001984, 537067520, 537004032, 537069568 ], p = [ 0, 262144, 0, 262144, 2, 262146, 2, 262146, 33554432, 33816576, 33554432, 33816576, 33554434, 33816578, 33554434, 33816578 ], d = [ 0, 268435456, 8, 268435464, 0, 268435456, 8, 268435464, 1024, 268436480, 1032, 268436488, 1024, 268436480, 1032, 268436488 ], h = [ 0, 32, 0, 32, 1048576, 1048608, 1048576, 1048608, 8192, 8224, 8192, 8224, 1056768, 1056800, 1056768, 1056800 ], v = [ 0, 16777216, 512, 16777728, 2097152, 18874368, 2097664, 18874880, 67108864, 83886080, 67109376, 83886592, 69206016, 85983232, 69206528, 85983744 ], _ = [ 0, 4096, 134217728, 134221824, 524288, 528384, 134742016, 134746112, 16, 4112, 134217744, 134221840, 524304, 528400, 134742032, 134746128 ], g = [ 0, 4, 256, 260, 0, 4, 256, 260, 1, 5, 257, 261, 1, 5, 257, 261 ], y = 8 < e.length ? 3 : 1, m = Array(32 * y), E = [ 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0 ], b = 0, A = 0, P = 0; P < y; P++) { 193 | var O = e.charCodeAt(b++) << 24 | e.charCodeAt(b++) << 16 | e.charCodeAt(b++) << 8 | e.charCodeAt(b++), T = e.charCodeAt(b++) << 24 | e.charCodeAt(b++) << 16 | e.charCodeAt(b++) << 8 | e.charCodeAt(b++); 194 | O ^= (r = 252645135 & (O >>> 4 ^ T)) << 4, O ^= r = 65535 & ((T ^= r) >>> -16 ^ O), 195 | O ^= (r = 858993459 & (O >>> 2 ^ (T ^= r << -16))) << 2, O ^= r = 65535 & ((T ^= r) >>> -16 ^ O), 196 | O ^= (r = 1431655765 & (O >>> 1 ^ (T ^= r << -16))) << 1, O ^= r = 16711935 & ((T ^= r) >>> 8 ^ O), 197 | r = (O ^= (r = 1431655765 & (O >>> 1 ^ (T ^= r << 8))) << 1) << 8 | 240 & (T ^= r) >>> 20, 198 | O = T << 24 | 16711680 & T << 8 | 65280 & T >>> 8 | 240 & T >>> 24, T = r; 199 | for (var S = 0; S < E.length; S++) E[S] ? (O = O << 2 | O >>> 26, T = T << 2 | T >>> 26) : (O = O << 1 | O >>> 27, 200 | T = T << 1 | T >>> 27), T &= -15, t = o[(O &= -15) >>> 28] | i[15 & O >>> 24] | a[15 & O >>> 20] | c[15 & O >>> 16] | s[15 & O >>> 12] | u[15 & O >>> 8] | f[15 & O >>> 4], 201 | r = 65535 & ((n = l[T >>> 28] | p[15 & T >>> 24] | d[15 & T >>> 20] | h[15 & T >>> 16] | v[15 & T >>> 12] | _[15 & T >>> 8] | g[15 & T >>> 4]) >>> 16 ^ t), 202 | m[A++] = t ^ r, m[A++] = n ^ r << 16; 203 | } 204 | return m; 205 | } 206 | 207 | function Y(e, t) { 208 | var n = H().length; 209 | try { 210 | var r = $(F, K(e), "", 0).substr(0, n).split(","), o = W(r[0]), i = null; 211 | return "function" == typeof o && (i = function(e) { 212 | return $(o, e, r[2], r[1], r[3]); 213 | }), "W" + U(i, t); 214 | } catch (e) { 215 | return "W" + U(F, t); 216 | } 217 | } 218 | function W(e) { 219 | var t = [ null, F ]; 220 | return t[e] ? t[e] : null; 221 | } 222 | 223 | function U(e, t) { 224 | try { 225 | var n = H().timestamp; 226 | return B(e(t)) + n; 227 | } catch (e) { 228 | var r = G().timestamp; 229 | return B($(F, t)) + r; 230 | } 231 | } 232 | 233 | function U(e, t) { 234 | try { 235 | var n = H().timestamp; 236 | return B(e(t)) + n; 237 | } catch (e) { 238 | var r = G().timestamp; 239 | return B($(F, t)) + r; 240 | } 241 | } 242 | 243 | function G() { 244 | return { 245 | deviceId: S(), 246 | sign: null, 247 | timestamp: re.timestamp 248 | }; 249 | } 250 | 251 | function m(e) { 252 | e = unescape(e); 253 | for (var t = String.fromCharCode, n = t(e.charCodeAt(0) - e.length), r = 1; r < e.length; r++) n += t(e.charCodeAt(r) - n.charCodeAt(r - 1)); 254 | return n; 255 | } 256 | 257 | re = { 258 | key: m("%5B%A0%C0%DB%DD%E2%D2%CE"), 259 | deviceId: getDeviceId(), 260 | timestamp: m("%3Eelollnmmnhck") 261 | } 262 | 263 | function $(e, t, n, r, o, i) { 264 | return e = e || F, n = n || re.key, r = 0 == r ? 0 : 1, o = 2 == o ? 1 : 0, 265 | n += "", 0 == o ? e(n, t, r) : e(n, t, r, o, i); 266 | } 267 | 268 | function B(e) { 269 | var t, n, r, o, i, a, c = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 270 | for (r = e.length, n = 0, t = ""; n < r; ) { 271 | if (o = 255 & e.charCodeAt(n++), n == r) { 272 | t += c.charAt(o >> 2), t += c.charAt((3 & o) << 4), t += "=="; 273 | break; 274 | } 275 | if (i = e.charCodeAt(n++), n == r) { 276 | t += c.charAt(o >> 2), t += c.charAt((3 & o) << 4 | (240 & i) >> 4), t += c.charAt((15 & i) << 2), 277 | t += "="; 278 | break; 279 | } 280 | a = e.charCodeAt(n++), t += c.charAt(o >> 2), t += c.charAt((3 & o) << 4 | (240 & i) >> 4), 281 | t += c.charAt((15 & i) << 2 | (192 & a) >> 6), t += c.charAt(63 & a); 282 | } 283 | return t; 284 | } 285 | function S() { 286 | return getDeviceId() 287 | } 288 | 289 | function getDeviceToken(){ 290 | var e = O(T()); 291 | return Y(H().sign, e); 292 | } --------------------------------------------------------------------------------