如何用js代码批量删除以前发过的新浪微博 ?

简介: 如何用js代码批量删除以前发过的新浪微博 ?
  • 1.1 步骤
  • 1.2 方案一:发起http请求,删除全部微博;
  • 1.3 方案2: 利用action-type按钮事件删除微博
  • 2.1 移除粉丝
  • 2.2 移除关注
  • 3.1 action-type 汇总
  • 3.2 HTML DOM setInterval() :周期(以毫秒计)调用执行函数/表达式
  • 4.1 编辑页面上的任何文本 ✍
  • 4.2 Command 菜单


前言


本文的代码,在20210年7月11日时没有效果,因此才发布此文。分享本文的目的只为了交流技术。


先看下之前我测试的批量删除微博的效果

image.png

删除微博推荐使用本文1.2章节的方法,它是采用发起请求,具有安全且全自动的特点。

如果你只是不想被人看你之前的微博,可以设置最近半年可见就行

image.png

I、批量删除微博的方案

1.1 步骤

  • 进入自己的微博主页(网页端)
  • 将代码复制在 [ console ]目录 ,按回车键运行
  • 如果出现错误,或者系统繁忙,就把代码在console 复制一遍
  • 如果后悔了,想停止删除,就刷新页面即可(command +R / F5)

系统繁忙,是触发了风控机制,你稍后再试就行了

image.png

用法:

  1. 打开chrome的开发者工具:macOS下的快捷键是cmd+opt+i, windows是F12或者ctrl+shift+i)
  2. 点击Esc打开console,把代码粘贴进去,回车

1.2 方案一:发起http请求,删除全部微博;

支持自动刷新,滚动到最低部(触发自动加载微博)

  • 完整代码
//删除本条微博
function del_weibo(id){
    console.log(id);
    var postdata = "mid="+id;
    fetch("https://www.weibo.com/aj/mblog/del?ajwvr=6", 
    {
        "credentials":"include",
        "headers":{
                "content-type":"application/x-www-form-urlencoded",
        },
        "referrer":"https://www.weibo.com",
        "body":postdata,
        "method":"POST","mode":"cors"
    }).then(response => console.log(response) )
    .then(data => console.log(data))
    .catch(error => console.log(error));
}
//删除本页全部微博
function del_page(){
    var wb_list = document.querySelectorAll(".S_txt2");
    if(wb_list.length == 0){
        console.log("暂无可删除微博");
    }
    for(var t of wb_list){
        if(t.name){
            //限制请求速度
            setTimeout(function(t) {
                del_weibo(t.name);
                var pppp_node = t.parentNode.parentNode.parentNode.parentNode;
                pppp_node.parentNode.removeChild(pppp_node);
            }, 1500,t);
        }
    }
}
// 刷新微博页面
function auto_update_page(){
    var pages = document.querySelectorAll(".W_pages > a");
    if(pages.length > 0){
        var next_page = pages[pages.length-1];
        console.log("下一页");//or上一页...
        next_page.click();
    }else{
        console.log(new Date().toLocaleTimeString() + ":加载中,请稍等");
        window.scrollTo(0, 100000);//滚动到最低部(触发自动加载微博)
    }
}
function del_all_weibo(){
    del_page();
    auto_update_page();//尝试自动刷新
}
// 定时执行删除
window.setInterval(del_all_weibo, 5000);
  • 滚动到最低部(触发自动加载微博)
window.scrollTo(0, 100000);//滚动到最低部(触发自动加载微博)
      $('html, body').animate({ scrollTop: $(document).height() }, 'slow');
      var len = $('div[action-type="feed_list_item"]').length;
      if (len < 5) { $('a[class="page next S_txt1 S_line1"]')[0].click(); }

1.3 方案2: 利用action-type按钮事件删除微博

利用Chrome的console删除所有微博:支持自动加载更多

// @description  删除所有微博
// ==/UserScript==
'use strict';
var s = document.createElement('script');
s.setAttribute(
  'src',
  'https://lib.sinaapp.com/js/jquery/2.0.3/jquery-2.0.3.min.js'
);
s.onload = function() {
  setInterval(function() {
    if (!$('a[action-type="feed_list_delete"]')) {
      $('a.next').click();
    } else {
      $('a[action-type="feed_list_delete"]')[0].click();
      $('a[action-type="ok"]')[0].click();
    }
    // scroll bottom let auto load
    $('html, body').animate({ scrollTop: $(document).height() }, 'slow');
    var len = $('div[action-type="feed_list_item"]').length;
    if (len < 5) { $('a[class="page next S_txt1 S_line1"]')[0].click(); }
  }, 800);
};
document.head.appendChild(s);

支持删除快转

'use strict';
var s = document.createElement('script');
s.setAttribute(
  'src',
  'https://lib.sinaapp.com/js/jquery/2.0.3/jquery-2.0.3.min.js'
);
s.onload = function() {
  setInterval(function() {
    if ($('a[action-type="feed_list_delete_fast_reported"]')) {
        $('a[action-type="feed_list_delete_fast_reported"]')[0].click()
    } 
    //
    if ($('a[action-type="fl_del_fast_reported"]')) {
        $('a[action-type="fl_del_fast_reported"]')[0].click()
    } 
    if ($('a[action-type="feed_list_delete"]')) {
        $('a[action-type="feed_list_delete"]')[0].click()
        $('a[action-type="ok"]')[0].click()
    }
      $('a.next').click();
    // scroll bottom let auto load
    $('html, body').animate({ scrollTop: $(document).height() }, 'slow');
    var len = $('div[action-type="feed_list_item"]').length;
    if (len < 5) { $('a[class="page next S_txt1 S_line1"]')[0].click(); }
  }, 800);
};
document.head.appendChild(s);
  • 自动刷新当前页面
window.location.reload();

II、移除粉丝/关注的人

2.1 移除粉丝

应用场景:注销账户。

如果粉丝数达到一定的数目,那么在注销微博的最后一步,需要「把密码、注册地址」用邮件方式发到微博的客服邮箱。

image.png

var s = document.createElement('script');
s.setAttribute(
  'src',
  'https://lib.sinaapp.com/js/jquery/2.0.3/jquery-2.0.3.min.js'
);
s.onload = function() {
  setInterval(function() {
    if (!$('a[action-type="removeFan"]')) {
      $('a.next').click();
    } else {
      $('a[action-type="removeFan"]')[0].click();
       setTimeout(function (){}, 50);
      $('a[action-type="ok"]')[0].click();
    }
    var len = $('li.follow_item').length;
    if (len < 2) {
        $('a[class="page next S_txt1 S_line1"]')[0].click();
    }
  }, 1500);
};
document.head.appendChild(s);
  • 移除微博数小于3的粉丝(僵死粉)
function removeFan() {
 fans = document.querySelectorAll("li[node-type=userItem]")
 console.log(fans.length)
 flag = false;
 for (var i = 0; i < fans.length; i++) {
  if (Number(fans[i].querySelectorAll("span em.count")[2].innerText) < 3) {  // 移除微博数小于3的粉丝
   fans[i].querySelector("a.tlink[action-type=removeFan]").click();
   document.querySelector("a.W_btn_a[action-type=ok]").click();
   flag = true;
   break;
  }
 }
 if (!flag) {
  clearInterval(timer);
  next = document.querySelector(".page.next.S_txt1.S_line1")
  if (next) {next.click(); setTimeout("timer = setInterval(removeFan, 1000);", 5000)}
 }
}
var timer = setInterval(removeFan, 1000);

2.2 移除关注

因为总是会莫名奇妙关注一些博主,当关注的达到一定数量之后,我就比较喜欢这个功能来移除一些关注

image.png

$(".btn_link.S_txt1").click(); // 进入“批量管理”
// 选中全部
var lis = $(".member_li.S_bg1").parentNode.childNodes;
for(var i=0;i<lis.length;i++){
lis[i].className = "member_li S_bg1 choosed S_link1_br";
}
// 为了让“取消关注”可点击
$(".member_li.S_bg1").click();$(".member_li.S_bg1").click();
$(".W_btn_a[node-type='cancelFollowBtn']").click(); 
// 取消关注
$(".W_btn_a.btn_34px[node-type='ok']").click(); // 确定

III、利用action-type按钮事件删除微博的原理分析

利用关键词feed_list_delete寻找要删除的微博类型

  • feed_list_delete_fast_reported
  • feed_list_delete

3.1 action-type 汇总

  • feed_list_delete:删除
  • fl_del_fast_reported 取消快转
  • fl_reEdit:编辑微博
  • fl_addTag :加标签
  • fl_fansVisible:转换为粉丝可见
  • fl_friendVisible:转换为好友圈可见
  • fl_personalVisible:转换为仅自己可见

3.2 HTML DOM setInterval() :周期(以毫秒计)调用执行函数/表达式

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

  • 语法
setInterval(code,millisec[,"lang"])

code :必须。要调用的函数或要执行的代码串。

millisec:必须。周期性执行或调用 code 之间的时间间隔,以毫秒计。

返回值:传递给 Window.clearInterval() 从而取消对 code 的周期性执行

  • 例子:周期执行删除快转微博的函数,周期millisec为2000
'use strict';
var s = document.createElement('script');
s.setAttribute(
  'src',
  'https://lib.sinaapp.com/js/jquery/2.0.3/jquery-2.0.3.min.js'
);
s.onload = function() {
  setInterval(function() {
    if ($('a[action-type="feed_list_delete_fast_reported"]')) {
        $('a[action-type="feed_list_delete_fast_reported"]').click()
    } 
    //
    if ($('a[action-type="fl_del_fast_reported"]')) {
        $('a[action-type="fl_del_fast_reported"]').click()
    } 
    if ($('a[action-type="feed_list_delete"]')) {
        $('a[action-type="feed_list_delete"]')[0].click()
        $('a[action-type="ok"]')[0].click()
    }
      $('a.next').click();
    // scroll bottom let auto load
    $('html, body').animate({ scrollTop: $(document).height() }, 'slow');
  }, 800);
};
document.head.appendChild(s);

IV、Chrome DevTools中的操作技巧

Mac 使用 command+option+I 即可打开DevTools

4.1 编辑页面上的任何文本 ✍

在控制台输入document.body.contentEditable="true"

或者document.designMode = 'on'就可以实现对网页的编辑了。

image.png

如果你想快速修改一些网页数据,使用这个是最方便的,比什么P图软件都快

比如修改博客的总排名数据为1

image.png

Cmd + Shift + P

image.png

截图包含滚动条在内的所有页面内容

Capture full size screenshot(并不只是页面可视区域)

image.png

see aslo

  • html进阶:【Meta 标签的 http-equiv 属性使用指南】

https://kunnan.blog.csdn.net/article/details/108941030

目录
相关文章
|
2月前
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
4月前
|
JavaScript 前端开发 算法
流量分发代码实战|学会用JS控制用户访问路径
流量分发工具(Traffic Distributor),又称跳转器或负载均衡器,可通过JavaScript按预设规则将用户随机引导至不同网站,适用于SEO优化、广告投放、A/B测试等场景。本文分享一段不到百行的JS代码,实现智能、隐蔽的流量控制,并附完整示例与算法解析。
140 1
|
5月前
|
JavaScript 前端开发
怀孕b超单子在线制作,p图一键生成怀孕,JS代码装逼娱乐
模拟B超单的视觉效果,包含随机生成的胎儿图像、医疗文本信息和医院标志。请注意这仅用于前端开发学习
|
5月前
|
JavaScript
JS代码的一些常用优化写法
JS代码的一些常用优化写法
107 0
|
7月前
|
存储 JavaScript 前端开发
在NodeJS中使用npm包进行JS代码的混淆加密
总的来说,使用“javascript-obfuscator”包可以帮助我们在Node.js中轻松地混淆JavaScript代码。通过合理的配置,我们可以使混淆后的代码更难以理解,从而提高代码的保密性。
678 9
|
8月前
|
前端开发 JavaScript
【Javascript系列】Terser除了压缩代码之外,还有优化代码的功能
Terser 是一款广泛应用于前端开发的 JavaScript 解析器和压缩工具,常被视为 Uglify-es 的替代品。它不仅能高效压缩代码体积,还能优化代码逻辑,提升可靠性。例如,在调试中发现,Terser 压缩后的代码对删除功能确认框逻辑进行了优化。常用参数包括 `compress`(启用压缩)、`mangle`(变量名混淆)和 `output`(输出配置)。更多高级用法可参考官方文档。
620 11
|
10月前
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
486 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
8月前
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
10月前
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
297 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
8月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

热门文章

最新文章

下一篇
oss云网关配置