【Apipost】批量删除我的51CTO文章

2023-12-14 17:01:23

一、序

去年开始再51CTO同步更新文章,一年多过去了,只涨了3个粉丝。看了下这个平台就是卖课、搞培训的,退出了。决定把文章也删除了(有人私信我说专门注册了个账号感谢我的一篇文章,还挺有意义的)。

不过这和C站一样,文章不支持批量操作,100多篇文章,手动删了几篇后就不想继续了。于是决定写个python脚本(联系客服应该也能全部删除吧)。

在这里插入图片描述

之前写过批量查询CSDN文章质量分的文章,本文思路是一样的。

【python】我用python写了一个可以批量查询文章质量分的小项目(纯python、flask+html、打包成exe文件)

二、API分析

在51CTO的创作中心,文章列表页面,打开浏览器的检查,然后删除一篇文章,就可以看到删除操作的http请求参数:
在这里插入图片描述

载荷部分是具体操作(delBlog)和文章id,只需要在http请求的body里面设置要删除的文章的id,就可以删除对应的文章了。
在这里插入图片描述

下面的list操作,就是获取文章列表信息,从中提取出文章id就可以了:
在这里插入图片描述

核心操作就这两个。

三、Apipost测试

还是用Apipost来测试一下吧。

把operation操作的参数填写在Apipost里面就可以了。

请求头:
在这里插入图片描述

请求体:
在这里插入图片描述

现在开始测试接口,以这篇文章为例:
在这里插入图片描述

id7883577

在请求体中将id设置为7883577。点击发送,可以看到操作成功:
在这里插入图片描述

文章已经被删除:
在这里插入图片描述

批量获取文章id的操作是类似的,不过获取id请求体只需要cookie就可以了(按照前面的全填,永远只返回第一页的信息)

在page这里设置页面即可(和csdn一样,是按page来显示的,不是全部返回):
在这里插入图片描述

四、脚本

参考之前批量查询文章质量分代码。

五、Apipost中完成

直接在Apipost中获取文章id,然后保存下来,再将这些id对应的文章全部删除。

首先是获取文章id并保存,可以使用Apipost的“后执行脚本”功能,即编写脚本(js)对http请求(POST)的响应进行进一步操作。

在这里插入图片描述

脚本:

if (response.rawBody) {
    try {
        let responseData = JSON.parse(response.rawBody);
        let blogIds = responseData.data.list.map(item => item.blog_id);
        apt.globals.set("blog_ids", blogIds);
        console.log(blogIds);
    } catch (error) {
        console.error("解析JSON时出错: ", error);
    }
} else {
    console.error("响应体为空");
}

注意这里是rawBody,而通常的response响应体名称是body。自己先打印response(console.log(response);)就可以看到了。

现在,这些id已经保存到了全局变量blogIds 中了。在删除文章的接口中使用这个全局变量就可以了。

因为每次POST只能删除一篇文章(即一个id),说以需要再删除文章的接口中添加预处理脚本,对前面的全局变量进行设置,每次只取一个。

// 从全局变量中获取 blog_ids 字符串,并将其转换回数组
let blogIds = JSON.parse(apt.globals.get("blog_ids") || "[]");
let blogId = blogIds.shift().toString();  // 将 blog_id 转换为字符串
// 将更新后的数组转换回字符串,并保存到全局变量中
apt.globals.set("blog_ids", JSON.stringify(blogIds));
// 保存 blog_id 到全局变量中
apt.globals.set("blog_id", blogId);

然后再请求中将ids设置为对应的变量:

在这里插入图片描述


现在,点击“发送”,就会删除全局变量中保存的多个文章id对应的文章了。

比如我获取了一页(page)文章对应的id,假设有10个,那么全局变量就会保存这10篇文章的id,然后在删除文件的接口中删除这些id对应的文章。
在这里插入图片描述

不过有一个问题,删除一篇文章就要点击一次“发送”。这种方法还是不如写脚本来得快(循环发送,删除)。Apipost应该有相应的这种高级功能,我还没学。

在这里插入图片描述

即使不写脚本,也比一篇一篇地删除快了。

文章来源:https://blog.csdn.net/weixin_43764974/article/details/134915453
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。