批量删除微信公众号群发文章(半自动)

需求

想要批量删除公众号文章,但公众号提供的接口只有删除那种发布的文章,而不能删除群发的文章,而且删除要扫二维码,想来想去还是直接写了一个简单的 demo 去半自动化的删除过程。

实现

想法是打算写一个 js 然后进入到文章列表页后,在控制台运行,代码如下所示,当然了有不少可以优化的点,比如翻页啥的,但我这边就几页,就懒得接着写了,其实也可以更自动化一点,点击删除按钮出现二维码后截屏发到手机或者虚拟机啥的,然后手机再跑一个扫描的脚本,不过应该不能直接从手机相册里进行扫描吧,有兴趣的去试试咯。

function sleep(ms) {
  return new Promise((resolve) => setTimeout(resolve, ms))
}

async function deleteElements() {
  const articleElements = document.getElementsByClassName('publish_hover_content')
  for (let index = 0; index < articleElements.length; index++) {
    //  遍历整页的发布文章,这里也可以做个优化逻辑去掉不想删除的文章
    const currentArticleElement = articleElements[index]
    const selectOptionList = currentArticleElement.getElementsByClassName('select_option')
    if (selectOptionList.length > 0) {
      const selectOptions = selectOptionList[0].getElementsByTagName('li')
      if (selectOptions.length > 0) {
        const lastOption = selectOptions[selectOptions.length - 1] // 这个就是删除按钮
        lastOption.click()
      }
      await sleep(2000) // 简单sleep一下等待删除确认框的元素出现
      const deleteContentList = currentArticleElement.getElementsByClassName('delect_content')
      if (deleteContentList.length > 0) {
        const deleteButtonList = deleteContentList[0].getElementsByClassName(
          'weui-desktop-btn weui-desktop-btn_primary'
        )
        if (deleteButtonList.length > 0) {
          deleteButtonList[0].click() //点击完删除会出现二维码,扫码时间5秒,我觉得差不多了
          await sleep(5000)
        }
      }
    }
  }
  return 1
}

deleteElements().then((r) => alert('本页执行完毕,请手动翻页'))