215 lines
9.1 KiB
JavaScript
215 lines
9.1 KiB
JavaScript
// ==UserScript==
|
|
// @name 淘宝客自动数据上报
|
|
// @namespace https://tbk.yumc.pw/
|
|
// @version 0.1.1
|
|
// @description 自动收集淘宝客数据上报服务端
|
|
// @author MiaoWoo
|
|
// @match https://pub.alimama.com/manage/effect/overview_orders.htm**
|
|
// @match https://pub.alimama.com//openapi/param2/1/gateway.unionpub/report.getTbkOrderDetails.json/_____tmd_____/punish**
|
|
// @match https://www.alimama.com/member/login.htm**
|
|
// @match https://login.taobao.com/member/login.jhtml**
|
|
// @match https://pub.meituan.com**
|
|
// @grant none
|
|
// ==/UserScript==
|
|
|
|
(function () {
|
|
'use strict'
|
|
Date.prototype.format = function (fmt) {
|
|
var o = {
|
|
"M+": this.getMonth() + 1,
|
|
"d+": this.getDate(),
|
|
"h+": this.getHours(),
|
|
"m+": this.getMinutes(),
|
|
"s+": this.getSeconds(),
|
|
"q+": Math.floor((this.getMonth() + 3) / 3),
|
|
"S": this.getMilliseconds()
|
|
}
|
|
if (/(y+)/.test(fmt)) {
|
|
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length))
|
|
}
|
|
for (var k in o) {
|
|
if (new RegExp("(" + k + ")").test(fmt)) {
|
|
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)))
|
|
}
|
|
}
|
|
return fmt
|
|
}
|
|
var params = location.search.split('&').map(s => s.split('=')).reduce((pre, cur, index) => { pre[cur[0]] = cur[1]; return pre }, {})
|
|
var today = new Date().format('yyyy-MM-dd')
|
|
var referrer = "https://pub.alimama.com/manage/effect/overview_orders.htm?jumpType=0&positionIndex=&pageNo=1&startTime=" + today + "&endTime=" + today + "&queryType=1"
|
|
async function sleep(time) {
|
|
return new Promise((resolve, reject) => setTimeout(resolve, time))
|
|
}
|
|
async function alimamaRefresh(today) {
|
|
location.href = "https://pub.alimama.com/manage/effect/overview_orders.htm?jumpType=0&positionIndex=&pageNo=1&startTime=" + today + "&endTime=" + today + "&queryType=1"
|
|
}
|
|
async function post(method, data) {
|
|
return await fetch('https://tbk.yumc.pw/callback/' + method, {
|
|
method: "POST",
|
|
headers: {
|
|
'Accept': 'application/json',
|
|
'Content-Type': 'application/json'
|
|
},
|
|
body: JSON.stringify(data),
|
|
"mode": "cors",
|
|
"credentials": "include"
|
|
}).then(r => r.json())
|
|
}
|
|
async function reportOrders(date) {
|
|
let trigger = document.querySelectorAll('.mx-trigger')[1]
|
|
if (!trigger) {
|
|
return setTimeout(() => reportOrders(date), 300)
|
|
}
|
|
let taskId = setTimeout(async () => {
|
|
//document.getElementById('nickDrop').nextElementSibling.click()
|
|
//await sleep(1000)
|
|
return alimamaRefresh(today)
|
|
}, 45000)
|
|
trigger.click()
|
|
await sleep(500)
|
|
let orders = await fetch("https://pub.alimama.com/openapi/param2/1/gateway.unionpub/report.getTbkOrderDetails.json?queryType=1&startTime=" + date + "&endTime=" + date + "&pageNo=1&pageSize=100&jumpType=0", {
|
|
"headers": {
|
|
"accept": "*/*",
|
|
"accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
|
|
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
|
|
"sec-ch-ua": "\" Not;A Brand\";v=\"99\", \"Microsoft Edge\";v=\"91\", \"Chromium\";v=\"91\"",
|
|
"sec-ch-ua-mobile": "?0",
|
|
"sec-fetch-dest": "empty",
|
|
"sec-fetch-mode": "cors",
|
|
"sec-fetch-site": "same-origin",
|
|
"x-requested-with": "XMLHttpRequest"
|
|
},
|
|
"referrer": referrer,
|
|
"referrerPolicy": "strict-origin-when-cross-origin",
|
|
"body": null,
|
|
"method": "GET",
|
|
"mode": "cors",
|
|
"credentials": "include"
|
|
}).then(r => r.json())
|
|
trigger.click()
|
|
if (!orders.success) {
|
|
return console.log(orders)
|
|
}
|
|
clearTimeout(taskId)
|
|
await post('alimama', orders)
|
|
post('alimama', await fetch("https://pub.alimama.com/openapi/param2/1/gateway.unionpub/report.getTbkOrderDetails.json?queryType=3&startTime=" + date + "&endTime=" + date + "&pageNo=1&pageSize=100&jumpType=0", {
|
|
"headers": {
|
|
"accept": "*/*",
|
|
"accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
|
|
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
|
|
"sec-ch-ua": "\" Not;A Brand\";v=\"99\", \"Microsoft Edge\";v=\"91\", \"Chromium\";v=\"91\"",
|
|
"sec-ch-ua-mobile": "?0",
|
|
"sec-fetch-dest": "empty",
|
|
"sec-fetch-mode": "cors",
|
|
"sec-fetch-site": "same-origin",
|
|
"x-requested-with": "XMLHttpRequest"
|
|
},
|
|
"referrer": referrer,
|
|
"referrerPolicy": "strict-origin-when-cross-origin",
|
|
"body": null,
|
|
"method": "GET",
|
|
"mode": "cors",
|
|
"credentials": "include"
|
|
}).then(r => r.json()))
|
|
post('message', { message: '' })
|
|
console.log(new Date().toLocaleTimeString(), '阿里妈妈数据上报完成!')
|
|
}
|
|
async function taobaoLogin() {
|
|
await sleep(1000)
|
|
let login_id = document.getElementById('fm-login-id')
|
|
login_id.click()
|
|
login_id.value = 'tb5995076_11'
|
|
await sleep(800)
|
|
let password = document.getElementById('fm-login-password')
|
|
password.click()
|
|
password.value = 'Jtb2hwwfor'
|
|
await sleep(300)
|
|
document.querySelector('.password-login').click()
|
|
}
|
|
async function meituan(date) {
|
|
let orders = await fetch("https://pub.meituan.com/benchmark/order/detail/cps", {
|
|
"headers": {
|
|
"Content-Type": "application/json;charset=utf-8",
|
|
},
|
|
"referrer": "https://pub.meituan.com/",
|
|
"referrerPolicy": "strict-origin-when-cross-origin",
|
|
"body": JSON.stringify({ "pageIndex": 1, "pageSize": 200, "queryTimeType": 1, "itemBizStatus": 0, "beginTime": date, "endTime": date }),
|
|
"method": "POST",
|
|
"mode": "cors",
|
|
"credentials": "include"
|
|
}).then(r => r.json())
|
|
post('meituan', orders)
|
|
post('mtMtz', {})
|
|
console.log(new Date().toLocaleTimeString(), '美团数据上报完成!')
|
|
await post('htt', { type: 2, scene: 2 })
|
|
await post('htt', { type: 2 })
|
|
post('htt', { type: 3 })
|
|
console.log(new Date().toLocaleTimeString(), '花推推数据上报完成!')
|
|
let tip = document.querySelector('.data-analysis-tips')
|
|
if (tip) {
|
|
tip.innerText = new Date().toLocaleTimeString() + " 外卖神圈 数据上报完成!"
|
|
}
|
|
}
|
|
async function randomSleep(random = 600000) {
|
|
await sleep(Math.random() * random + 60000)
|
|
}
|
|
function setLastPostMessageTime() {
|
|
window.localStorage.lastPostMessageTime = Date.now()
|
|
}
|
|
function getLastPostMessageTime() {
|
|
return Date.now() - (window.localStorage.lastPostMessageTime || 0)
|
|
}
|
|
function postMessage(message) {
|
|
if (getLastPostMessageTime() > 10800000) {
|
|
post('message', { message: message })
|
|
setLastPostMessageTime()
|
|
}
|
|
}
|
|
async function main() {
|
|
if (location.href.startsWith('https://login.taobao.com')) {
|
|
await taobaoLogin()
|
|
return
|
|
}
|
|
if (location.href.startsWith('https://www.alimama.com/member/login.htm')) {
|
|
setTimeout(() => {
|
|
postMessage('阿里妈妈页面出现滑动验证码!')
|
|
alimamaRefresh(new Date().format('yyyy-MM-dd'))
|
|
}, 30000)
|
|
}
|
|
if (location.href.startsWith('https://pub.alimama.com/manage/effect/overview_orders.htm')) {
|
|
await sleep(2000)
|
|
// for (let i = 0; i < 10; i++) {
|
|
try {
|
|
await sleep(500)
|
|
await reportOrders(today)
|
|
await randomSleep()
|
|
} catch (ex) {
|
|
post('message', { message: '阿里妈妈数据上报异常: ' + ex })
|
|
}
|
|
// }
|
|
alimamaRefresh(new Date().format('yyyy-MM-dd'))
|
|
return
|
|
}
|
|
if (location.href.startsWith('https://pub.meituan.com/') && location.hash == "#/performance-report") {
|
|
await sleep(2000)
|
|
for (let i = 0; i < 10; i++) {
|
|
try {
|
|
await sleep(500)
|
|
await meituan(today)
|
|
await randomSleep(60000)
|
|
} catch (ex) {
|
|
post('message', { message: '美团数据上报异常: ' + ex })
|
|
}
|
|
}
|
|
location.reload()
|
|
return
|
|
}
|
|
if (location.href.startsWith('https://pub.alimama.com//openapi/param2/1/gateway.unionpub/report.getTbkOrderDetails.json/_____tmd_____/punish')) {
|
|
setTimeout(() => {
|
|
postMessage('阿里妈妈页面出现滑动验证码!')
|
|
}, 10000)
|
|
}
|
|
}
|
|
main()
|
|
})()
|