前言
微博批量删除评论脚本 GitHub:github.com/yunying1/wb…
分析
首先我们先找到删除评论的接口,发现需要是通过cid
也就是评论id来删除评论
然后通过检查元素在Dom
中找到了每一条评论的cid
思路
通过前面的分析,我们已知cid
可以在Dom
中获取到,拿着cid
去请求删除评论接口就可以删除评论。
实现
先贴出完整代码(使用IIFE
防止变量名冲突)。
(() => {
let deleteComment = (commentId) => {
return new Promise((resolve, reject) => {
let http = new XMLHttpRequest();
http.onreadystatechange = (e) => http.readyState == 4 && resolve();
http.open("post", `https://weibo.com/aj/comment/del?ajwvr=6&__rnd=${new Date().getTime()}`);
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http.send(`cid=${commentId}&_t=0`);
});
}
function main() {
let taskList = [];
[].forEach.call(document.getElementsByClassName("WB_cardwrap"), (ele) => {
const commentId = ele.getAttribute("comment_id");
taskList.push(deleteComment(commentId));
});
Promise.all(taskList).then(() => alert("删除完成"));
}
main();
})();
- 通过
[].forEach.call
遍历所有评论的卡片Dom
- 再通过
.getAttribute
获取到每条评论的cid
- 批量请求删除评论的接口