mirror of
https://github.com/shufflewzc/faker2.git
synced 2025-04-23 02:48:44 +08:00
update
This commit is contained in:
parent
562fce23b3
commit
5f25aa3254
282
cleancart_activity.js
Normal file
282
cleancart_activity.js
Normal file
@ -0,0 +1,282 @@
|
||||
/*
|
||||
|
||||
*/
|
||||
let jdSignUrl = '' // 算法url
|
||||
let Authorization = '' // 算法url token 有则填
|
||||
let got = '';
|
||||
try{
|
||||
got = require('got');
|
||||
}catch(e){
|
||||
console.log('请添加依赖模块"got"')
|
||||
}
|
||||
|
||||
|
||||
jdSignUrl = process.env.gua_cleancart_SignUrl ? process.env.gua_cleancart_SignUrl : `${jdSignUrl}`
|
||||
Authorization = process.env.gua_cleancart_Authorization ? process.env.gua_cleancart_Authorization : `${Authorization}`
|
||||
if(Authorization && Authorization.indexOf("Bearer ") === -1) Authorization = `Bearer ${Authorization}`
|
||||
let cookie = ''
|
||||
let out = false
|
||||
|
||||
async function clean(ck,url,goodsArr){
|
||||
if(!got) return false
|
||||
return new Promise(async resolve => {
|
||||
let msg = false
|
||||
try{
|
||||
if(!ck) return ''
|
||||
if(!jdSignUrl) jdSignUrl = url
|
||||
cookie = ck
|
||||
// if(jdSignUrl.indexOf("://jd.smiek.tk/") > -1) {
|
||||
// resolve(msg)
|
||||
// return false
|
||||
// }
|
||||
let signBody = `{"homeWishListUserFlag":"1","userType":"0","updateTag":true,"showPlusEntry":"2","hitNewUIStatus":"1","cvhv":"049591","cartuuid":"hjudwgohxzVu96krv/T6Hg==","adid":""}`
|
||||
let body = await jdSign('cartClearQuery', signBody)
|
||||
if(out) return
|
||||
if(!body){
|
||||
console.log('获取不到算法')
|
||||
return
|
||||
}
|
||||
let data = await jdApi('cartClearQuery',body)
|
||||
let res = jsonParse(data)
|
||||
if(typeof res == 'object' && res){
|
||||
if(res.resultCode == 0){
|
||||
if(res.mainTitle.indexOf('购物车是空的') > -1){
|
||||
msg = []
|
||||
}else if(!res.clearCartInfo || !res.subTitle){
|
||||
console.log(res.mainTitle)
|
||||
}else{
|
||||
let num = 0
|
||||
if(res.subTitle){
|
||||
num = res.subTitle.match(/共(\d+)件商品/).length > 0 && res.subTitle.match(/共(\d+)件商品/)[1] || 0
|
||||
console.log(res.subTitle)
|
||||
}
|
||||
// console.log(`共${num}件商品`)
|
||||
if(num != 0){
|
||||
let operations = []
|
||||
let operNum = 0
|
||||
let goodsArrs = []
|
||||
let goodsArrsFlag = false
|
||||
for(let a of res.clearCartInfo || {}){
|
||||
// console.log(a.groupName)
|
||||
// if(a.groupName.indexOf('7天内加入购物车') > -1){
|
||||
if(typeof goodsArr !== 'object'){
|
||||
goodsArrs = [...goodsArrs,...a.groupDetails]
|
||||
goodsArrsFlag = true
|
||||
}else{
|
||||
for(let s of a.groupDetails || []){
|
||||
if(typeof goodsArr === 'object'){
|
||||
let XBDetail = goodsArr.filter((x) => x.skuId === s.skuId)
|
||||
if(XBDetail.length == 0){
|
||||
// console.log(s.unusable,s.skuUuid,s.name)
|
||||
operNum += s.clearSkus && s.clearSkus.length || 1;
|
||||
operations.push({
|
||||
"itemType": s.itemType+"",
|
||||
"suitType": s.suitType,
|
||||
"skuUuid": s.skuUuid+"",
|
||||
"itemId": s.itemId || s.skuId,
|
||||
"useUuid": typeof s.useUuid !== 'undefined' && s.useUuid || false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
if(goodsArrsFlag){
|
||||
msg = goodsArrs || []
|
||||
return
|
||||
}
|
||||
console.log(`准备清空${operNum}件商品`)
|
||||
if(operations.length == 0){
|
||||
console.log(`清空${operNum}件商品|没有找到要清空的商品`)
|
||||
}else{
|
||||
let clearBody = `{"homeWishListUserFlag":"1","userType":"0","updateTag":false,"showPlusEntry":"2","hitNewUIStatus":"1","cvhv":"049591","cartuuid":"hjudwgohxzVu96krv/T6Hg==","operations":${jsonStringify(operations)},"adid":"","coord_type":"0"}`
|
||||
clearBody = await jdSign('cartClearRemove', clearBody)
|
||||
if(out) return
|
||||
if(!clearBody){
|
||||
console.log('获取不到算法')
|
||||
}else{
|
||||
let clearData = await jdApi('cartClearRemove',clearBody)
|
||||
let clearRes = jsonParse(clearData)
|
||||
if(typeof clearRes == 'object'){
|
||||
if(clearRes.resultCode == 0) {
|
||||
console.log(`清空${operNum}件商品|✅\n`)
|
||||
}else if(clearRes.mainTitle){
|
||||
console.log(`清空${operNum}件商品|${clearRes.mainTitle}\n`)
|
||||
}else{
|
||||
console.log(`清空${operNum}件商品|❌\n`)
|
||||
console.log(clearData)
|
||||
}
|
||||
}else{
|
||||
console.log(`清空${operNum}件商品|❌\n`)
|
||||
console.log(clearData)
|
||||
}
|
||||
}
|
||||
}
|
||||
}else if(res.mainTitle){
|
||||
if(res.mainTitle.indexOf('购物车是空的') > -1){
|
||||
msg = []
|
||||
}
|
||||
console.log(res.mainTitle)
|
||||
}else{
|
||||
console.log(data)
|
||||
}
|
||||
}
|
||||
}else{
|
||||
console.log(data)
|
||||
}
|
||||
}else{
|
||||
console.log(data)
|
||||
}
|
||||
}catch(e){
|
||||
console.log(e)
|
||||
} finally {
|
||||
resolve(msg);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function jdApi(functionId,body) {
|
||||
if(!functionId || !body) return
|
||||
return new Promise(resolve => {
|
||||
let opts = taskPostUrl(`/client.action?functionId=${functionId}`, body)
|
||||
got.post(opts).then(
|
||||
(resp) => {
|
||||
const {body:data } = resp
|
||||
try {
|
||||
let res = jsonParse(data);
|
||||
if(typeof res == 'object'){
|
||||
if(res.mainTitle) console.log(res.mainTitle)
|
||||
if(res.resultCode == 0){
|
||||
resolve(res);
|
||||
}else if (res.tips && res.tips.includes("正在努力加载")){
|
||||
console.log("请求太快,ip被限制了")
|
||||
out = true
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
} finally {
|
||||
resolve('');
|
||||
}
|
||||
},
|
||||
(err) => {
|
||||
try {
|
||||
const { message: error, response: resp } = err
|
||||
console.log(`${jsonStringify(error)}`)
|
||||
console.log(`${functionId} API请求失败,请检查网路重试`)
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
} finally {
|
||||
resolve('')
|
||||
}
|
||||
}
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
function jdSign(fn,body) {
|
||||
let sign = ''
|
||||
let flag = false
|
||||
try{
|
||||
const fs = require('fs');
|
||||
if (fs.existsSync('./gua_encryption_sign.js')) {
|
||||
const encryptionSign = require('./gua_encryption_sign');
|
||||
sign = encryptionSign.getSign(fn, body)
|
||||
}else{
|
||||
flag = true
|
||||
}
|
||||
sign = sign.data && sign.data.sign && sign.data.sign || ''
|
||||
}catch(e){
|
||||
flag = true
|
||||
}
|
||||
if(!flag) return sign
|
||||
if(!jdSignUrl.match(/^https?:\/\//)){
|
||||
console.log('请填写算法url')
|
||||
out = true
|
||||
return ''
|
||||
}
|
||||
return new Promise((resolve) => {
|
||||
let options = {
|
||||
url: jdSignUrl,
|
||||
body:`{"fn":"${fn}","body":${body}}`,
|
||||
headers: {
|
||||
'Accept':'*/*',
|
||||
"accept-encoding": "gzip, deflate, br",
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
timeout:30000
|
||||
}
|
||||
if(Authorization) options["headers"]["Authorization"] = Authorization
|
||||
got.post(options).then(
|
||||
(resp) => {
|
||||
const {body:data } = resp
|
||||
try {
|
||||
let res = jsonParse(data)
|
||||
if(typeof res === 'object' && res){
|
||||
if(res.code && res.code == 200 && res.data){
|
||||
if(res.data.sign) sign = res.data.sign || ''
|
||||
if(sign != '') resolve(sign)
|
||||
}else{
|
||||
console.log(data)
|
||||
}
|
||||
}else{
|
||||
console.log(data)
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
} finally {
|
||||
resolve('')
|
||||
}
|
||||
},
|
||||
(err) => {
|
||||
try {
|
||||
const { message: error, response: resp } = err
|
||||
console.log(`${jsonStringify(error)}`)
|
||||
console.log(`算法url API请求失败,请检查网路重试`)
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
} finally {
|
||||
resolve('')
|
||||
}
|
||||
}
|
||||
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
function jsonParse(str) {
|
||||
try {
|
||||
return JSON.parse(str);
|
||||
} catch (e) {
|
||||
return str;
|
||||
}
|
||||
}
|
||||
|
||||
function jsonStringify(arr) {
|
||||
try {
|
||||
return JSON.stringify(arr);
|
||||
} catch (e) {
|
||||
return arr;
|
||||
}
|
||||
}
|
||||
|
||||
function taskPostUrl(url, body) {
|
||||
return {
|
||||
url: `https://api.m.jd.com${url}`,
|
||||
body: body,
|
||||
headers: {
|
||||
"Accept": "*/*",
|
||||
"Accept-Language": "zh-cn",
|
||||
"Accept-Encoding": "gzip, deflate, br",
|
||||
"Connection": "keep-alive",
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
'Cookie': `${cookie}`,
|
||||
"User-Agent": "JD4iPhone/167853 (iPhone; iOS; Scale/2.00)" ,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
clean
|
||||
}
|
368
gua_cleancart.js
Normal file
368
gua_cleancart.js
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user