mirror of
https://gitee.com/technical-laohu/mpay.git
synced 2025-09-17 17:26:40 +08:00
77 lines
2.0 KiB
JavaScript
77 lines
2.0 KiB
JavaScript
// 登陆配置
|
|
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);
|
|
}
|
|
})
|
|
}
|
|
|
|
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;
|
|
})
|
|
}; |