小计:Shopee批量删除修复~附脚本
需求
昨天浪的时候,无意之间看到文职人员在一个个删除违禁商品,大概23个店铺,每个店铺500多个商品,页面是用Ajax异步加载的,每删一个就需要等几秒,粗略估计一下用时:9h左右
然后了解了下是什么情况,大概知道Shopee在进行版本迭代,很多API失效,这就导致很多通过程序添加的商品,有些信息不完整,虽然可以上架,但是一段时间内无销售就会被Shopee给删除(出现在违禁商品中)
分析
而且为了系统稳定性,把前端很多批量操作都禁止掉了,简单看了下前端源码,发现~写的代码真烂,要是算SEO绝对被刷到末尾,本来准备继续分析的,发现它只是禁用了按钮,eg:
把disabled
属性去除,然后再移除disabled
类就可以了:
<button data-v-1e3fe2dc="" disabled="disabled" type="button" class="shopee-button delete-button shopee-button--large disabled">
解决
遂安装了下Tampermonkey
用户脚本管理器:https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo
手写脚本如下:(很简单,但是却省了文职人员大半时间)
PS:补充说明:Shopee有太多域名(eg:马来、新加坡、台湾等等)所以就不写匹配规则了(include
或者match
)
// ==UserScript==
// @name shopee delete btn
// @namespace dotnetcrazy.cnblogs.com
// @version 0.1
// @description 虾皮删除按钮不能用
// @author dunitian
// @include *
// @require https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js
// @grant none
// ==/UserScript==
(function() {
'use strict';
$(function(){
setInterval(function(){
$(".delete-button").removeClass("disabled");
$(".delete-button").attr("disabled",false);
}, 1000);
});
})();
效果
配合Shopee暴露的页码接口可以批量删除(原功能只能12个批量删一次)
PS:经测试,size最大值为50,超过这个数值就失败(在url后面加参数:page=1&size=50
,然后再批量删除即可)
终了
然后文职感叹了一句,怪不得现在每个公司都需要招程序员呢,我都删了一个上午了,准备每天一天来做这个事情,现在简单点几下就搞定了~
PS:题外话~技术的目的本来就是为了提高生活效率,那些重复的事情反复做,基本上都是可以技术来解决的
咳,然后一顿饭有了。。。(完)
扩展:V1.1版本
之前为了追求速度用jq快速实现的,现在稍微改写下:
// ==UserScript==
// @name shopee delete btn
// @namespace dotnetcrazy.cnblogs.com
// @version 0.1
// @description 虾皮删除按钮不能用
// @author dunitian
// @include *shopee*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// shopee每次选中都会重置删除按钮状态
setInterval(function () {
var btn = document.querySelector(".delete-button");
// 只有选择之后才会出现按钮
if (btn) {
// 如果包含disabled类就删除
if (btn.classList.contains("disabled")) {
btn.classList.remove("disabled");
}
// 如果包含disabled属性
if (btn.hasAttribute("disabled")) {
btn.removeAttribute("disabled");
}
}
}, 1000);
})();
最新文章
- [DataMining]WEEK1 - text-retrieval and search engine
- JS实现base64加密解密
- [书目20160612]思考软件,创新设计——A段架构师的思考技术
- rtsp 协议 详细讲解
- git第一次提交代码到远程仓库
- Monyer&#39;s Game 11~15关过关方法
- 让chrome浏览器变成在线编辑器
- PHP和.NET通用的加密解密函数类,均使用3DES加解密 .
- WPF 类型“System.ComponentModel.ISupportInitialize”在未被引用的程序集中定义。
- Vijos 1132 求二叉树的先序序列
- python 判断 windows 隐藏文件/系统文件
- sqlserver使用户只能在某个架构下建立表和存储过程
- VB.net shell、IO.File.Open、Process.Start、Shellexecute API 运用经验总结
- 微信JS-SDK 选取手机照片并进行上传
- ngRx 官方示例分析 - 4.pages
- gawk编程语言
- 防止sql注入(简单)
- blueprint的使用
- Atcoder | AT2665 【Moderate Differences】
- C# Xamarin For Android自动升级项目实战