Temu 自动价保 Tampermonkey 脚本分享/ 一键价保
Temu 自动价保脚本的深入技术分析与修复建议,重点关注 SPA 渲染机制、选择器失效及点击模拟问题,并提出 MutationObserver 等解决方案。
1. 关键信息
- (之前已归纳)脚本功能: 分享Temu自动价保Tampermonkey脚本,旨在自动化订单的Price Adjustment,帮助用户拿回差价(如税费)。
- (之前已归纳)作者经验 (DP): OP (colo7r) 称其个人单账号每周三单,持续使用脚本进行价保,自11月底以来未被“杀号”,甚至有几次因快递原因退款也未受影响,账号“鲁棒”。
- (之前已归纳)其他用户DP: dogga也表示单笔价保超过$50未被“杀号”。
- (之前已归纳)多账号操作: 有用户 (gin_m) 提到“一个手机5个号拉满”的玩法,每天下3-4单,但其手机最终“死透了”,暗示多账号操作风险高。
- (之前已归纳)脚本问题: HarryG和两只饺子反馈脚本存在bug,如无法点击提交、卡住、页面返回顶部等。OP承认保存了错误版本,表示会修复。
- (之前已归纳)脚本安装建议: 用户建议将脚本文件名称结以
.user.js结尾,以便于一键安装。 - (新增)脚本核心问题分析: 用户 zhzja8 对脚本进行了深入分析,指出了脚本“无法触发”或“点击无效”的几个核心问题:
- SPA 路由与执行时机: Temu 是单页应用 (SPA),页面内容变化不刷新。脚本依赖
document-idle和setInterval,可能在初始加载时未在正确上下文挂载,或因 CSP 限制导致轮询未启动。 - 选择器失效: 脚本通过文本匹配(如 'Price match/adjustment')来识别订单入口,但 Temu 按钮文本常含不可见字符,且 DOM 结构复杂,简单的
innerText匹配在 React 渲染下不稳定。 clickByCenterTop局限性: 脚本通过查找中心点模拟点击,但 Temu 按钮上层常覆盖透明的“埋点层”或“响应层”,elementFromPoint可能获取到此透明层,导致点击无效。
- SPA 路由与执行时机: Temu 是单页应用 (SPA),页面内容变化不刷新。脚本依赖
2. 羊毛/优惠信息
- (之前已归纳)通过自动化价保,用户可以更便捷地“撸”Temu的差价,相当于“购 bai 买 piao”或拿回税费。
3. 最新动态
- (之前已归纳)脚本作者计划修复现有bug,建议关注GitHub仓库更新。
- (之前已归纳)Temu前端可能会更新,导致脚本失效。
- (新增)修复方案建议:
- 增强入口检测: 结合 SVG 图标或父级容器属性,而非仅匹配文本。
- 解决 SPA 跳转不触发: 使用
MutationObserver监听 DOM 变化,或在脚本开头声明对bgt_orders.html的特定处理。监听 URL 变化,强制重新扫描。 - 跳过“中心点检测”直接触发 React Fiber: 直接从 DOM 节点获取 React Internal Handler,优先尝试调用 React 的
onClick。
4. 争议或不同意见
- (之前已归纳)价保是否影响账号: OP (colo7r) 认为价保不影响活动参与和账号安全,但Wechat和gin_m认为大额价保或多账号操作会触发风控,导致“杀号”。
- (之前已归纳)风控机制: 用户猜测Temu可能使用AI算法进行风控,并鼓励分享“dp”来探索“cutoff”。
5. 行动建议
- (之前已归纳)谨慎使用: 脚本虽能自动化价保,但存在被Temu风控“杀号”的风险,尤其是在涉及大额退款或多账号“拉满”时。
- (之前已归纳)关注更新: 脚本存在bug,建议等待作者修复后的新版本。
- (之前已归纳)分享DP: 鼓励用户分享自己的价保经验和账号状态“dp”,以帮助社区了解Temu的风控边界。
- (之前已归归纳)多账号风险: 尝试“一个手机5个号拉满”等激进玩法可能导致手机或账号“死透了”。
- (之前已归纳)免责声明: 脚本仅供学习交流,商业用途需谨慎。
- (之前已归纳)脚本作者可考虑的改进: 建议脚本作者在发布时将文件命名为
.user.js,以方便用户一键安装。 - (新增)技术调试建议:
- 打开订单页,按 F12,在 Console 输入
document.querySelectorAll('*').filter(el => el.innerText.includes('Price match'))。 - 如果返回数组为空,说明
innerText方案失效,需改用模糊类名选择器(如[class*="order"])。 - zhzja8 表示可协助编写基于
MutationObserver的“增强版”节点监听函数。
- 打开订单页,按 F12,在 Console 输入
前情提要:
【引用自 immcat】:
[黑五献礼]Temu能买什么
最近很多小伙伴在刷 Temu offer,但如今活动规则变化大、坑点不少,加上temu商品质量参差不齐,虽然大家都想用 offer 购 bai 买 piao,但更希望买到真正划算好用的东西。下面推荐的是200左右及以下的东东以配合Temu offer。文后有彩蛋,请看完
撸 Temu 撸了两个月了,每周三单,Price Adjustment 一般能把税费拿回来。自己没碰过前端的东西,vibe coding 撸了一个油猴脚本,自动Request Price Adjustment.
image1717×528 68.7 KB
image350×289 16 KB
github.com/Colo7r/TemuPriceAdjustment
temu.js
main
// ==UserScript==
// @name Temu 助手 v0.43
// @namespace http://tampermonkey.net/
// @version 0.43
// @description 列表->difference->弹窗Receive->Submit(点中心topElement + 遮挡/React兜底)->detail返回;GM跨子域状态 + unsafeWindow 事件构造回到页面上下文
// @author You
// @match *://temu.com/*
// @match *://*.temu.com/*
// @run-at document-idle
// @grant GM_getValue
// @grant GM_setValue
// @grant unsafeWindow
// ==/UserScript==
(function () {
'use strict';
/********************
* CONFIG
********************/
此文件已被截断。 显示原始文件
油猴脚本使用方法
安装油猴插件
浏览器需先安装 Tampermonkey(推荐 Chrome / Edge)。
Chrome 商店搜索 Tampermonkey,点击「添加到 Chrome」。
安装完成后,右上角会出现一个黑底白圈的油猴图标。
新建脚本
点击油猴图标 → 选择「创建新脚本」
删除模板内容
把仓库里的代码复制进去:
temu.js on GitHub
保存(Ctrl+S)。
访问 Temu 页面
打开 Temu 订单列表页面(例如:
https://www.temu.com/my_order_list.html)
脚本会自动加载。
注意事项
免责声明:脚本仅供学习与技术交流,请勿用于商业用途。
Temu 前端可能会更新,如果按钮位置或逻辑变动,脚本可能无法使用。
若点击无效,可尝试:
刷新页面重新加载
检查油猴是否启用此脚本
打开 F12 控制台查看报错信息
可能会影响活动参与
是不是应该号彻底死了以后再request
不需要,price adjustment不会影响你的活动参与
Mark
影响的。
我自己的账号一直在price adjustment现在还没断,我只有一个账号,基本上一周三单拉满,要不然我也懒得搞这么个东西
那是你没碰到金额大的 一大就死了。 不过你就1个号问题不大
什么叫金额大,单个账号金额大还是多个账号
应该是人工智能算法,欢迎你探索模型的cutoff在哪
我实际上退款都有几次了,也没被杀 ,不过是因为快递原因导致的
都是看金额的 我们都是一个手机5个号拉满的
被杀了记得报dp,我支持你
一个手机怎么5个号?重复登陆?
直接切换账号就可以 ,但是我是真的懒得卖二手,要不然我也拉满
注册登陆新的呗,就是字面的意思,碰运气的事
,等别人来贡献单账号 dp 吧,我从 11 月底开始没断过
我也没断过,我还单笔 price match 过 $50 以上,啥事没有
大佬你每个手机拉满5个号,平均每天下几单?
试了一下,有时候点不到submit,有时候会有从别的网站的price match卡住,有时候返回会回到顶部从头再来
现在没下了 一般每天下3-4单吧
为啥现在不下了,风控吗?
手机死透了
等新机来了继续
来了来了
希望2026全年都可以撸 还可以撸49个循环 image100×100 5.23 KB
一键自ban?
先mark下,一般不在temu上买东西
我修一下吧,保存错版本了
我的号比较鲁棒,自己用了很久了没什么问题
每个新号都配一个新电话号码和PayPal吗
东西出不来,也没看到有啥异常,坏了?
image1007×550 108 KB
建議檔案名稱結尾用.user.js方便一鍵安裝腳本
经过对你脚本代码的分析,结合 Temu 订单页的实际渲染机制,我发现了导致你脚本“无法触发”或“点击无效”的几个核心问题。
1. 致命伤:脚本执行时机与 SPA 路由
Temu 是一个典型的 单页应用 (SPA)。当你从首页点击进入“我的订单”时,页面并没有刷新,只是内容变了。
你的代码问题: 你的脚本主要依赖 document-idle 和 setInterval。虽然 setInterval 理论上能轮询,但如果初始加载时脚本没能在正确的上下文挂载(或者因为 CSP 限制被拦截),轮询可能根本没启动。
解决方案: 必须使用 MutationObserver 监听 DOM 变化,或者在脚本开头强制声明对 bgt_orders.html 的特定处理。
2. 选择器失效(关键原因)
在你的代码中,识别订单入口靠的是:
entry: ['Price match/adjustment', '价格调节']
问题在于:
文本匹配: Temu 的按钮文本经常包含不可见字符、空格或由多个 <span> 拼凑而成。
DOM 结构: 现在的 Temu 订单页,这些按钮往往嵌套在高度混淆的 div 中(如你提供的源码中的 {#2064} 等标识符)。简单的 innerText 匹配在复杂的 React 渲染下非常不稳定。
3. clickByCenterTop 的局限性
你的脚本核心逻辑是寻找“中心点”并模拟点击:
const top = document.elementFromPoint(x, y);
const target = top || el;
问题在于: Temu 在按钮上层经常覆盖有一层透明的“埋点层”或“响应层”。elementFromPoint 拿到的可能是这个透明层,而这个层如果不透传事件(Pointer-events),你的 dispatchClickAt 就会点在空处。
建议的修复方案
修改建议 A:增强入口检测
不要只匹配文本,建议结合 SVG 图标 或 父级容器属性。Temu 的“价格调节”按钮通常紧跟在“Track”或“Buy again”后面。
修改建议 B:解决 SPA 跳转不触发
将你的 setInterval 逻辑改为更主动的监听。在脚本最前面加入:
// 监听 URL 变化,强制重新扫描
window.addEventListener('popstate', () => {
console.log("URL 变化,尝试唤醒脚本...");
if (location.href.includes('bgt_orders.html')) {
execute();
}
});
修改建议 C:跳过“中心点检测”直接触发 React Fiber
Temu 使用 React。与其寻找坐标点,不如直接从 DOM 节点获取它的 React Internal Handler。你代码里有 getReactProps,但只在 Submit 用了。建议在列表页点击入口时也优先尝试调用 React 的 onClick。
快速调试步骤:
打开订单页,手动按 F12。
在 Console 输入:document.querySelectorAll('*').filter(el => el.innerText.includes('Price match'))。
如果返回数组为空,说明 innerText 方案彻底失效,需要改用 [class*="order"] 这种模糊类名选择器。
需要我帮你针对你现在的代码,写一段基于 MutationObserver 的“增强版”节点监听函数吗?