java 批量删除微博文章

/ 默认分类 / 没有评论 / 632浏览

我不怎么使用微博,最近我无意登录上,发现我的微博被盗了,转发了上千个微博,想删除奈何微博不提供批量删除,真能难道程序员?

第一步获取参数

1.浏览器访问连接 https://weibo.com/u/page/fav/7687593014

2.按f12打开 开发者工具

3.网络-Fetch/XHR -获取参数

image-20240328155808348

第二步 引入依赖包

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.0</version>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.22</version>
        </dependency>
        

第三步替换参数执行代码

package com.maruifu.utils;

import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import java.util.HashMap;
import java.util.Map;

/**
 * @author 马瑞富
 * @date 2024年3月24日
 *
 * 此类实现了从指定微博用户主页获取微博列表并自动删除其中转发微博的功能。
 * 使用了cn.hutool.http.HttpRequest库进行网络请求处理以及cn.hutool.json.JSONUtil库进行JSON数据解析。
 *
 * @class DelWeiBo
 */
public class DelWeiBo {



    // 存储登录态所需Cookie信息
    String cookie =  "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    String X_XSRF_TOKEN =  "XXXXXXXX";
    String UID =  "XXXXXX";

    /**
     *  主函数,循环调用del方法执行删除任务
     * @param args
     */
    public static void main(String[] args) throws Exception {
        // 循环10次执行删除操作
        for (int i = 0; i < 10; i++) {
            DelWeiBo delWebo = new DelWeiBo();
            delWebo.del();
             // 休眠2秒  微博有限流 请求太快会请求失败
            Thread.sleep(2000);
        }
    }


    /**
     * 删除转发微博的核心方法
     */
    public void del(){
        // 获取微博列表API地址
        String delUrl = "https://weibo.com/ajax/statuses/destroy";
        // 发送GET请求获取微博列表
        String listBody = HttpRequest.get("https://weibo.com/ajax/statuses/mymblog?uid="+UID+"&page=1&feature=0")
                .header("cookie",cookie).execute().body();
        // 解析微博列表JSON数据
        JSONObject obj = JSONUtil.parseObj(listBody);
        JSONArray array = obj.getJSONObject("data").getJSONArray("list");
        // 遍历微博列表,找到转发微博并删除
        for (int i = 0; i < array.size(); i++) {
            JSONObject object = array.getJSONObject(i);
            // 判断是否为转发微博  如果 想改掉规则 直接去掉 判断即可
            if (object.getStr("text").equals("转发微博")){
                // 构造删除请求参数

                Map<String, String> deleteParams = new HashMap<>();
                deleteParams.put("id",object.getStr("id"));
                // 转换为JSON字符串并发送POST请求删除微博
                String str = JSONUtil.toJsonStr(deleteParams);
                System.out.println("开始删除id为"+object.getStr("id")  + "的微博数据");
                HttpResponse execute = HttpRequest.post(delUrl).
                        header("cookie", cookie)
                        .header("x-xsrf-token",X_XSRF_TOKEN)
                        .body(str)
                        .execute();
                // 输出响应信息并确认删除结果
                System.out.println(execute.body());
                if (execute.getStatus() ==  200){
                    System.out.println("已删除" + object.getStr("text"));
                    System.out.println("successful!");
                }
            }
        }
    }
}