唯品会JS代码

VIP品会JS代码

 function safe_add(x, y) {
                var lsw = (x & 65535) + (y & 65535)
                  , msw = (x >> 16) + (y >> 16) + (lsw >> 16);
                return msw << 16 | lsw & 65535
            }
            function bit_rol(num, cnt) {
                return num << cnt | num >>> 32 - cnt
            }
            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 binl_md5(x, len) {
                x[len >> 5] |= 128 << len % 32;
                x[(len + 64 >>> 9 << 4) + 14] = len;
                var i, olda, oldb, oldc, oldd, a = 1732584193, b = -271733879, c = -1732584194, d = 271733878;
                for (i = 0; i < x.length; i += 16) {
                    olda = a;
                    oldb = b;
                    oldc = c;
                    oldd = d;
                    a = md5_ff(a, b, c, d, x[i], 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], 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], 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], 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 [a, b, c, d]
            }
            function binl2rstr(input) {
                var i, output = "";
                for (i = 0; i < input.length * 32; i += 8)
                    output += String.fromCharCode(input[i >> 5] >>> i % 32 & 255);
                return output
            }
            function rstr2binl(input) {
                var i, output = [];
                output[(input.length >> 2) - 1] = undefined;
                for (i = 0; i < output.length; i += 1)
                    output[i] = 0;
                for (i = 0; i < input.length * 8; i += 8)
                    output[i >> 5] |= (input.charCodeAt(i / 8) & 255) << i % 32;
                return output
            }
            function rstr_md5(s) {
                return binl2rstr(binl_md5(rstr2binl(s), s.length * 8))
            }
            function rstr_hmac_md5(key, data) {
                var i, bkey = rstr2binl(key), ipad = [], opad = [], hash;
                ipad[15] = opad[15] = undefined;
                if (bkey.length > 16)
                    bkey = binl_md5(bkey, key.length * 8);
                for (i = 0; i < 16; i += 1) {
                    ipad[i] = bkey[i] ^ 909522486;
                    opad[i] = bkey[i] ^ 1549556828
                }
                hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
                return binl2rstr(binl_md5(opad.concat(hash), 512 + 128))
            }
            function rstr2hex(input) {
                var hex_tab = "0123456789abcdef", output = "", x, i;
                for (i = 0; i < input.length; i += 1) {
                    x = input.charCodeAt(i);
                    output += hex_tab.charAt(x >>> 4 & 15) + hex_tab.charAt(x & 15)
                }
                return output
            }
            function str2rstr_utf8(input) {
                return unescape(encodeURIComponent(input))
            }
            function raw_md5(s) {
                return rstr_md5(str2rstr_utf8(s))
            }
            function hex_md5(s) {
                return rstr2hex(raw_md5(s))
            }
            function raw_hmac_md5(k, d) {
                return rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))
            }
            function hex_hmac_md5(k, d) {
                return rstr2hex(raw_hmac_md5(k, d))
            }
            function md5(string, key, raw) {
                if (!key) {
                    if (!raw)
                        return hex_md5(string);
                    return raw_md5(string)
                }
                if (!raw)
                    return hex_hmac_md5(key, string);
                return raw_hmac_md5(key, string)
            }

VIP品会python代码

import execjs
import requests
import time
import json
import logging
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s : %(message)s')
logger = logging.getLogger(__name__)

class VipLogin:
    def __init__(self):
        """
        url自己复制
        """
        self.login_url = "https://passport.XXX.com/login"
        self.headers = {
            "user-agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
        }
        self._user_info = {
            "你的账号":"你的密码",
            "admin":"qwewqrqtqtqtqt",
            "1234qweqr":"3698545",
        }
        self.js = self.exec_js

    @property
    def user_info(self):
        uf = {user: self.get_pwd(passwd) for user,passwd in self._user_info.items()}
        return uf

    @property
    def exec_js(self):
        """
        你自己的js路径
        :return:
        """
        with open('..//js//weipinhui.js', encoding='utf-8') as f:
            weipinhui = f.read()
        js = execjs.compile(weipinhui)
        return js

    def get_pwd(self,password):
        key = ""
        raw = ""
        pwd = self.js.call('md5', password, key, raw)
        logger.info("加密结果为:{}".format(pwd))
        return pwd

    def login(self,user,passwd):
        if not user.isdigit or len(user) != 11:
            logger.error("目前仅支持手机号方式登录:{}".format(user))
            return False
        session = requests.Session()
        vip_name = self.encrypt_phone(user)
        times_key = "times_"+user
        data = {
            "loginName": user,
            "password": passwd,
            "remUser": "0",
            "whereFrom":"",
            "captchaId":"" ,
            "captchaTicket":"",
        }
        ck_dict = {
            ' mars_pid': '你的',
            ' cps': '你的',
            ' mars_sid': '你的',
            times_key: '你的',
            ' VipRUID': '你的',
            ' VipRNAME': vip_name,
            ' VipDegree': '你的',
            ' user_class': '你的',
            ' VipCI_te': '你的',
            'mars_cid': '你的'
        }

        requests.utils.add_dict_to_cookiejar(session.cookies,ck_dict)
        resp = session.post(self.login_url,headers=self.headers,data=data,verify=False)
        ret = json.loads(resp.text)
        logger.info("账号{}返回结果为:{}".format(self._encrypt_phone(user),ret))
        if ret.get("result","") == "success":
            return True
        return False

    def encrypt_phone(self,phone):
        return phone[:3]+"*"*5+phone[-3:]

    def _encrypt_phone(self,phone):
        return phone[:2]+"*"*7+phone[-2:]

    def save_cookies(self):
        """
        保存cookies,自行发挥
        :return:
        """
        pass

    def batch_login(self):
        success_account = 0
        try:
            for user,passwd in self.user_info.items():
                if self.login(user,passwd):
                    success_account +=1
                    logger.info("账号为{}登录成功!准备下一个账号登录".format(self._encrypt_phone(user)))
                else:
                    logger.info("账号为{}登录失败!准备下一个账号登录".format(self._encrypt_phone(user)))
                logger.info("进入睡眠")
                time.sleep(10)
        except Exception as e:
            logger.error("登录过程遇到异常:{}".format(e))
        logger.info("所有账号登录完毕,一共成功{}个".format(str(success_account)))


if __name__ == '__main__':
    vl = VipLogin()
    vl.batch_login()

   转载规则


《唯品会JS代码》 罗华 采用 知识共享署名 4.0 国际许可协议 进行许可。
 本篇
唯品会JS代码 唯品会JS代码
VIP品会JS代码 function safe_add(x, y) { var lsw = (x & 65535) + (y & 65535) , msw
2020-10-14
本篇 
唯品会JS代码 唯品会JS代码
VIP品会JS代码 function safe_add(x, y) { var lsw = (x & 65535) + (y & 65535) , msw
2020-10-14
  目录