用 js 脚本自动删除 qq 邮箱的收件规则(二)

 

上一个脚本写完后和朋友交流了一下,他问我:能不能直接调接口去删?

我又扒了下接口,试了两下,发现我删除了4条,但4条的请求完全一样?

又仔细想了一下,豁然开朗:我删除的都是列表中的第一条,当中有一个CurFilterID,每次都传0。

他的机制应该是这样的,这些规则应该就在后台的缓存列表中,没有 uuid,只有列表 id。我只要把对应的列表 id 传过去,然后他在后台删除就行。

那我们的代码也简单了,看一下一共多少条规则,然后重复调用删除第一条就行。

 

 1 window.deleteRuleRC = async () => {
 2         haha = window.deleteRuleRC;
 3         sendDeleteMessage = () => {
 4             return fetch()
 5         }
 6         sleep = (ms = 1000) => new Promise((resolve, reject) => {
 7             const timer = setTimeout(() => {
 8                 resolve();
 9                 clearTimeout(timer);
10             }, ms);
11         });
12 
13         if (document.querySelector('#mainFrame')) {
14             const RCList = document.querySelector('#mainFrame').contentWindow.document.querySelectorAll('.set_table ul li');
15             if (RCList.length > 1) {
16                 for (let i = 1; i < RCList.length; i++) {
17                     await sendDeleteMessage();
18                     await sleep(1000);
19                 }
20             }
21         }
22     }

 

这里要说一下,使用这个代码的时候,先要打开 f12,然后点 Network 面板,再手动删除一条,看到一条这样的请求:

 

这里的第一条就是我们需要的请求,在这条请求上右键,Copy,Copy as fetch。这时候请求的代码已经在剪贴板里,不要再复制其它的内容。 

 

 

然后我们回到代码中,第4行有句 fetch(),前面的 return 不要动(return 后面还有个空格)。把刚刚复制的代码粘贴上去。

然后就和之前一样:

deleteRuleRC();

回车运行,慢慢欣赏吧!

posted @ 2021-05-11 10:25  shiningsun  阅读(109)  评论(0编辑  收藏  举报