书接上回
前面文章因为孩子晚上哭闹而告终,后面的解密草草结束了。只能感叹,奶爸伤不起。既要挣钱养家,又要照顾孩子和她。只希望孩子快快长大。
防水墙加密参数分析
1 <!DOCTYPE html> 2 <html> 3 <head lang=zh-CN> 4 <meta charset=UTF-8> 5 <meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"> 6 <meta name=renderer content=webkit> 7 <script src=https://captcha.gtimg.com/open/1/lang_2052.js></script> 8 <script type=text/javascript src="https://captcha.gtimg.com/open/1/jquery-1.11.3.min.js?v=1.1.0"></script> 9 <link rel=stylesheet type=text/css href="/cap_icons.css?v=2.2.4"> 10 <link rel=stylesheet href="/union_slide_puzzle_cap.css?v=2.2.7"> 11 <script src=https://captcha.gtimg.com/open/1/JsonMsg.js></script> 12 <script src=https://captcha.gtimg.com/open/1/libbm.js></script> 13 <script type=text/javascript src=https://captcha.gtimg.com/open/1/d41060624d.js></script> 14 <script defer type=text/javascript src="https://captcha.gtimg.com/public/2/tokenidiframe_d.js?v=1.0.0"></script> 15 </head> 16 <body class=captcha_aq unselectable=on> 17 <div class=slide_puzzle> 18 <div class=container_wrap> 19 <div class=container_wrap_modal></div> 20 <div class=container_head> 21 <div class=icon> 22 <div class="title_icon logo aq_icon aq_icon_vryLogo" style=color:#;></div> 23 <div class=title_icon_modal></div> 24 </div> 25 <div class=title id=title style=color:#;>安全验证</div> 26 <span class="aq_icon aq_icon_close icon_close"></span> 27 </div> 28 <div class=container_body id=container_body> 29 <div class=captchArea ctrl=capachArea> 30 <div class=layout> 31 <div class=drag> 32 <div class=network_error style=display:none;></div> 33 <div class=oripic data-img=captcha-bkg> 34 <img id=slideBkg class="big img" style=visibility:hidden;> 35 </div> 36 <div class=operates style=visibility:hidden;> 37 <div class="refresh captcha_icon"> 38 <a class="aq_icon aq_icon_refresh" id=reload href=javascript:void(0)></a> 39 <span class=tip style=color:#; id=change_pic></span> 40 </div> 41 <div class="help captcha_icon"> 42 <a class="aq_icon aq_icon_vryFeedback" id=showFB target=_blank rel="noopener noreferrer" href=javascript:void(0);></a> 43 <span class=tip style=color:#; id=feedback></span> 44 </div> 45 <div class=clear_both></div> 46 </div> 47 <img id=slideBlock class=slideBlock style=visibility:hidden;> 48 <img id=totalBlock class=totalBlock style=visibility:hidden;> 49 <div id=tip_point class=tip_point_2052 style=visibility:hidden;></div> 50 <div id=bar_success class=bar_success> 51 <div class=bkg></div> 52 <span class=bar_success_icon>验证成功</span> 53 </div> 54 <div id=bar_mask class=bar_mask></div> 55 <div class=loader> 56 <div class=ball-beat> 57 <div style="background-color:#;opacity:0.2;filter: alpha(opacity=20);"></div> 58 <div style=background-color:#;></div> 59 <div style="background-color:#;opacity:0.2;filter: alpha(opacity=20);"></div> 60 </div> 61 </div> 62 </div> 63 </div> 64 <div class=opArea> 65 <div id=slide class=slide> 66 <div class=slide_bkg_border></div> 67 <div class=slide_bkg id=slide_bkg style=color:#;></div> 68 <div id=slide_bar_head class=bar_head unselectable=on> 69 <div class="bar_head_modal aq_icon aq_icon_va_loading" unselectable=on style=color:#;></div> 70 <img class=bar_head_modal_img unselectable=on src="/slide_modal.png?v=1.0"> 71 <div class=bar_bkg unselectable=on></div> 72 </div> 73 </div> 74 </div> 75 </div> 76 </div> 77 </div> 78 </div> 79 <div class=captcha_aq_modal></div> 80 </body> 81 <script type=text/javascript> 82 !function(t) { 83 function e(n) { 84 if (o[n]) 85 return o[n].exports; 86 var i = o[n] = { 87 exports: {}, 88 id: n, 89 loaded: !1 90 }; 91 return t[n].call(i.exports, i, i.exports, e), 92 i.loaded = !0, 93 i.exports 94 } 95 var o = {}; 96 return e.m = t, 97 e.c = o, 98 e.p = "", 99 e(0) 100 }([function(t, e, o) { 101 var n = o(1) 102 , i = o(2); 103 n(document).ajaxSend(function(t, e, o) { 104 /^post$/i.test(o.type) ? o.data = i(o.data) : o.url = i(o.url) 105 }); 106 var r = o(3) 107 , a = o(8) 108 , s = o(26) 109 , c = (o(12), 110 o(6)); 111 o(18); 112 var d = o(13) 113 , f = o(15) 114 , l = "noborder" 115 , p = "" 116 , u = "embed" 117 , h = ""; 118 n(function() { 119 var t = new r; 120 t.init({ 121 theme: p, 122 color: h 123 }), 124 t.conform(u, 4, h, p), 125 window.PIE && n(".bar_head_modal_img, .bar_bkg, #slide").each(function() { 126 PIE.attach(this) 127 }), 128 "noborder" != l && t.addBorder(), 129 s.init(t), 130 a.init(), 131 n("#title").html(c.c2), 132 n("#change_pic").html(c.c5), 133 n("#feedback").html(c.c4), 134 n(".bar_success_icon").html(c.c3), 135 n("#slide_bkg").html(c.puzzle1), 136 n(".network_error").html(c.c13), 137 document.body.onselectstart = function() { 138 return !1 139 } 140 , 141 document.body.onmousedown = function() { 142 return !1 143 } 144 , 145 BJ_REPORT && BJ_REPORT.init && BJ_REPORT.init({ 146 onReport: function(t, e) { 147 var o = ""; 148 e && e.msg && (o += e.msg), 149 f.send(d.getInfo().tokenid, 1, o) 150 } 151 }) 152 }) 153 } 154 , function(t, e) { 155 t.exports = jQuery 156 } 157 , function(t, e) { 158 var o = function() { 159 var t = 1 160 , e = /subsid=(\d+)/.exec(location.href); 161 e && (t = parseInt(e[1], 10) + 1); 162 var o = function(e, o) { 163 var n = o || t; 164 return e = /subsid=\d+/.test(e) ? e.replace(/subsid=\d+/g, "subsid=" + n) : e + "&subsid=" + n, 165 o || t++, 166 e 167 }; 168 return o.get = function() { 169 return t 170 } 171 , 172 o.bind = function() { 173 var e = t++; 174 return function(t) { 175 return o(t, e) 176 } 177 } 178 , 179 o.reset = function() { 180 t = 1 181 } 182 , 183 o 184 }(); 185 t.exports = o 186 } 187 , function(t, e, o) { 188 function n(t) { 189 this.opts = i.extend(s, t || {}) 190 } 191 var i = o(1) 192 , r = o(4) 193 , a = o(5) 194 , s = { 195 color: "#1a79ff", 196 color_e: "#b3b3b3", 197 c_gray_icon: "#b3b3b3", 198 borderEle: i(".container_wrap"), 199 fontEles: [i(".radio"), i(".tip")], 200 bgEles: [i(".btn_primary")], 201 theme: "" 202 }; 203 n.prototype.init = function(t) { 204 this.opts = i.extend(s, t || {}), 205 "yellow" == this.opts.theme ? this.opts.color_e = "#bea272" : "" != this.opts.color && (this.opts.color_e = this.opts.color) 206 } 207 , 208 n.prototype.addBorder = function() { 209 this.opts.borderEle.addClass("cap_container") 210 } 211 , 212 n.prototype.addBorderTop = function() { 213 this.opts.borderEle.addClass("cap_container_top cap_container_shadow") 214 } 215 , 216 n.prototype.dealEvents = function(t) { 217 if ("yellow" == this.opts.theme) { 218 var e = r.lighten(this.opts.color_e, 40); 219 t.css("color", e) 220 } else { 221 var e = r.lighten(this.opts.c_gray_icon, 40); 222 t.css("color", e) 223 } 224 } 225 , 226 n.prototype.unDealEvents = function(t) { 227 "yellow" == this.opts.theme ? t.css("color", this.opts.color_e) : t.css("color", this.opts.c_gray_icon) 228 } 229 , 230 n.prototype.setElements = function() { 231 for (var t = this.opts.color, e = this.opts.fontEles, o = 0; o < e.length; o++) 232 e[o].each(function() { 233 i(this).css("color", t) 234 }); 235 for (var n = this.opts.bgEles, r = 0; r < n.length; r++) 236 n[r].each(function() { 237 i(this).css({ 238 background: t, 239 "border-color": t 240 }) 241 }) 242 } 243 , 244 n.prototype.set = function(t, e) { 245 t in this.opts && (this.opts[t] = e) 246 } 247 , 248 n.prototype.conform = function(t, e, o, n) { 249 if ("yellow" == n && this.opts.borderEle.css("1" == a.isIE() ? { 250 border: "1px solid rgb(234,223,199)", 251 background: "linear-gradient(180deg,#fff9ed,#fff4dd)", 252 background: "-moz-linear-gradient(180deg, #fff9ed,#fff4dd)", 253 background: "-o-linear-gradient(180deg,#fff9ed,#fff4dd)", 254 background: "-webkit-linear-gradient(180deg,#fff9ed,#fff4dd)", 255 background: "-ms-linear-gradient(180deg,#fff9ed,#fff4dd)", 256 filter: "progid:DXImageTransform.Microsoft.Gradient(startColorStr=\'#fff9ed\',endColorStr=\'#fff4dd\',gradientType=\'0\')" 257 } : "point" == t ? { 258 border: "1px solid rgb(234,223,199)", 259 "border-top": "0px", 260 background: "linear-gradient(180deg,#fff9ed,#fff4dd)", 261 background: "-moz-linear-gradient(180deg, #fff9ed,#fff4dd)", 262 background: "-o-linear-gradient(180deg,#fff9ed,#fff4dd)", 263 background: "-webkit-linear-gradient(180deg,#fff9ed,#fff4dd)", 264 filter: "progid:DXImageTransform.Microsoft.Gradient(startColorStr=\'#fff9ed\',endColorStr=\'#fff4dd\',gradientType=\'0\')" 265 } : { 266 border: "1px solid rgb(234,223,199)", 267 background: "linear-gradient(180deg,#fff9ed,#fff4dd)", 268 background: "-moz-linear-gradient(180deg, #fff9ed,#fff4dd)", 269 background: "-o-linear-gradient(180deg,#fff9ed,#fff4dd)", 270 background: "-webkit-linear-gradient(180deg,#fff9ed,#fff4dd)", 271 filter: "progid:DXImageTransform.Microsoft.Gradient(startColorStr=\'#fff9ed\',endColorStr=\'#fff4dd\',gradientType=\'0\')" 272 }), 273 "popup" == t) 274 switch (e) { 275 case 1: 276 "yellow" == n && (i(".title_icon, .title, .icon_close, .aq_icon_refresh, .aq_icon_feedback, .tip, .aq_icon_shield").css({ 277 color: "#bea272" 278 }), 279 i(".btn").css({ 280 background: "#bea272", 281 border: "none" 282 })); 283 break; 284 case 2: 285 "yellow" == n ? (i(".container_head").css({ 286 "border-bottom": "none" 287 }), 288 i(".title_icon, .title, .icon_close, .aq_icon_refresh, .aq_icon_feedback, .tip, .aq_icon_shield").css({ 289 color: "#bea272" 290 }), 291 i(".captcha_aq").css({ 292 background: "linear-gradient(to bottom,#fff9ed,#fff4dd)" 293 }), 294 i(".btn").css({ 295 background: "#bea272", 296 border: "none" 297 })) : i(".container_head").css({ 298 "border-bottom": "none" 299 }); 300 break; 301 case 3: 302 "yellow" == n ? (i(".container_head").css({ 303 "border-bottom": "none" 304 }), 305 i(".title_icon, .title, .icon_close, .aq_icon_refresh, .aq_icon_feedback, .tip, .aq_icon_shield").css({ 306 color: "#bea272" 307 }), 308 i(".captcha_aq").css({ 309 background: "linear-gradient(to bottom,#fff9ed,#fff4dd)" 310 }), 311 i(".btn").css({ 312 background: "#bea272", 313 border: "none" 314 })) : i(".popup_ct_wrap_head").css({ 315 "border-bottom": "1px solid #e5e5e5" 316 }); 317 break; 318 case 4: 319 if ("yellow" == n) 320 i(".tip").css({ 321 color: "#bea272" 322 }), 323 i(".bar_head").css({ 324 border: "none", 325 "border-radius": "5px", 326 "box-shadow": "0 0 10px rgba(108,85,35,0.5)", 327 background: "linear-gradient(to bottom,#ffffff,#eadab6)" 328 }), 329 i(".slide_bkg").css(1 == a.isLteIEVersion(9) ? { 330 filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#7Fecddbb\',endColorstr=\'#7Fecddbb\')", 331 color: "#bea272" 332 } : { 333 "border-top": "1px solid rgba(109,84,28,0.1)", 334 background: "rgba(236,221,187,0.5)", 335 filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#19ecddbb\',endColorstr=\'#19ecddbb\')", 336 color: "#bea272" 337 }), 338 i(".title_icon, aq_icon_vryLogo, .title, .aq_icon_close, .aq_icon_va_loading").css({ 339 color: "#bea272" 340 }); 341 else if (null != o && "" != o) { 342 (o[0] = "#" && 7 == o.length) && (o = o.substr(1)); 343 var r = parseInt(o.substr(0, 2), 16) 344 , s = parseInt(o.substr(2, 2), 16) 345 , c = parseInt(o.substr(4, 2), 16) 346 , d = "1px solid rgba(" + r + "," + s + "," + c + ",0.2)" 347 , f = "1px solid rgba(" + r + "," + s + "," + c + ",0.1)" 348 , l = "rgba(" + r + "," + s + "," + c + ",0.1)" 349 , p = "#19" + o; 350 1 == a.isLteIEVersion(9) ? (i(".bar_head").css({ 351 background: "#fff", 352 border: "1px solid #f5f5f6", 353 "box-shadow": "0 0 10px #d4d4d4", 354 "border-radius": "5px", 355 left: "0px", 356 top: "0px" 357 }), 358 i(".slide_bkg").css({ 359 background: l, 360 filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=" + p + ",endColorstr=" + p + ")" 361 })) : (i(".bar_head").css({ 362 background: "#fff", 363 border: d, 364 "box-shadow": "0 0 10px #d4d4d4", 365 "border-radius": "5px", 366 left: "0px", 367 top: "0px" 368 }), 369 i(".slide_bkg").css({ 370 background: l, 371 filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=" + p + ",endColorstr=" + p + ")", 372 "border-top": f 373 })) 374 } 375 } 376 else 377 switch (e) { 378 case 1: 379 "yellow" == n && (i(".captcha_aq").css({ 380 background: "linear-gradient(to bottom,#fffdf8,#fff9eb)" 381 }), 382 i(".aq_icon_refresh, .aq_icon_feedback, .tip, .aq_icon_shield").css({ 383 color: "#bea272" 384 }), 385 i(".aq_icon_ok, .aq_icon_logo").css({ 386 color: "#bea272" 387 }), 388 i(".btn").css({ 389 background: "#bea272", 390 border: "none" 391 })); 392 break; 393 case 2: 394 "yellow" == n && (i(".aq_icon_refresh, .aq_icon_feedback, .tip, .aq_icon_shield").css({ 395 color: "#bea272" 396 }), 397 i(".aq_icon_vryLogo .title").css({ 398 color: "#bea272" 399 }), 400 i(".captcha_aq").css({ 401 background: "linear-gradient(to bottom,#fffdf8,#fff9eb)" 402 }), 403 i(".btn").css({ 404 background: "#bea272", 405 border: "none" 406 })); 407 break; 408 case 3: 409 "yellow" == n && (i(".aq_icon_refresh, .aq_icon_feedback, .tip, .aq_icon_shield").css({ 410 color: "#bea272" 411 }), 412 i(".aq_icon_vryLogo .title").css({ 413 color: "#bea272" 414 }), 415 i(".captcha_aq").css({ 416 background: "linear-gradient(to bottom,#fffdf8,#fff9eb)" 417 }), 418 i(".btn").css({ 419 background: "#bea272", 420 border: "none" 421 })); 422 break; 423 case 4: 424 if ("yellow" == n) 425 i(".tip").css({ 426 color: "#bea272" 427 }), 428 i(".bar_head").css({ 429 border: "none", 430 "border-radius": "5px", 431 "box-shadow": "0 0 10px rgba(108,85,35,0.5)", 432 background: "linear-gradient(to bottom,#ffffff,#eadab6)" 433 }), 434 i(".aq_icon_va_loading").css({ 435 color: "#bea272" 436 }), 437 i(".slide_bkg").css(1 == a.isLteIEVersion(9) ? { 438 filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#7Fecddbb\',endColorstr=\'#7Fecddbb\')", 439 color: "#bea272" 440 } : { 441 "border-top": "1px solid rgba(109,84,28,0.1)", 442 background: "rgba(236,221,187,0.5)", 443 filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#19ecddbb\',endColorstr=\'#19ecddbb\')", 444 color: "#bea272" 445 }); 446 else if (null != o && "" != o) { 447 (o[0] = "#" && 7 == o.length) && (o = o.substr(1)); 448 var r = parseInt(o.substr(0, 2), 16) 449 , s = parseInt(o.substr(2, 2), 16) 450 , c = parseInt(o.substr(4, 2), 16) 451 , d = "1px solid rgba(" + r + "," + s + "," + c + ",0.2)" 452 , f = "1px solid rgba(" + r + "," + s + "," + c + ",0.1)" 453 , l = "rgba(" + r + "," + s + "," + c + ",0.1)" 454 , p = "#19" + o; 455 1 == a.isLteIEVersion(9) ? (i(".bar_head").css({ 456 background: "#fff", 457 border: "1px solid #f5f5f6", 458 "box-shadow": "0 0 10px #d4d4d4", 459 "border-radius": "5px", 460 left: "0px", 461 top: "0px" 462 }), 463 i(".slide_bkg").css({ 464 background: l, 465 filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=" + p + ",endColorstr=" + p + ")" 466 })) : (i(".bar_head").css({ 467 background: "#fff", 468 border: d, 469 "box-shadow": "0 0 10px #d4d4d4", 470 "border-radius": "5px", 471 left: "0px", 472 top: "0px" 473 }), 474 i(".slide_bkg").css({ 475 background: l, 476 filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=" + p + ",endColorstr=" + p + ")", 477 "border-top": f 478 })) 479 } 480 } 481 } 482 , 483 t.exports = n 484 } 485 , function(t, e) { 486 function o(t, e) { 487 var o = !1; 488 "#" == t[0] && (t = t.slice(1), 489 o = !0); 490 var n = parseInt(t, 16) 491 , i = (n >> 16) + e; 492 i > 255 ? i = 255 : 0 > i && (i = 0); 493 var r = (n >> 8 & 255) + e; 494 r > 255 ? r = 255 : 0 > r && (r = 0); 495 var a = (255 & n) + e; 496 return a > 255 ? a = 255 : 0 > a && (a = 0), 497 (o ? "#" : "") + (a | r << 8 | i << 16).toString(16) 498 } 499 function n(t, e) { 500 var o = t.toLowerCase(); 501 if (o && i.test(o)) { 502 if (4 === o.length) { 503 for (var n = "#", r = 1; 4 > r; r += 1) 504 n += o.slice(r, r + 1).concat(o.slice(r, r + 1)); 505 o = n 506 } 507 for (var a = [], r = 1; 7 > r; r += 2) 508 a.push(parseInt("0x" + o.slice(r, r + 2))); 509 return "RGBA(" + a.join(",") + "," + e + ")" 510 } 511 return o 512 } 513 var i = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/; 514 t.exports = { 515 lighten: o, 516 rgba: n 517 } 518 } 519 , function(t, e) { 520 function o() { 521 var t = navigator.userAgent 522 , e = t.indexOf("Opera") > -1 523 , o = t.indexOf("compatible") > -1 && t.indexOf("MSIE") > -1 && !e; 524 return o ? "1" : "-1" 525 } 526 function n(t) { 527 var e = navigator.userAgent 528 , o = e.indexOf("Opera") > -1 529 , n = e.indexOf("compatible") > -1 && e.indexOf("MSIE") > -1 && !o; 530 if (n) { 531 var i = new RegExp("MSIE (\\d+\\.\\d+);"); 532 i.test(e); 533 var r = parseFloat(RegExp.$1); 534 return t > r ? !0 : !1 535 } 536 return !1 537 } 538 function i(t) { 539 var e = document.createElement("b"); 540 return e.innerHTML = "<!--[if IE " + t + "]><i></i><![endif]-->", 541 1 === e.getElementsByTagName("i").length 542 } 543 function r() { 544 var t, e = {}, o = {}, n = navigator.userAgent.toLowerCase(); 545 (t = n.match(/msie ([\d.]+)/)) ? e.ie = t[1] : (t = n.match(/firefox\/([\d.]+)/)) ? e.firefox = t[1] : (t = n.match(/chrome\/([\d.]+)/)) ? e.chrome = t[1] : (t = n.match(/opera.([\d.]+)/)) ? e.opera = t[1] : (t = n.match(/version\/([\d.]+).*safari/)) ? e.safari = t[1] : 0; 546 return e.ie ? (o.name = "IE", 547 o.version = e.ie) : e.firefox ? (o.name = "firefox", 548 o.version = e.firefox) : e.chrome ? (o.name = "chrome", 549 o.version = e.chrome) : e.opera ? (o.name = "opera", 550 o.version = e.opera) : e.safari ? (o.name = "safari", 551 o.version = e.safari) : (o.name = "other", 552 o.version = "0"), 553 o 554 } 555 function a() { 556 var t = {} 557 , e = navigator.userAgent 558 , o = "Win32" == navigator.platform || "Windows" == navigator.platform 559 , n = "Mac68K" == navigator.platform || "MacPPC" == navigator.platform || "Macintosh" == navigator.platform || "MacIntel" == navigator.platform; 560 if (n) { 561 var i = e.match(/Mac OS X ([\d_]+)/); 562 return t.name = "iMac", 563 i && i[1] ? t.version = i[1] : t.version = "pc", 564 t 565 } 566 t.version = "pc"; 567 var r = "X11" == navigator.platform && !o && !n; 568 if (r) 569 return t.name = "Unix", 570 t; 571 var a = String(navigator.platform).indexOf("Linux") > -1; 572 if (a) 573 return t.name = "Linux", 574 t; 575 if (o) { 576 var s = e.indexOf("Windows NT 5.0") > -1 || e.indexOf("Windows 2000") > -1; 577 if (s) 578 return t.name = "Win2000", 579 t; 580 var c = e.indexOf("Windows NT 5.1") > -1 || e.indexOf("Windows XP") > -1; 581 if (c) 582 return t.name = "WinXP", 583 t; 584 var d = e.indexOf("Windows NT 5.2") > -1 || e.indexOf("Windows 2003") > -1; 585 if (d) 586 return t.name = "Win2003", 587 t; 588 var f = e.indexOf("Windows NT 6.0") > -1 || e.indexOf("Windows Vista") > -1; 589 if (f) 590 return t.name = "WinVista", 591 t; 592 var l = e.indexOf("Windows NT 6.1") > -1 || e.indexOf("Windows 7") > -1; 593 if (l) 594 return t.name = "Win7", 595 t 596 } 597 return t.name = "other", 598 t 599 } 600 t.exports = { 601 isLteIEVersion: n, 602 isIE: o, 603 getBrowserInfo: r, 604 getOSInfo: a, 605 isIEVer: i 606 } 607 } 608 , function(t, e) { 609 t.exports = captcha 610 } 611 , , function(t, e, o) { 612 var n = o(1) 613 , i = { 614 _check: function() { 615 return "maxLength"in document.createElement("textarea") 616 }, 617 init: function() { 618 this._check() || this.fix() 619 }, 620 fix: function() { 621 n("textarea[maxlength]").each(function(t, e) { 622 var o = n(this) 623 , i = parseInt(o.attr("maxlength"), 10); 624 i > 0 && o.keyup(function() { 625 var t = o.val(); 626 t.length > i && (t = t.substring(0, i)), 627 o.val(t) 628 }) 629 }) 630 } 631 }; 632 t.exports = i 633 } 634 , , , function(t, e) { 635 t.exports = { 636 ERROR_TYPE_TWICE_IMAGE_ONERROR: 13, 637 ERROR_TYPE_CGI_IMAGE_ONERROR: 12, 638 ERROR_TYPE_IMAGE_ONERROR: 11, 639 ERROR_TYPE_AJAX_GETSIG: 9, 640 ERROR_TYPE_AJAX_VERIFY: 8, 641 ERROR_TYPE_IMAGE_BEYONDSIZE: 7, 642 ERROR_TYPE_MB_FP_REGISTER_TIMEOUT: 6, 643 ERROR_TYPE_MB_FPJS_DOWNLOAD_FAIL: 5, 644 ERROR_TYPE_PC_FP_REGISTER_TIMEOUT: 4, 645 ERROR_TYPE_PC_FPJS_DOWNLOAD_FAIL: 3, 646 ERROR_TYPE_BADJS_DOWNLOAD_FAIL: 2, 647 ERROR_TYPE_BADJS_REPORT: 1 648 } 649 } 650 , function(t, e, o) { 651 var n = !!window.ActiveXObject 652 , i = o(2) 653 , r = o(13) 654 , a = { 655 timePoints: [], 656 flag1: 21406, 657 flag2: 1, 658 flag3: 1, 659 appid: 0, 660 push: function(t, e) { 661 this.timePoints[t] = e, 662 32 == t && !n && window.performance && window.performance.timing && (this.timePoints[32] = this.timePoints[32] - window.performance.timing.navigationStart) 663 }, 664 set: function(t, e, o, n) { 665 this.flag1 = t, 666 this.flag2 = e, 667 this.flag3 = o, 668 this.appid = n 669 }, 670 parseUrl: function() { 671 var t = location.search.substr(1) 672 , e = new Object; 673 if (t && t.length > 0) 674 for (var o = t.split("&"), n = 0; o && n < o.length; n++) { 675 var i = o[n].split("="); 676 e[i[0]] = i[1] 677 } 678 return e 679 }, 680 queryParam: function(t) { 681 return this.parseUrl(location.search)[t] 682 }, 683 send: function(t, e) { 684 var o = []; 685 if (t) 686 o.push(t + "=" + this.timePoints[t]); 687 else { 688 if (!n && window.performance && window.performance.timing) { 689 var a = window.performance.timing; 690 this.timePoints[1] = a.unloadEventStart, 691 this.timePoints[2] = a.unloadEventEnd, 692 this.timePoints[3] = a.redirectStart, 693 this.timePoints[4] = a.redirectEnd, 694 this.timePoints[5] = a.fetchStart, 695 this.timePoints[6] = a.domainLookupStart, 696 this.timePoints[7] = a.domainLookupEnd, 697 this.timePoints[8] = a.connectStart, 698 this.timePoints[9] = a.connectEnd, 699 this.timePoints[10] = a.requestStart, 700 this.timePoints[11] = a.responseStart, 701 this.timePoints[12] = a.responseEnd, 702 this.timePoints[13] = a.domLoading, 703 this.timePoints[14] = a.domInteractive, 704 this.timePoints[15] = a.domContentLoadedEventStart, 705 this.timePoints[16] = a.domContentLoadedEventEnd, 706 this.timePoints[17] = a.domComplete, 707 this.timePoints[18] = a.loadEventStart, 708 this.timePoints[19] = a.loadEventEnd, 709 this.timePoints[17] <= 0 && (this.timePoints[17] = a.domContentLoadedEventEnd), 710 this.timePoints[18] <= 0 && (this.timePoints[18] = this.timePoints[17]), 711 this.timePoints[19] <= 0 && (this.timePoints[19] = this.timePoints[18]), 712 this.timePoints[20] = this.timePoints[19] - a.navigationStart, 713 this.timePoints[21] = this.timePoints[17] - a.responseEnd, 714 this.timePoints[22] = a.domainLookupEnd - a.domainLookupStart, 715 this.timePoints[23] = a.responseStart - a.navigationStart, 716 this.timePoints[24] = a.connectEnd - a.connectStart, 717 this.timePoints[29] = this.appid, 718 this.timePoints[31] = r.getInfo().tokenid 719 } 720 for (var s = 1; 33 > s; s++) 721 o.push("undefined" != typeof this.timePoints[s] ? s + "=" + this.timePoints[s] : s + "=0"); 722 o.push("33="); 723 var c = this.queryParam("sid"); 724 o.push("34=" + c); 725 for (var s = 35; 49 > s; s++) 726 o.push("undefined" != typeof this.timePoints[s] ? s + "=" + this.timePoints[s] : s + "=0"), 727 this.timePoints[s] = void 0 728 } 729 var d, f, l, p, u = "flag1=" + this.flag1 + "&flag2=" + this.flag2 + "&flag3=" + this.flag3 + "&" + o.join("&"); 730 -1 == window.location.href.indexOf("https") ? (d = "http://dj.captcha.qq.com/caplog?appid=20128&platform=pc&" + u, 731 l = "http://report.huatuo.qq.com/report.cgi?appid=20128&platform=pc&speedparams=" + escape(u)) : (d = "https://dj.captcha.qq.com/caplog?appid=20128&platform=pc&" + u, 732 l = "https://report.huatuo.qq.com/report.cgi?appid=20128&platform=pc&speedparams=" + escape(u)), 733 f = new Image, 734 f.src = e ? e(d) : i(d), 735 p = new Image, 736 p.src = l 737 } 738 }; 739 t.exports = a 740 } 741 , function(t, e) { 742 function o(t) { 743 "undefined" != typeof TDC && TDC.setData && TDC.setData(t) 744 } 745 function n() { 746 "undefined" != typeof TDC && TDC.clearTc && TDC.clearTc() 747 } 748 function i() { 749 var t = ""; 750 return "undefined" != typeof TDC && TDC.getData && (t = TDC.getData(!0)), 751 t 752 } 753 function r() { 754 var t = ""; 755 return "undefined" != typeof TDC && TDC.getInfo && (t = TDC.getInfo()), 756 t 757 } 758 function a() { 759 var t = ""; 760 return "undefined" != typeof TDC && TDC.getInfo && (t = TDC.getInfo()) && (t = t.info), 761 t 762 } 763 function s() { 764 var t = ""; 765 return "undefined" != typeof TDC && TDC.getInfo && (t = TDC.getInfo()) && (t = t.fps), 766 t 767 } 768 function c() { 769 var t = "undefined" == typeof TDC ? 0 : 1; 770 return t 771 } 772 t.exports = { 773 setData: o, 774 getData: i, 775 clearData: n, 776 getInfo: r, 777 getEks: a, 778 getFps: s, 779 getTlg: c 780 } 781 } 782 , function(t, e, o) { 783 function n() { 784 this.url = "https://aq.qq.com/cn2/manage/mbtoken/cap_monitor", 785 this.obj = {}, 786 this.points = [] 787 } 788 var i = o(2); 789 n.prototype = { 790 push: function(t, e) { 791 this.points[t] = e 792 }, 793 set: function(t) { 794 this.obj.tk = t.tk, 795 this.obj.clientType = t.clientType, 796 this.obj.appid = t.appid, 797 this.obj.capType = t.capType 798 }, 799 send: function() { 800 this.obj.data = this.points.slice(); 801 var t = new Image; 802 this.url += "?appid=" + encodeURIComponent(this.obj.appid) + "&uid=&clientType=" + encodeURIComponent(this.obj.clientType) + "&capType=" + encodeURIComponent(this.obj.capType) + "&tk=" + encodeURIComponent(this.obj.tk), 803 this.url += "&t0=" + this.points[0], 804 this.url += "&t1=" + this.points[1], 805 this.url += "&t2=" + this.points[2], 806 this.url += "&rnd=" + Math.random(), 807 t.src = i(this.url) 808 } 809 }, 810 t.exports = n 811 } 812 , function(t, e, o) { 813 var n = o(2) 814 , i = { 815 send: function(t, e, o, i, r, a) { 816 try { 817 var s = new Image 818 , c = document.referrer 819 , d = location.href; 820 c = c.length > 500 ? c.substr(0, 500) : c, 821 d = d.length > 400 ? d.substr(0, 400) : d, 822 o = o && o.length > 300 ? o.substr(0, 300) : o, 823 i = i || 0; 824 var f = "https://aq.qq.com/cn2/manage/mbtoken/cap_monitor?uid=&subcapclass=9&appid=1253408289&referer=" + encodeURIComponent(c) + "&href=" + encodeURIComponent(d); 825 f += "&tokenid=" + t, 826 f += "&type=" + e, 827 f += "&reason=" + encodeURIComponent(o), 828 f += "&errType=" + i, 829 r && (f += "&sid=" + r), 830 a && (f += "&timing=" + a), 831 s.src = n(f) 832 } catch (l) {} 833 } 834 }; 835 t.exports = i 836 } 837 , function(t, e) { 838 var o = function(t) { 839 var e = { 840 id: "", 841 time: t, 842 start: function(t) { 843 this.end(); 844 var e = this.time 845 , o = this; 846 this.id = setTimeout(function() { 847 t(o) 848 }, e) 849 }, 850 end: function() { 851 clearTimeout(this.id) 852 } 853 }; 854 return e 855 }; 856 t.exports = o 857 } 858 , function(t, e, o) { 859 var n = o(1) 860 , i = { 861 header: n(".container_head"), 862 hideTitle: function() { 863 this.header.find(".title").hide() 864 }, 865 showTitle: function() { 866 this.header.find(".title").show() 867 }, 868 setTitle: function(t) { 869 this.header.find(".title").html(t) 870 }, 871 show: function(t) { 872 this.header.show() 873 }, 874 init: function(t) { 875 this.header.find(".icon_close").on("mouseenter mouseleave click", function(e) { 876 var o = n(this); 877 "mouseenter" == e.type && t.theme && t.theme.dealEvents(o), 878 "mouseleave" == e.type && t.theme && t.theme.unDealEvents(o), 879 "click" == e.type && t.close && t.close() 880 }) 881 } 882 }; 883 t.exports = i 884 } 885 , function(t, e, o) { 886 var n = o(13) 887 , i = o(5) 888 , r = "1253408289" 889 , a = "2072465490"; 890 $(function() { 891 $("#showFB").on("click", function() { 892 var t = "https://support.qq.com/products/2136" 893 , e = n.getInfo().tokenid 894 , o = i.getBrowserInfo() 895 , s = i.getOSInfo(); 896 t += t && t.indexOf("?") > 1 ? "&" : "?", 897 t = t + "clientInfo=" + o.name + "&clientVersion=" + o.version + "&os=" + s.name + "&osVersion=" + s.version + "&netType=" + r + "&imei=" + e, 898 a && a.length > 0 && (t = t + "&customInfo=custominfo:clientIP:" + a), 899 window.open(t) 900 }) 901 }) 902 } 903 , , , , , , function(t, e, o) { 904 var n = o(1) 905 , i = function() { 906 function t(t) { 907 t.on("mousedown touchstart", s), 908 t[0].dispatchEvent = null 909 } 910 function e() { 911 n(document).on("mousemove touchmove", f), 912 n(document).on("mouseup touchend", d) 913 } 914 function o() { 915 n(document).off("mousemove touchmove"), 916 n(document).off("mouseup touchend") 917 } 918 function i(t) { 919 return t.originalEvent.touches[0] 920 } 921 function r() { 922 k = !1 923 } 924 function a() { 925 k = !0 926 } 927 function s(t) { 928 t.preventDefault(), 929 c(t), 930 T.dragobj = 1 931 } 932 function c(t) { 933 return T.dragobj = 0, 934 k ? (v = !0, 935 ele_l = p.offset().left, 936 ele_t = p.offset().top, 937 h = t.pageX - ele_l, 938 g = t.pageY - ele_t, 939 "touchstart" == t.type && (h = i(t).clientX - ele_l, 940 g = i(t).clientY - ele_t), 941 e(), 942 T.start(), 943 t.preventDefault(), 944 !1) : void 0 945 } 946 function d(t) { 947 v = !1, 948 o(), 949 T.stop(_, T.dragobj) 950 } 951 function f(t) { 952 var e = t.pageX 953 , o = t.pageY 954 , n = {} 955 , r = t.pageX - h - m 956 , a = t.pageY - g - b; 957 "touchmove" == t.type && (e = i(t).clientX, 958 o = i(t).clientY, 959 r = i(t).clientX - h - m, 960 a = i(t).clientY - g - b); 961 var s = $container.width() - p.width() 962 , c = $container.height() - p.height(); 963 return y && x && (0 > r || 0 > a || r > s || a > c) ? void d(t) : (0 > r && (r = 0), 964 r > s && (r = s), 965 0 > a && (a = 0), 966 a > c && (a = c), 967 _.left = r, 968 _.top = a, 969 n.left = e, 970 n.top = o, 971 T.draging(_, n), 972 p.css(_), 973 t.stopPropagation(), 974 !1) 975 } 976 function l() { 977 p.css(u) 978 } 979 var p, u = {}, h = 0, g = 0, m = 0, b = 0, _ = {}, v = !1, w = !!window.ActiveXObject, y = w && (8 == document.documentMode || 7 == document.documentMode), x = !1, k = !0, T = { 980 stop: function() {}, 981 start: function() {}, 982 draging: function() {}, 983 dragobj: 0 984 }, E = function(t) { 985 T = n.extend(T, t || {}), 986 p = T.ele, 987 $container = T.container, 988 m = $container.offset().left, 989 b = $container.offset().top, 990 x = T.bubble || !1, 991 u.left = p.css("left"), 992 u.top = p.css("top"), 993 p.on("mousedown touchstart", c), 994 p[0].dispatchEvent = null 995 }, I = { 996 init: E, 997 goBack: l, 998 stop: d, 999 cancel: r, 1000 resume: a, 1001 bindMouseDown: t, 1002 hasMouseDown: function() { 1003 return v 1004 } 1005 }; 1006 return I 1007 }; 1008 t.exports = i 1009 } 1010 , function(t, e) { 1011 function o() { 1012 d = c = +new Date 1013 } 1014 function n(t, e) { 1015 var o = +new Date; 1016 s.length < a && s.push({ 1017 x: Math.floor(t), 1018 y: Math.floor(e), 1019 t: o - c 1020 }) 1021 } 1022 function i() { 1023 s.length = 0 1024 } 1025 function r(t) { 1026 for (var e, o = [], n = 0; n < t.length; n++) { 1027 var i = t[n]; 1028 o.push(0 == n ? [i.x, i.y, i.t] : [i.x - e.x, i.y - e.y, Number((i.t - e.t).toFixed(3))]), 1029 e = i 1030 } 1031 return o 1032 } 1033 var a = 300 1034 , s = [] 1035 , c = +new Date 1036 , d = +new Date; 1037 t.exports = { 1038 start: o, 1039 end: i, 1040 push: n, 1041 getData: function() { 1042 return r(s) 1043 } 1044 } 1045 } 1046 , function(t, e, o) { 1047 function n(t) { 1048 a.addTarget(window.parent, "parent"), 1049 i.init({ 1050 theme: t, 1051 success: function(t) { 1052 try { 1053 var e = { 1054 message: { 1055 type: 3, 1056 ticket: t.ticket, 1057 randstr: t.randstr 1058 } 1059 }; 1060 a.targets.parent.send(JSON.stringify(e)) 1061 } catch (o) {} 1062 }, 1063 ready: function() { 1064 try { 1065 var t = { 1066 message: { 1067 type: 10 1068 } 1069 }; 1070 a.targets.parent.send(JSON.stringify(t)) 1071 } catch (e) {} 1072 } 1073 }), 1074 r.init({ 1075 theme: t, 1076 close: function() { 1077 try { 1078 var t = { 1079 message: { 1080 type: 6 1081 } 1082 }; 1083 a.targets.parent.send(JSON.stringify(t)) 1084 } catch (e) {} 1085 } 1086 }), 1087 "popup" == s && (t.addBorderTop(), 1088 r.show()) 1089 } 1090 var i = (o(1), 1091 o(16), 1092 o(27)) 1093 , r = o(17) 1094 , a = new TCapMsg("securityCode") 1095 , s = "embed"; 1096 t.exports = { 1097 init: n 1098 } 1099 } 1100 , function(t, e, o) { 1101 function n(t) { 1102 "popup" == J ? M(".container_wrap").css("height", "270px") : "point" == J && M(".container_wrap").css("height", "231px"), 1103 tt.success = t.success, 1104 tt.ready = t.ready, 1105 i(), 1106 d(t.theme), 1107 u(N, Y || 0, !0), 1108 v() 1109 } 1110 function i() { 1111 if (0 == s("fb")) { 1112 M(".help.captcha_icon").hide(); 1113 var t = M(".refresh.captcha_icon"); 1114 t.css({ 1115 "margin-right": "10px" 1116 }); 1117 var e = t.find(".tip"); 1118 e.css({ 1119 "background-position": "-334px -5px", 1120 right: "-8px" 1121 }), 1122 L && (e[0].style.filter = \'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="/cap_bubble_right_feedback.png",sizingMethod="crop")\') 1123 } 1124 } 1125 function r(t, e, o) { 1126 var n = new Image; 1127 n.onload = function() { 1128 e(n) 1129 } 1130 , 1131 n.onerror = o || function() {} 1132 , 1133 n.src = t 1134 } 1135 function a() { 1136 var t = location.search.substr(1) 1137 , e = new Object; 1138 if (t.length > 0) 1139 for (var o = t.split("&"), n = 0; n < o.length; n++) { 1140 var i = o[n].split("="); 1141 e[i[0]] = i[1] 1142 } 1143 return e 1144 } 1145 function s(t) { 1146 return a(location.search)[t] 1147 } 1148 function c(t, e) { 1149 e.src = "/cap_transparent.gif", 1150 e.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'" + t + "\', sizingMethod=\'scale\')" 1151 } 1152 function d(t) { 1153 function e() { 1154 n.animate({ 1155 left: "0px" 1156 }, { 1157 step: function(t, e) { 1158 i.css("left", t), 1159 0 == t && (i.css("visibility", "visible"), 1160 a.css("visibility", "visible"), 1161 r.css("visibility", "visible"), 1162 M(".slide_bkg").html(S.puzzle1).css({ 1163 color: E 1164 })) 1165 } 1166 }) 1167 } 1168 var o = new q 1169 , n = M("#slide_bar_head") 1170 , i = (n.width(), 1171 M("#slideBlock")) 1172 , r = M("#totalBlock") 1173 , a = M(".oripic") 1174 , s = M("#tip_point"); 1175 1 == z && r.css("visibility", "hidden"); 1176 var c = [r.offset().left, r.offset().top, B]; 1177 A.setData({ 1178 coordinate: c, 1179 clientType: V 1180 }), 1181 o.init({ 1182 ele: n, 1183 container: M("#slide"), 1184 draging: function(t, e) { 1185 $.push(e.left, e.top), 1186 i.css("left", t.left) 1187 }, 1188 stop: function(t, o) { 1189 var n = [{ 1190 left: Math.floor(t.left / B), 1191 top: Math.floor(Y) 1192 }] 1193 , i = $.getData(); 1194 w(n, i, o, function() { 1195 e(), 1196 $.end() 1197 }) 1198 }, 1199 start: function() { 1200 $.start(), 1201 r.css("visibility", "hidden"), 1202 s.css("visibility", "hidden"), 1203 i.css("visibility", "visible"), 1204 a.css("visibility", "visible") 1205 } 1206 }), 1207 o.bindMouseDown(i), 1208 M("#reload").on("click", function() { 1209 f(), 1210 G++, 1211 A.clearData(), 1212 M(".slide_bkg").html(S.puzzle1).css({ 1213 color: E 1214 }) 1215 }), 1216 M(document).on("mouseleave", function() { 1217 o.hasMouseDown() && o.stop() 1218 }), 1219 M(".captcha_icon").on("mouseenter mouseleave mousedown", function(t) { 1220 var e = M(this).find(".tip") 1221 , o = M(this).find("a"); 1222 "mouseenter" == t.type && (o.css("color", "#b3b3b3"), 1223 e.show()), 1224 ("mouseleave" == t.type || "mousedown" == t.type) && (o.css("color", "#fff"), 1225 e.hide()) 1226 }) 1227 } 1228 function f() { 1229 var t; 1230 t = "" != location.search ? location.search + "&rand=" + Math.random() : "?rand=" + Math.random(); 1231 var e = (new Date).getTime(); 1232 M.ajax({ 1233 type: "GET", 1234 url: "/cap_union_new_getsig" + t, 1235 dataType: "json", 1236 error: function(t, e, o) { 1237 var n = "" 1238 , i = 0; 1239 t && t.status && (i = t.status), 1240 e && (n += e + ":"), 1241 t && t.statusText && (n += t.statusText), 1242 C.send(A.getInfo().tokenid, R.ERROR_TYPE_AJAX_GETSIG, n, i) 1243 }, 1244 success: function(t) { 1245 var o = (new Date).getTime(); 1246 if (D.push(26, o - e), 1247 52 == t.ret) { 1248 var n = { 1249 message: { 1250 type: 15 1251 } 1252 }; 1253 return void K.targets.parent.send(JSON.stringify(n)) 1254 } 1255 W = t && t.chlg ? JSON.stringify(t.chlg) : "", 1256 t && t.vsig && (N = t.vsig, 1257 u(t.vsig, parseInt(t.inity, 10), !1)) 1258 } 1259 }) 1260 } 1261 function l(t, e, o, n, i) { 1262 var r = Number(new Date) + (n || 2e3); 1263 i = i || 100, 1264 function a() { 1265 t() ? e() : Number(new Date) < r ? setTimeout(a, i) : o(new Error("timed out for " + t + ": " + arguments)) 1266 }() 1267 } 1268 function p(t, e) { 1269 var o = { 1270 tk: A.getInfo().tokenid, 1271 capType: "9", 1272 clientType: "2", 1273 appid: "1253408289" 1274 } 1275 , n = new O; 1276 n.set(o), 1277 n.push(t, e), 1278 n.send() 1279 } 1280 function u(t, e, o) { 1281 var n = (new Date).getTime(); 1282 0 == ot && (M(".big.img, #slideBlock, #totalBlock, #tip_point, .operates").css({ 1283 visibility: "hidden" 1284 }), 1285 M(".network_error").hide(), 1286 M(".loader").show()); 1287 var i; 1288 i = "" != location.search ? location.search + "&rand=" + Math.random() : "?rand=" + Math.random(); 1289 var a = P("/cap_union_new_getcapbysig" + i + "&vsig=" + t + "&img_index=1"); 1290 r(a, function() { 1291 var t = (new Date).getTime(); 1292 D.push(25, Math.floor(t - n)), 1293 M(".img.big").attr("src", a), 1294 M(".big.img, #slideBlock, #totalBlock, #tip_point, .operates").css({ 1295 visibility: "visible" 1296 }), 1297 o && (tt.ready(), 1298 H = !0, 1299 D.push(32, t), 1300 D.send()) 1301 }, function() { 1302 M("#capInfo").html(S.c7), 1303 M(".img.big").attr("src", "/tx_m_fail.jpg"), 1304 p(0, (new Date).getTime() - n), 1305 o && tt.ready() 1306 }); 1307 var s = P("/cap_union_new_getcapbysig" + i + "&vsig=" + t + "&img_index=2"); 1308 r(s, function(t) { 1309 var n = (new Date).getTime(); 1310 D.push(28, n - d), 1311 M("#slideBlock").attr("src", s), 1312 l(function() { 1313 return t.height > 10 1314 }, function() { 1315 var o = Math.floor(t.height * B); 1316 M("#slideBlock").css({ 1317 height: o, 1318 width: o, 1319 top: e * B 1320 }), 1321 Y = e 1322 }, function() {}, 5e3, 200), 1323 o && tt.ready(), 1324 L && c(s, M("#slideBlock")[0]) 1325 }, function() { 1326 M("#capInfo").html(S.c7), 1327 M("#slideBlock").attr("src", "/tx_m_fail_x.jpg"), 1328 M("#slideBlock").css({ 1329 height: 54, 1330 width: 54, 1331 top: e * B 1332 }), 1333 o && tt.ready(), 1334 p(1, (new Date).getTime() - n) 1335 }); 1336 var d = (new Date).getTime(); 1337 o && setTimeout(function() { 1338 H || (D.push(30, 4e3), 1339 0 >= Z && (Z = (new Date).getTime()), 1340 D.push(32, Z), 1341 D.send()) 1342 }, 4e3) 1343 } 1344 function h(t) { 1345 return "string" == typeof t && -1 != t.indexOf(".") && 1 === parseFloat(t) 1346 } 1347 function g(t) { 1348 return "string" == typeof t && -1 != t.indexOf("%") 1349 } 1350 function m(t, e) { 1351 h(t) && (t = "100%"); 1352 var o = g(t); 1353 return t = nt(e, it(0, parseFloat(t))), 1354 o && (t = parseInt(t * e, 10) / 100), 1355 Math.abs(t - e) < 1e-6 ? 1 : t % e / parseFloat(e) 1356 } 1357 function b(t, e, o) { 1358 t = m(t, 255), 1359 e = m(e, 255), 1360 o = m(o, 255); 1361 var n, i, r = it(t, e, o), a = nt(t, e, o), s = r, c = r - a; 1362 if (i = 0 === r ? 0 : c / r, 1363 r == a) 1364 n = 0; 1365 else { 1366 switch (r) { 1367 case t: 1368 n = (e - o) / c + (o > e ? 6 : 0); 1369 break; 1370 case e: 1371 n = (o - t) / c + 2; 1372 break; 1373 case o: 1374 n = (t - e) / c + 4 1375 } 1376 n /= 6 1377 } 1378 return { 1379 h: 360 * n, 1380 s: 100 * i, 1381 v: 100 * s 1382 } 1383 } 1384 function _(t, e, o) { 1385 t = 6 * m(t, 360), 1386 e = m(e, 100), 1387 o = m(o, 100); 1388 var n = Math.floor(t) 1389 , i = t - n 1390 , r = o * (1 - e) 1391 , a = o * (1 - i * e) 1392 , s = o * (1 - (1 - i) * e) 1393 , c = n % 6 1394 , d = [o, a, r, r, s, o][c] 1395 , f = [s, o, o, a, r, r][c] 1396 , l = [r, r, s, o, o, a][c]; 1397 return { 1398 r: 255 * d, 1399 g: 255 * f, 1400 b: 255 * l 1401 } 1402 } 1403 function v() { 1404 var t = "" 1405 , e = ""; 1406 if ("yellow" == e ? (E = "#bea272", 1407 I = "#bea272") : null != t && "" != t ? ((t[0] = "#" && 7 == t.length) && (t = t.substr(1)), 1408 E = t) : E = "1a79ff", 1409 "yellow" != e) { 1410 var o = parseInt(E.substr(0, 2), 16) 1411 , n = parseInt(E.substr(2, 2), 16) 1412 , i = parseInt(E.substr(4, 2), 16) 1413 , r = b(o, n, i) 1414 , a = _(r.h, r.s, .48 * r.v); 1415 I = "rgb(" + parseInt(a.r) + "," + parseInt(a.g) + "," + parseInt(a.b) + ")", 1416 E = "#" + E 1417 } 1418 } 1419 function w(t, e, o, n) { 1420 var i, r = "tokenidiframe_d.js"; 1421 r && -1 == r.indexOf("tokenidiframe_d") && -1 != r.indexOf("tokenidiframe") ? l(function() { 1422 return window && window.getFPVryData && "undefined" != typeof (i = window.getFPVryData()) 1423 }, function() { 1424 y(t, e, o, n, i) 1425 }, function() { 1426 y(t, e, o, n, i), 1427 window && window.getFPVryData ? C.send(A.getInfo().tokenid, 4, "") : C.send(A.getInfo().tokenid, 3, "") 1428 }, 600, 100) : y(t, e, o, n, i) 1429 } 1430 function y(t, e, o, n, i) { 1431 i = encodeURIComponent(i); 1432 for (var r = "", s = 0; s < t.length; s++) 1433 r += Math.floor(t[s].left) + "," + Math.floor(t[s].top) + ";"; 1434 var c; 1435 c = "" != location.search ? location.search + "&rand=" + Math.random() : "?rand=" + Math.random(); 1436 var d = (new Date).getTime() 1437 , l = 0; 1438 if ("string" == typeof W && "" != W) { 1439 W = W.replace(/"/g, \'"\'), 1440 W = W.replace(/'/g, "\'"); 1441 var p; 1442 try { 1443 p = JSON.parse(W) 1444 } catch (u) {} 1445 if ("object" == typeof p && "string" == typeof p.randstr && ("string" == typeof p.M || "number" == typeof p.M) && "string" == typeof p.ans) { 1446 p.ans = p.ans.toLowerCase(), 1447 p.M = parseInt(p.M); 1448 for (var h = 0; h < p.M && 1e3 > h; h++) { 1449 var g = p.randstr + h 1450 , m = md5(g); 1451 if (p.ans == m.toLowerCase()) { 1452 l = h; 1453 break 1454 } 1455 } 1456 } 1457 } 1458 e.push([0, 0, l]), 1459 A.setData({ 1460 trycnt: ++U, 1461 refreshcnt: G, 1462 slideValue: e, 1463 dragobj: o 1464 }); 1465 var b = A.getData(!0) 1466 , _ = A.getEks() 1467 , v = A.getFps() 1468 , w = A.getTlg() 1469 , y = a() || {} 1470 , x = M.extend(y, { 1471 subcapclass: "9", 1472 vsig: N, 1473 ans: r, 1474 cdata: l, 1475 "abcceb": b, 1476 websig: "78d910fc1584a6906df37f5052b9456fde410eff2c58a633811149703c10de648cc93fc59018dd382c41d3bc18a37d87b3744ccbaaaa28474d7846d9baa4eb75", 1477 eks: _, 1478 fps: v, 1479 fpinfo: i, 1480 tlg: w 1481 }); 1482 X = !0; 1483 var k = M(".slide_bkg") 1484 , O = M.ajax({ 1485 type: "POST", 1486 url: "/cap_union_new_verify?random=" + +new Date, 1487 timeout: 5e3, 1488 data: x, 1489 dataType: "json", 1490 cache: !1, 1491 success: function(t) { 1492 X = !1; 1493 var e = (new Date).getTime(); 1494 if (D.push(30, 0), 1495 D.push(27, e - d), 1496 D.send(), 1497 t && 0 == t.errorCode) 1498 T(t); 1499 else if (51 == t.errorCode) { 1500 var o = { 1501 message: { 1502 type: 8, 1503 sess: t.sess, 1504 subsid: P.get() 1505 } 1506 }; 1507 K.targets.parent.send(JSON.stringify(o)) 1508 } else { 1509 if (9 == t.errorCode) 1510 k.css({ 1511 color: I 1512 }), 1513 k.html(S.slide2), 1514 f(); 1515 else if (50 == t.errorCode) 1516 k.css({ 1517 color: I 1518 }), 1519 k.html(S.puzzle2); 1520 else if (16 == t.errorCode || 20 == t.errorCode || 21 == t.errorCode) { 1521 var o = { 1522 message: { 1523 type: 16 1524 } 1525 }; 1526 K.targets.parent.send(JSON.stringify(o)) 1527 } else 1528 f(), 1529 k.css({ 1530 color: E 1531 }), 1532 k.html(S.puzzle1); 1533 n() 1534 } 1535 }, 1536 complete: function(t, e) { 1537 X = !1; 1538 var o = "" 1539 , i = 0; 1540 if (t && t.status && (i = t.status), 1541 e && (o += e + ":"), 1542 t && t.statusText && (o += t.statusText), 1543 "timeout" == e && (O.abort(), 1544 f(), 1545 k.css({ 1546 color: I 1547 }), 1548 k.html(S.c8), 1549 n(), 1550 C.send(A.getInfo().tokenid, R.ERROR_TYPE_AJAX_VERIFY, o, i)), 1551 "abort" == e && (O.abort(), 1552 f(), 1553 k.css({ 1554 color: I 1555 }), 1556 k.html(S.slide4), 1557 n(), 1558 C.send(A.getInfo().tokenid, R.ERROR_TYPE_AJAX_VERIFY, o, i)), 1559 "error" == e) { 1560 O.abort(), 1561 f(), 1562 k.css({ 1563 color: I 1564 }), 1565 k.html(S.c8), 1566 n(); 1567 var r = (new Date).getTime(); 1568 D.push(30, 0), 1569 D.push(27, r - d), 1570 D.send(), 1571 C.send(A.getInfo().tokenid, R.ERROR_TYPE_AJAX_VERIFY, o, i) 1572 } 1573 } 1574 }) 1575 } 1576 function x() { 1577 M(".capachArea").show(), 1578 M("#showFB, .tip").css("zoom", 1) 1579 } 1580 function k() { 1581 M(".capachArea").hide(), 1582 M("#showFB, .tip").css("zoom", 0) 1583 } 1584 function T(t) { 1585 M(".network_error").hide(), 1586 M("#bar_mask").show().animate({ 1587 left: "-100%" 1588 }, { 1589 duration: 800, 1590 complete: function() { 1591 M("#bar_success").slideDown(function() { 1592 M(".captcha_aq_modal").show(), 1593 setTimeout(function() { 1594 tt.success(t) 1595 }, 200) 1596 }) 1597 } 1598 }) 1599 } 1600 var E, I, P = o(2), R = o(11), D = o(12), O = o(14), C = o(15), M = o(1), q = o(24), S = o(6), $ = o(25), A = o(13), j = !!window.ActiveXObject, L = j && !window.XMLHttpRequest, X = !1, B = .5, F = "1253408289", N = "b01zG7x5Yh8IqFDvdYbv_dxhqT1JjNSxZ2rpwKG662esm_2QCh2sVmWgCQeuVtJQzjiuDz6DmwIfm94PHuz64NIucswoeWkAGW-j4hiVtbjTTCSDlWStjj08g**", Y = Number("144"), J = "embed", W = "{"randstr":"mvum","M":"100","ans":"e92970e93bdbe03bc0de0cbf0f2397bc"}", V = "2", z = parseInt(""), G = 0, U = 0, H = !1, K = new TCapMsg("securityCode"); 1601 K.addTarget(window.parent, "parent"); 1602 var Q, Z = 0, tt = { 1603 success: function() {}, 1604 showFeedback: function() {}, 1605 ready: function() {} 1606 }, et = "open", ot = !1; 1607 Q = { 1608 message: { 1609 type: 14 1610 } 1611 }, 1612 K.targets.parent.send(JSON.stringify(Q)), 1613 "inner" == et ? -1 == window.location.href.indexOf("https") ? D.set(21406, 1, 4, F) : D.set(21408, 1, 4, F) : -1 == window.location.href.indexOf("https") ? D.set(21407, 1, 4, F) : D.set(21412, 1, 4, F); 1614 var nt = (Math.round, 1615 Math.min) 1616 , it = Math.max; 1617 Math.random; 1618 t.exports = { 1619 init: n, 1620 show: x, 1621 hide: k, 1622 getVsig: function() { 1623 return N 1624 } 1625 } 1626 } 1627 ]); 1628 </script> 1629 <script type=text/javascript src=https://captcha.gtimg.com/open/1/ft.js></script> 1630 </html>
好多,编辑起来都卡了,上面html代码都是我格式化的,为了查找内容方便。
现在开始说说某些加密参数(提交验证码时候,具体研究可以查看d41060624d.js与一个tdc_iframe.html这两个):
cdata:此数据在上文的1600行。内容为:"{"randstr":"mvum","M":"100","ans":"e92970e93bdbe03bc0de0cbf0f2397bc"}",整理后就是{"randstr":"mvum","M":"100","ans":"e92970e93bdbe03bc0de0cbf0f2397bc"}。cdata就是根据此json获取的。js方法为为1445-1455行。
p.ans = p.ans.toLowerCase(), p.M = parseInt(p.M); for (var h = 0; h < p.M && 1e3 > h; h++) { var g = p.randstr + h , m = md5(g); if (p.ans == m.toLowerCase()) { l = h; break } }
ans:这就是提交的滑动的坐标。但这个坐标很多门道。格式是x,y; y坐标是直接给的,因为需要显示滑块的位置。在文中1600行。Y = Number("144")。虽然Y是144px,但显示的滑块从最高处到最低处明显不到144,这因为中间还有一个转换。同样此行,B = .5,这个地方看清楚,有些可能不一样。这样表示显示的滑块y是 144x0.5 =72 px。
如上图。滑块是你看到的黄色区域,但计算时候灰色区域也计算在内的。也就是滑块有一个边框。x坐标是滑块开始位置到真实图片缺口的坐标,所以真实x还是减去20px左右。图片的真实大小是560x320(以前搞其他的时候好像不是这个大小,不知道不同网站问题还是变化了)具体情况具体分析,这里经常变动。
babedc参数:每次都不同,前面测试时候是这个参数,但上文中是abcceb。所以每次要获取出来,前面提供的正则表达式是以前时候的,现在好像有些变动。具体可用根据代码修改。此参数在上面文中的1475行
至于此参数的值,是aes加密后的,模式是cbc,密钥向量都是 0123456789abcdef,所以你可用解密下你的数据,看看具体内容。我把测试数据解密下:
{"mouseclick":[{"t":9,"x":277,"y":147}],"keyvalue":[],"user_Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36","resolutionx":1920,"resolutiony":1080,"winSize":[300,232],"url":"https://captcha.guard.qcloud.com/cap_union_new_show","refer":"https://cloud.oppo.com/login.html","begintime":1546828509,"endtime":1546828520,"platform":1,"os":"other","keyboards":0,"flash":1,"pluginNum":50,"index":1,"ptcz":"","tokenid":2785582500,"a":2785582500,"btokenid":null,"tokents":1487589456,"ips":{"in":["192.168.50.125"]},"colorDepth":24,"cookieEnabled":true,"timezone":8,"wDelta":0,"mousemove":[[268,149,8343],[-8,2,12],[-9,4,18],[-7,3,16],[-8,4,16],[-4,2,16],[-5,4,18],[-6,2,16],[-6,3,17],[-5,1,16],[-7,1,19],[-1,0,15],[-5,0,17],[-4,1,15],[-5,0,18],[-7,1,16],[-11,2,18],[-20,0,17],[-12,1,16],[-14,1,16],[-12,2,17],[-10,1,19],[-11,1,14],[-12,2,18],[-11,1,16],[-5,1,16],[-6,0,17],[-1,0,18],[-2,0,16],[-1,0,16],[-1,0,34],[-4,0,16],[-5,0,17],[-2,-1,17],[-1,0,18],[-1,0,48],[0,1,150],[0,2,17],[0,1,49],[2,0,200],[1,0,16],[2,1,18],[1,0,16],[3,1,19],[1,0,14],[3,0,19],[1,0,15],[3,0,16],[1,0,34],[2,1,18],[3,1,18],[2,0,14],[2,0,17],[2,0,17],[2,0,17],[3,1,26],[7,1,41],[2,1,15],[2,0,19],[2,0,15],[3,0,34],[1,1,15],[3,1,17],[2,0,18],[2,0,32],[3,1,34],[1,0,33],[1,0,133],[1,0,17],[1,0,16],[1,1,17],[1,0,18],[1,0,16],[1,0,268],[0,1,15],[2,0,33],[1,0,50]],"keyUpCnt":0,"keyUpValue":[],"mouseUpValue":[{"t":11,"x":111,"y":204}],"mouseUpCnt":1,"mouseDownValue":[],"mouseDownCnt":0,"orientation":[],"bSimutor":0,"focusBlur":{"in":[],"out":[],"t":[]},"fVersion":31,"charSet":"UTF-8","resizeCnt":0,"errors":[],"screenInfo":"1920-1080-1040-24-*-*-*","elapsed":1000,"ft":"qf_7P_n_H","coordinate":[10,9,0.5],"clientType":"2","trycnt":1,"refreshcnt":1,"slideValue":[[41,192,116],[1,0,15],[2,1,18],[1,0,16],[3,1,20],[1,0,13],[3,0,19],[1,0,14],[3,0,17],[1,0,34],[2,1,18],[3,1,17],[2,0,15],[2,0,17],[2,0,17],[2,0,16],[3,1,27],[7,1,41],[2,1,15],[2,0,18],[2,0,16],[3,0,34],[1,1,15],[3,1,17],[2,0,18],[2,0,32],[3,1,33],[1,0,34],[1,0,133],[1,0,17],[1,0,16],[1,1,18],[1,0,17],[1,0,16],[1,0,268],[0,1,14],[2,0,35],[1,0,49],[0,0,63]],"dragobj":0}
mouseclick可用为空([]),这个地方你是点击滑块时候的坐标,t是上一次点击操作与此次点击操作的间隔。
keyvalue是按键,直接默认空就行
user_Agent是浏览器UA,上面很多地方都有ua参数,其实如果批量操作,随机生成一个ua,本次操作全部用这一个ua就可用
下面就是机器的一些参数了,主要的地方有begintime与endtime,这是操作滑块的时间,一百相隔2秒就可用。
tokenid这个是根据浏览器机器的一些参数生成的,后面的参数a也一样,生成js为:
function getToken(_0x31cex38) { var _0x31cex53=31; var _0x31cex54, _0x31cex55, _0x31cex56, _0x31cex57, _0x31cex58, _0x31cex59, _0x31cex5a, _0x31cex3a; _0x31cex54 = _0x31cex38.length & 3; _0x31cex55 = _0x31cex38.length - _0x31cex54; _0x31cex56 = _0x31cex53; _0x31cex58 = 0xcc9e2d51; _0x31cex59 = 0x1b873593; _0x31cex3a = 0; while (_0x31cex3a < _0x31cex55) { _0x31cex5a = ((_0x31cex38.charCodeAt(_0x31cex3a) & 0xff)) | ((_0x31cex38.charCodeAt(++_0x31cex3a) & 0xff) << 8) | ((_0x31cex38.charCodeAt(++_0x31cex3a) & 0xff) << 16) | ((_0x31cex38.charCodeAt(++_0x31cex3a) & 0xff) << 24); ++_0x31cex3a; _0x31cex5a = ((((_0x31cex5a & 0xffff) * _0x31cex58) + ((((_0x31cex5a >>> 16) * _0x31cex58) & 0xffff) << 16))) & 0xffffffff; _0x31cex5a = (_0x31cex5a << 15) | (_0x31cex5a >>> 17); _0x31cex5a = ((((_0x31cex5a & 0xffff) * _0x31cex59) + ((((_0x31cex5a >>> 16) * _0x31cex59) & 0xffff) << 16))) & 0xffffffff; _0x31cex56 ^= _0x31cex5a; _0x31cex56 = (_0x31cex56 << 13) | (_0x31cex56 >>> 19); _0x31cex57 = ((((_0x31cex56 & 0xffff) * 5) + ((((_0x31cex56 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff; _0x31cex56 = (((_0x31cex57 & 0xffff) + 0x6b64) + ((((_0x31cex57 >>> 16) + 0xe654) & 0xffff) << 16)) } ;_0x31cex5a = 0; switch (_0x31cex54) { case 3: _0x31cex5a ^= (_0x31cex38.charCodeAt(_0x31cex3a + 2) & 0xff) << 16; case 2: _0x31cex5a ^= (_0x31cex38.charCodeAt(_0x31cex3a + 1) & 0xff) << 8; case 1: _0x31cex5a ^= (_0x31cex38.charCodeAt(_0x31cex3a) & 0xff); _0x31cex5a = (((_0x31cex5a & 0xffff) * _0x31cex58) + ((((_0x31cex5a >>> 16) * _0x31cex58) & 0xffff) << 16)) & 0xffffffff; _0x31cex5a = (_0x31cex5a << 15) | (_0x31cex5a >>> 17); _0x31cex5a = (((_0x31cex5a & 0xffff) * _0x31cex59) + ((((_0x31cex5a >>> 16) * _0x31cex59) & 0xffff) << 16)) & 0xffffffff; _0x31cex56 ^= _0x31cex5a } ;_0x31cex56 ^= _0x31cex38.length; _0x31cex56 ^= _0x31cex56 >>> 16; _0x31cex56 = (((_0x31cex56 & 0xffff) * 0x85ebca6b) + ((((_0x31cex56 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff; _0x31cex56 ^= _0x31cex56 >>> 13; _0x31cex56 = ((((_0x31cex56 & 0xffff) * 0xc2b2ae35) + ((((_0x31cex56 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff; _0x31cex56 ^= _0x31cex56 >>> 16; return _0x31cex56 >>> 0 }
传入的数据是:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36###zh-CN###24###-480###true###true###true###undefined###function######Win32#########1546827051142
只需要变动前部分的UA与最后的毫米级时间戳就可以。
tokents参数直接用当前时间减去一些时间生成时间戳就行
mousemove,这个参数很重要,记录的是鼠标的移动。里面数组的第一个是记录坐标与时间,后面的是对比前面的相差值。计算好开始坐标与缺口坐标位置,再随机生成。
slideValue也是一样的。是滑块移动的x,y轴变动的距离与时间
这些具体研究可以参照https://captcha.gtimg.com/open/1/d41060624d.js 格式化后的1710行
其他一些参数默认或随机生成就可以了。
至此,一些参数的解密就都说完了,这个东西经常变动,所以要经常更新
总结
其实东西很简单,复杂的是js加密。只要慢慢研究,相信很多人都可以搞出来。
文中语言表达很多地方不流畅,凑合着看吧,不懂的可以留言,我有时间会回复。当我突然不回复消失时候别问我干啥了,肯定是孩子又哭了。因为这个,朋友从来不带我玩王者或吃鸡
2019,祝大家挣更多钱!