20行代码清除微博黑历史。。。

277 阅读1分钟

前言

微博批量删除评论脚本 GitHub:github.com/yunying1/wb…

分析

首先我们先找到删除评论的接口,发现需要是通过cid也就是评论id来删除评论 api.png

然后通过检查元素在Dom中找到了每一条评论的cid cid.png

思路

通过前面的分析,我们已知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();
})();
  1. 通过[].forEach.call遍历所有评论的卡片Dom
  2. 再通过.getAttribute获取到每条评论的cid
  3. 批量请求删除评论的接口