几年没登简书,这两天才发现账号被盗了,发了一堆乱七八糟的文章,而且账号也被封禁了。首先,修改密码、申诉恢复账号,然后开始删除垃圾文章,但文章有点多,貌似简书也没提供批量删除的功能,于是,打开浏览器控制台,删了两篇文章观察发送的请求,发现调用接口删除文章时,唯一的参数就是文章id,它是拼接在请求地址中的,而且文章的id是随着发布时间递增的。之后,编写代码对文章数据进行循环删除即可(编写代码时,为方便,接口请求部分的代码可直接从控制台复制)。
最后整理后的代码如下,放在浏览器控制台执行:
// 获取日记分组下的所有文章
fetch("//www.greatytc.com/author/notebooks/这里改成你要删文章的分组id/notes", {
"headers": {
"accept":"application/json",
"accept-language":"zh-CN,zh;q=0.9",
"cache-control":"no-cache",
"pragma": "no-cache",
"sec-ch-ua": "\"NotA(Brand\";v=\"99\", \"GoogleChrome\";v=\"121\",\"Chromium\";v=\"121\"",
"sec-ch-ua-mobile":"?0",
"sec-ch-ua-platform":"\"Windows\"",
"sec-fetch-dest":"empty",
"sec-fetch-mode":"cors",
"sec-fetch-site": "same-origin"
},
"referrer":"//www.greatytc.com/writer",
"referrerPolicy":"strict-origin-when-cross-origin",
"body": null,
"method": "GET",
"mode": "cors",
"credentials": "include"
}).then(res => {
res.json().then(data => {
console.log(data)
data.forEach((v, i) => {
//文章id貌似是根据发表时间递增的
//根据实际情况,我的账号里 id大于73000000的都是被盗号后发的
if (v.id > 73000000) {
setTimeout(() => {
deleteItem(v.id)
}, 100 * i)
}
})
})
});
function deleteItem(id){
//删两篇文章,对比观察后可知,文章id是在地址中传参过去的
fetch(`//www.greatytc.com/author/notes/${id}/soft_destroy`, {
"headers": {
"accept":"application/json",
"accept-language":"zh-CN,zh;q=0.9",
"cache-control":"no-cache",
"pragma": "no-cache",
"sec-ch-ua": "\"NotA(Brand\";v=\"99\", \"GoogleChrome\";v=\"121\",\"Chromium\";v=\"121\"",
"sec-ch-ua-mobile":"?0",
"sec-ch-ua-platform":"\"Windows\"",
"sec-fetch-dest":"empty",
"sec-fetch-mode": "cors",
"sec-fetch-site":"same-origin"
},
"referrer":"//www.greatytc.com/writer",
"referrerPolicy":"strict-origin-when-cross-origin",
"body": null,
"method": "POST",
"mode": "cors",
"credentials":"include"
});
}
后记:
事后发现,删除后的文章被放在回收站了,还需要从回收站删除才可以。回收站功能貌似没有网页版,只能在APP中操作。因为我手机未root,不便抓包,故截至于此。如果手机可以抓包,循环删除回收站中的文章即可,操作和上面的接口类似。