分类目录归档:电脑相关使用技巧

Postman里计算md5到form表单里

FORM表单里有一个字段是根据几个字段hash得到的值,每次去算hash很不方便,可以这样去设置。

在pre-request script里输入:

var data = request.data.c_source + 
request.data.c_affiliate_id + 
request.data.c_order_id + 
'xxxxx';

var hash = CryptoJS.MD5(data).toString();
pm.environment.set("token", hash);

// 常用操作
// 获取query参数
var str = pm.request.url.query.get("version");

// 获取post表单里的值
var str = request.data.字段名

// 获取提交的json数据
var post = JSON.parse(pm.request.body.raw);

// 向header加头
pm.request.headers.add({
    key: 'x-ShareASale-Date',
    value: myTimeStamp
});

在Form表单里输入: {{token}} 就可以自动计算了

怎么取值,可以参考PostMan的官方文档

https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#scripting-with-request-data

自动计算token并加到postman的请求里:

var salt = "xxxx";
var post = JSON.parse(pm.request.body.raw);
var hash = CryptoJS.MD5(post.source_account_id + salt).toString();
post.token = hash;
pm.request.body.raw = JSON.stringify(post);

// 更多的加密方法 SHA256
var SHA256 = CryptoJS.SHA256(str).toString();
// BASE64
const data = CryptoJS.enc.Utf8.parse("test")
const base64 = CryptoJS.enc.Base64.stringify(data)

在PostMan里使用请求获取到的token当成认证参数

// linkhaitao
var new_Client_id = "x"
var new_Client_secret = "x"
var username = "x"
var scope = "x"

var token = MyUtils.BASE64(new_Client_id+":"+new_Client_secret)

// 请求可以参考: http://www.postmanlabs.com/postman-collection/Request.html#~definition

var postData = [
    {key: 'grant_type', value: 'password'},
    {key: 'username', value: username},
    {key: 'scope', value: scope}
];

var requestOption = {
    url: 'https://api.xxx.com/token',
    method: 'POST',
    header: {
        "Authorization": "Basic " + token,
        "Content-Type": "application/json"
    },
    body: {
        mode: 'urlencoded', // 这里为什么值,下面就为什么key,如果raw, formdata, urlencoded之类
        urlencoded: postData
        // mode: 'raw',
        // raw: JSON.stringify(postData)
    }
}

pm.sendRequest(requestOption, function (err, res) {
    console.log("获取到的token", res.json());
    pm.environment.set("token", res.json().access_token)
    pm.request.headers.add({
        key: "Authorization",
        value: "Bearer " + res.json().access_token
    });
})

向PostMan的Query地址里加参数

let token = "xxoo"

pm.request.addQueryParams({
    key: "token",
    value: token
});

 

PostMan里定义和使用全局函数

在某一个文件夹里的”pre request script”里,定义下面的内容

MyUtils = {
    SHA256: function SHA256(s){
        var chrsz = 8;
        var hexcase = 0;
        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 S (X, n) { return ( X >>> n ) | (X << (32 - n)); }
        function R (X, n) { return ( X >>> n ); }
        function Ch(x, y, z) { return ((x & y) ^ ((~x) & z)); }
        function Maj(x, y, z) { return ((x & y) ^ (x & z) ^ (y & z)); }
        function Sigma0256(x) { return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); }
        function Sigma1256(x) { return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); }
        function Gamma0256(x) { return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); }
        function Gamma1256(x) { return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); }
        function core_sha256 (m, l) {
            var K = new Array(0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0xFC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x6CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2);
            var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19);
            var W = new Array(64);
            var a, b, c, d, e, f, g, h, i, j;
            var T1, T2;
            m[l >> 5] |= 0x80 << (24 - l % 32);
            m[((l + 64 >> 9) << 4) + 15] = l;
            for ( var i = 0; i<m.length; i+=16 ) {
            a = HASH[0];
            b = HASH[1];
            c = HASH[2];
            d = HASH[3];
            e = HASH[4];
            f = HASH[5];
            g = HASH[6];
            h = HASH[7];
            for ( var j = 0; j<64; j++) {
                if (j < 16) W[j] = m[j + i];
                else W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]);
                T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]);
                T2 = safe_add(Sigma0256(a), Maj(a, b, c));
                h = g;
                g = f;
                f = e;
                e = safe_add(d, T1);
                d = c;
                c = b;
                b = a;
                a = safe_add(T1, T2);
            }
            HASH[0] = safe_add(a, HASH[0]);
            HASH[1] = safe_add(b, HASH[1]);
            HASH[2] = safe_add(c, HASH[2]);
            HASH[3] = safe_add(d, HASH[3]);
            HASH[4] = safe_add(e, HASH[4]);
            HASH[5] = safe_add(f, HASH[5]);
            HASH[6] = safe_add(g, HASH[6]);
            HASH[7] = safe_add(h, HASH[7]);
            }
            return HASH;
        }
        function str2binb (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) << (24 - i%32);
            }
            return bin;
        }
        function Utf8Encode(string) {
            string = string.replace(/\r\n/g,"\n");
            var utftext = "";
            for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);
            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            }
            return utftext;
        }
        function binb2hex (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] >> ((3 - i%4)*8+4)) & 0xF) +
            hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
            }
            return str;
        }
        s = Utf8Encode(s);
        return binb2hex(core_sha256(str2binb(s), s.length * chrsz));
    }
}

 

Mac下连接L2TP后无法访问外网和ROUTE操作记录

Mac下查看路由规则:
netstat -r

Mac下查看dns:
scutil –dns

Route管理:
route -n add -net 221.5.203.0 -netmask 255.255.255.0 10.1.0.1
route -n delete -net 221.5.203.0 -netmask 255.255.255.0 10.1.0.1

无法访问外网的问题找了一下,是因为telnet dns 服务器53端口的时候响应特别的慢。

所以把vpn的dns设置成了家里的网关地址就行了。