Comment ajouter la fonction de vérification de carte au script, Tutoriel d'amarrage de la vérification du réseau Quanlang

Je vous ai partagé comment se connecter à Paojiao Cloud pour ajouter la fonction de vérification de carte à vos scripts. Vous pouvez lire l'article précédemment partagé " Comment se connecter à Paojiao Cloud et ajouter la fonction de vérification de carte à votre script Auto.js ?" Tutoriel détaillé" .

Aujourd'hui, le webmaster partagera avec vous une autre plate-forme d'amarrage qui ajoute la fonction de vérification de carte au script : Quanlang network verification docking. Je ne dirai pas grand-chose sur les avantages de l'ajout de codes de cartes à l'amarrage.Vous pouvez ajouter au script : des cartes journalières, des cartes hebdomadaires, des cartes mensuelles, des cartes trimestrielles, des cartes annuelles, etc. pour de meilleures ventes. Sans plus tarder, passons directement au sujet d'aujourd'hui :

1. Si vous n'avez pas enregistré la plate-forme de vérification du réseau Quanlang, vous devez enregistrer une sauvegarde : http://zwk365.com/625t4aGW6b8yFrvs

2. Avant d'écrire le script, préparez les valeurs des trois paramètres DeveloperID, ApiPassword et SoftwareName, qui seront utilisés ultérieurement dans le script.

(1) Obtenez votre propre DeveloperID, qui est la chaîne de chiffres sous votre avatar, comme indiqué sur la figure.
Comment ajouter la fonction de vérification du mot de passe de la carte au script

(2) Ensuite, recherchez [Paramètres] dans la barre de menus de gauche, cliquez dessus, et le [Mot de passe de sécurité de l'interface] dans le coin supérieur droit est ApiPassword, comme indiqué sur la figure.
Comment ajouter la fonction de vérification du mot de passe de la carte au script

(3) Ensuite, recherchez [Logiciel] dans le menu de gauche, cliquez pour créer un logiciel, choisissez n'importe quel nom de logiciel, écrivez-le simplement, le nom du logiciel ici est SoftwareName, comme indiqué sur la figure.
Comment ajouter la fonction de vérification du mot de passe de la carte au script

(4) La valeur de CDK est obtenue à partir de l'entrée de votre contrôle d'interface utilisateur de script, qui est la clé entrée par l'utilisateur du script.

2. Intégrez le code suivant dans votre code de script :

//本地存储空间 对象
var LocalStorage = storages.create("QQ_3093074221");

//--------------------作者/软件信息------------------------
//开发者ID  (后台 左上角头像下方的ID)
var DeveloperID = "";
//API 密码 (后台 设置中的 接口安全密码)
var ApiPassword = "";
//软件名称
var SoftwareName = "";
//卡密
var CDK = "";
//--------------------------------------------


//------------------------测试--------------------
/**
 * 测试 测试 测试 测试 测试 测试
 */
threads.start(function() {
  CDKLogin();
});

//--------------------------------------------

/**
 * CDK登陆
 */
function CDKLogin() {
  //退出上一次的Needle
  var logoutResult = LogoutNeedle();
  console.log(logoutResult[1]);
  var loginResult = SendQLRequest(
    "apiv3/card_login",
    "card=" + CDK + "&software=" + SoftwareName
  );

  if (loginResult[0]) {
    var successData = loginResult[1];
    var endTime = successData["endtime"];
    var lessTime = successData["less_time"];
    var needle = successData["needle"];

    PutSt("oldNeedle", needle); //存储本次 的Needle

    console.log(needle + "登陆成功");
    threads.start(function() {
      SendHeartbeat(needle);
    });
  } else {
    var failResult = loginResult[1];
    console.warn("CDKLogin FailMsg:" + failResult);
    console.warn("所有线程已经停止!");
    threads.shutDownAll(); //停止所有线程
  }
}

/**
 * 退出上一次的Needle
 */
function LogoutNeedle() {
  var oldNeedle = GetSt("oldNeedle", "");

  if (oldNeedle != "") {
    var logoutResult = SendQLRequest(
      "apiv3/card_logout",
      "card=" + CDK + "&needle=" + oldNeedle
    );
    if (logoutResult[0]) {
      return [true, oldNeedle + " 退出成功!"];
    } else {
      return [false, oldNeedle & " 退出失败!"];
    }
  } else {
    return [true, "上次无存储的Needle"];
  }
}

/**
 * 卡密心跳
 * @param {string} cdkNeedle
 */
function SendHeartbeat(cdkNeedle) {
  do {
    var heartbeatResult = SendQLRequest(
      "apiv3/card_ping",
      "card=" + CDK + "&software=" + SoftwareName + "&needle=" + cdkNeedle
    );

    if (heartbeatResult[0]) {
      var successData = heartbeatResult[1];

      var endTime = successData["endtime"];

      var lessTime = successData["less_time"];
      console.warn("心跳正常. 剩余时间:" + lessTime);
    
      sleep(5 * 60 * 1000); //休息5分钟
    } else {
      var failResult = heartbeatResult[1];

      console.warn("Heartbeat FailMsg:" + failResult);
      console.warn("所有线程已经停止!");
      threads.shutDownAll(); //停止所有线程
    }
  } while (true);
}

/**
 * 访问权朗api
 * @param {string}} api
 * @param {string} apiParams
 */
function SendQLRequest(api, apiParams) {
  var qlHostArray = [
    "https://napi.2cccc.cc/",
    "https://api2.2cccc.cc/",
    "https://api3.2cccc.cc/"
  ];
  var connectTimes = 0;
  var taoBaoTimeStamp = "";

  do {
    connectTimes = connectTimes + 1;

    taoBaoTimeStamp = http
      .get("http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp")
      .body.string();

    if (connectTimes > 10) {
      console.log("淘宝时间戳超时");
      return [false, "连接淘宝时间戳服务器失败"];
    }
  } while (taoBaoTimeStamp.substring(2, 5) != "api");

  taoBaoTimeStamp = JSON.parse(taoBaoTimeStamp);
  var timeStamp = taoBaoTimeStamp["data"]["t"].substring(0, 10);
  var sign = HexMd5(ApiPassword + "" + timeStamp);
  var common_params =
    "center_id=" + DeveloperID + "&timestamp=" + timeStamp + "&sign=" + sign;
  connectTimes = 0;
  var qlResult = "";

  do {
    connectTimes = connectTimes + 1;

    qlResult = http
      .get(
        qlHostArray[Math.floor(Math.random() * (3 - 0) + 0)] +
          api +
          "?" +
          common_params +
          "&" +
          apiParams
      )
      .body.string();

    if (connectTimes > 10) {
      return [false, "权朗回执超时"];
    }
  } while (qlResult.substring(2, 6) != "code");

  qlResult = JSON.parse(qlResult);

  if (qlResult["code"] == "1") {
    if (
      HexMd5(qlResult["timestamp"] + ApiPassword).toUpperCase() ==
        qlResult["sign"].toUpperCase() &&
      Math.abs(timeStamp - qlResult["timestamp"]) < 700
    ) {
      return [true, qlResult["data"]];
    } else {
      return [false, "请检查API密码是否填写正确"];
    }
  } else {
    return [false, qlResult["msg"]];
  }
}

//--------Helper---------

/**
 * 判断是否 不是 空
 * @param {any}} content 内容
 */
function IsNotNullOrEmpty(content) {
  return (
    content != null &&
    content != undefined &&
    content != "" &&
    content != " " &&
    content != "  "
  );
}

/**
 * 存储空间 存入 键值数据
 * @param {string} key 键名
 * @param {any} value 值
 */
function PutSt(key, value) {
  //   cw(key + " : " + value);
  if (IsNotNullOrEmpty(value)) {
    LocalStorage.put(key, value);
  } else {
    //cw("key:" + key + "----> value为空,跳过保存");
  }
}

/**
 * 获取 存储控件中的 数据
 * @param {string} key 键名
 * @param {any} defaultValue 默认值
 */
function GetSt(key, defaultValue) {
  var data = LocalStorage.get(key);
  // cw(key + " : " + data);
  if (IsNotNullOrEmpty(data)) {
    return data;
  } else {
    if (defaultValue == undefined) {
      defaultValue = "";
    }
    //cw(key + " : 返回默认值->>" + defaultValue);
    return defaultValue;
  }
}
//-------------------------------------

//-------MD5---------------------
//(autojs 调用java 的MD5方法有bug, 生成出来的是错误的结果.所以用 下面的js md5)
/**
 * 16进制MD5(常用)
 * @param {any} s
 */
function HexMd5(s) {
  return binl2hex(core_md5(str2binl(s), s.length * chrsz));
}
function B64Md5(s) {
  return binl2str(core_md5(str2binl(s), s.length * chrsz));
}
function StrMd5(key, data) {
  return binl2hex(core_hmac_md5(key, data));
}
function HexHmacMd5(key, data) {
  return binl2hex(core_hmac_md5(key, data));
}
function B64HmacMd5(key, data) {
  return binl2b64(core_hmac_md5(key, data));
}
function StrHmacMd5(key, data) {
  return binl2str(core_hmac_md5(key, data));
}

var hexcase = 0;
var b64pad = "";
var chrsz = 8;
function md5_vm_test() {
  return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
}
function core_md5(x, len) {
  x[len >> 5] |= 0x80 << len % 32;
  x[(((len + 64) >>> 9) << 4) + 14] = len;
  var a = 1732584193;
  var b = -271733879;
  var c = -1732584194;
  var d = 271733878;
  for (var i = 0; i < x.length; i += 16) {
    var olda = a;
    var oldb = b;
    var oldc = c;
    var oldd = d;
    a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
    d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
    c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
    b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
    a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
    d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
    c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
    b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
    a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
    d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
    c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
    b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
    a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
    d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
    c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
    b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
    a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
    d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
    c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
    b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);
    a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
    d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
    c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
    b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
    a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
    d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
    c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
    b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
    a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
    d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
    c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
    b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
    a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
    d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
    c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
    b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
    a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
    d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
    c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
    b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
    a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
    d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);
    c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
    b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
    a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
    d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
    c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
    b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
    a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);
    d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
    c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
    b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
    a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
    d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
    c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
    b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
    a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
    d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
    c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
    b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
    a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
    d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
    c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
    b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
    a = safe_add(a, olda);
    b = safe_add(b, oldb);
    c = safe_add(c, oldc);
    d = safe_add(d, oldd);
  }
  return Array(a, b, c, d);
}
function md5_cmn(q, a, b, x, s, t) {
  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
}
function md5_ff(a, b, c, d, x, s, t) {
  return md5_cmn((b & c) | (~b & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t) {
  return md5_cmn((b & d) | (c & ~d), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t) {
  return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t) {
  return md5_cmn(c ^ (b | ~d), a, b, x, s, t);
}
function core_hmac_md5(key, data) {
  var bkey = str2binl(key);
  if (bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
  var ipad = Array(16),
    opad = Array(16);
  for (var i = 0; i < 16; i++) {
    ipad[i] = bkey[i] ^ 0x36363636;
    opad[i] = bkey[i] ^ 0x5c5c5c5c;
  }
  var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
  return core_md5(opad.concat(hash), 512 + 128);
}
function safe_add(x, y) {
  var lsw = (x & 0xffff) + (y & 0xffff);
  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xffff);
}
function bit_rol(num, cnt) {
  return (num << cnt) | (num >>> (32 - cnt));
}
function str2binl(str) {
  var bin = Array();
  var mask = (1 << chrsz) - 1;
  for (var i = 0; i < str.length * chrsz; i += chrsz)
    bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << i % 32;
  return bin;
}
function binl2str(bin) {
  var str = "";
  var mask = (1 << chrsz) - 1;
  for (var i = 0; i < bin.length * 32; i += chrsz)
    str += String.fromCharCode((bin[i >> 5] >>> i % 32) & mask);
  return str;
}
function binl2hex(binarray) {
  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  var str = "";
  for (var i = 0; i < binarray.length * 4; i++) {
    str +=
      hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8 + 4)) & 0xf) +
      hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 0xf);
  }
  return str;
}
function binl2b64(binarray) {
  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  var str = "";
  for (var i = 0; i < binarray.length * 4; i += 3) {
    var triplet =
      (((binarray[i >> 2] >> (8 * (i % 4))) & 0xff) << 16) |
      (((binarray[(i + 1) >> 2] >> (8 * ((i + 1) % 4))) & 0xff) << 8) |
      ((binarray[(i + 2) >> 2] >> (8 * ((i + 2) % 4))) & 0xff);
    for (var j = 0; j < 4; j++) {
      if (i * 8 + j * 6 > binarray.length * 32) str += b64pad;
      else str += tab.charAt((triplet >> (6 * (3 - j))) & 0x3f);
    }
  }
  return str;
}

Je suppose que tu aimes

Origine blog.csdn.net/m0_55125030/article/details/115447343
conseillé
Classement