吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 417|回复: 8
上一主题 下一主题
收起左侧

[Java 原创] TEMU抢发货台的油猴脚本

[复制链接]
跳转到指定楼层
楼主
逸先生 发表于 2024-10-22 11:33 回帖奖励
本帖最后由 逸先生 于 2024-10-30 12:49 编辑

这平台有时候发货台还挺难抢的,网上的都是获取网页按钮ID进行点击,这个方法在抢库存的时候大概率会网络繁忙不弹出按钮导致无法抢到库存。所以就通过GPT写了个post脚本直接提交发货台请求,成功率较高。


Anti-Content这个因为不会算法,所以需要自己填写
备货单可以填一个或者多个  多个备货单需要按行填写
10月29号更新class定位
---------------
10月30号接口已被修复,同个Anti-Content用来请求多次会失效。

[Java] 纯文本查看 复制代码
// ==UserScript==
// @name         TEMU发货台
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Send POST requests at intervals with data from input fields inside a specific div, using MutationObserver to ensure element is loaded
// @AuThor       YourName
// @match        https://seller.kuajingmaihuo.com/*
// @grant        none
// ==/UserScript==

(function() {
   'use strict';
   const targetClass = 'index-module__menuBox___20G7L bg-shell-theme-menuBox bg-shell-theme-mmsMenuBox';
   let targetDiv = document.querySelector(`.${targetClass.replace(/\s/g, '.')}`);

   // 检查目标div是否存在,如果不存在则设置MutationObserver监听
   function checkAndSetup() {
       if (targetDiv) {
           setupInterface();
       } else {
           const observer = new MutationObserver((mutations) => {
               targetDiv = document.querySelector(`.${targetClass.replace(/\s/g, '.')}`);
               if (targetDiv) {
                   observer.disconnect(); // 停止观察
                   setupInterface();
               }
           });
           observer.observe(document.body, {
               childList: true,
               subtree: true
           });
       }
   }

   function setupInterface() {

       // 创建文本输入框3,用于获取参数
       const input3 = document.createElement('input');
       input3.placeholder = '这里填写Anti-Content的值';
       input3.type = 'text';
       input3.className = "IPT_input_5-111-0";
       targetDiv.appendChild(input3);

       // 创建输入框1
       const input1 = document.createElement('textarea');
       input1.placeholder = '这里按行输入备货单号';
       input1.style.width = '95%';
       input1.style.height = '100px';
       input1.style.margin = '5px';
       input1.className = "IPT_input_5-111-0";
       targetDiv.appendChild(input1);

       // 创建按钮1
       const button1 = document.createElement('button');
       button1.textContent = '开始抢夺';
       button1.className = "BTN_outerWrapper_5-111-0 BTN_primary_5-111-0 BTN_medium_5-111-0 BTN_outerWrapperBtn_5-111-0";
       targetDiv.appendChild(button1);

       // 创建文本输入框2,用于展示响应结果
       const input2 = document.createElement('textarea');
       input2.placeholder = '这里显示抢夺结果';
       input2.style.width = '95%';
       input2.style.height = '200px';
       input2.style.margin = '5px';
       input2.className = "IPT_input_5-111-0";
       targetDiv.appendChild(input2);

       let isSending = false;
       let intervalId;

       // 发送POST请求的函数
       function sendPostRequest() {
           const mallId = localStorage.getItem('mall-info-id');
           const cookieValue = document.cookie.split('; ').find(row => row.startsWith('SUB_PASS_ID='))?.split('=')[1];
           const subPurchaseOrderSnList = input1.value.split('\n').filter(line => line.trim() !== '');
           const AntiContent = input3.value;
           const requestBody = JSON.stringify({
               joinDeliveryPlatformRequestList: subPurchaseOrderSnList.map(sn => ({ subPurchaseOrderSn: sn }))
           });
           const xhr = new XMLHttpRequest();
           xhr.open('POST', 'https://seller.kuajingmaihuo.com/oms/bg/venom/api/supplier/purchase/manager/batchJoinDeliveryOrderPlatformV2', true);
           xhr.setRequestHeader('Content-Type', 'application/json');
           xhr.setRequestHeader('Mallid', mallId);
           xhr.setRequestHeader('Anti-Content', AntiContent);
           xhr.onreadystatechange = function() {
               if (xhr.readyState === 4 && xhr.status === 200) {
                   const response = JSON.parse(xhr.responseText);
                   if (response.error_msg) {
                       input2.value += '抢夺失败\n';
                   } else {
                       input2.value += '抢夺成功,已加入发货台\n';
                   }
                   // 确保文本输入框2始终聚焦在文本内容的最后一行
                   input2.scrollTop = input2.scrollHeight;
               }
           };
           xhr.send(requestBody);
       }

       // 点击按钮1的事件处理函数
       button1.addEventListener('click', function() {
           if (isSending) {
               // 停止发送请求
               clearInterval(intervalId);
               isSending = false;
               button1.textContent = '开始抢夺';
           } else {
               // 开始发送请求
               isSending = true;
               button1.textContent = '停止抢夺';
               intervalId = setInterval(sendPostRequest, 500);
           }
       });
   }

   // 当文档加载完成后执行
   window.onload = function() {
       checkAndSetup(); // 开始检查并设置界面
   };

   // 或者使用 DOMContentLoaded 事件
   document.addEventListener('DOMContentLoaded', function() {
       checkAndSetup(); // 开始检查并设置界面
   });
})();


图片.png (293.38 KB, 下载次数: 1)

图片.png

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
52bjg 发表于 2024-10-22 14:53
帮顶,支持一下。
3#
 楼主| 逸先生 发表于 2024-10-22 15:14 |楼主
平台库存是下午14:00开放  提示商家备货火爆的  在下午14:00点 开始抢夺就好了 我自己用了一个星期了是必抢到的
4#
qazqazwang 发表于 2024-10-22 17:10
5#
CIBao 发表于 2024-10-22 17:35
奇怪, 我跑其他接口是不需要`Anti-Content`的啊
当初爬后台数据的时候, 有这个`Anti-Content`就头大, 太复杂了, 不过后来发现不需要直接猛猛爬了
6#
 楼主| 逸先生 发表于 2024-10-23 08:26 |楼主
CIBao 发表于 2024-10-22 17:35
奇怪, 我跑其他接口是不需要`Anti-Content`的啊
当初爬后台数据的时候, 有这个`Anti-Content`就头大, 太复 ...

其他接口确实不需要这个,好像只有抢发货台才有这个Anti-Content校验
7#
chgf 发表于 2024-10-29 09:42
感谢大神分享,来学习学习,研究一下
8#
幽灵爵士 发表于 2024-10-30 10:45
学习学习
9#
tzh946 发表于 2024-10-31 15:07
谢大神 好东西分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-1 07:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表