zoukankan      html  css  js  c++  java
  • 腾讯防水墙的分析识别与破解(续)

    书接上回

      前面文章因为孩子晚上哭闹而告终,后面的解密草草结束了。只能感叹,奶爸伤不起。既要挣钱养家,又要照顾孩子和她。只希望孩子快快长大。

    防水墙加密参数分析

       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:#;>&#xe910;</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">&#xe901;</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)>&#xe904;</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);>&#xe90f;</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:#;>&#xe90d;</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                              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                          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(/&quot;/g, '"'),
    1440                     W = W.replace(/&apos;/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 = "{&quot;randstr&quot;:&quot;mvum&quot;,&quot;M&quot;:&quot;100&quot;,&quot;ans&quot;:&quot;e92970e93bdbe03bc0de0cbf0f2397bc&quot;}", 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行。内容为:"{&quot;randstr&quot;:&quot;mvum&quot;,&quot;M&quot;:&quot;100&quot;,&quot;ans&quot;:&quot;e92970e93bdbe03bc0de0cbf0f2397bc&quot;}",整理后就是{"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,祝大家挣更多钱!

  • 相关阅读:
    pillow模块的用法 + 随机验证码
    jquery文件阅读器 显示需要上传图片的预览功能
    pycharm永久激活方式
    pycharm汉化
    10.25网络编程到并发编程
    10.15 迭代器,生成器到常用模块的小结
    10.14 面向对象小结
    十一天学习内容总结大纲
    pip镜像源的替换
    前端jQuery导入方式
  • 原文地址:https://www.cnblogs.com/cnflysoft/p/10231578.html
Copyright © 2011-2022 走看看