前言
很多熱心網(wǎng)友無意間關(guān)注了很多抖音賬號(hào),卻發(fā)現(xiàn)取消起來很不方便。今天,我們將為您帶來一個(gè)快速取關(guān)腳本,幫助您快速清理不想關(guān)注的用戶。
![圖片[1]-抖音批量取關(guān)| 全網(wǎng)首發(fā) | 使用ChatGPT寫一個(gè)自動(dòng)化JS腳本-資源網(wǎng)站](http://www.oilmaxhydraulic.com.cn/wp-content/uploads/2023/02/7656894e61114659-1024x214.jpg)
圖文教程
![圖片[2]-抖音批量取關(guān)| 全網(wǎng)首發(fā) | 使用ChatGPT寫一個(gè)自動(dòng)化JS腳本-資源網(wǎng)站](http://www.oilmaxhydraulic.com.cn/wp-content/uploads/2023/02/5fea9bdc4e114712-1024x628.jpg)
進(jìn)入上述頁面后,按F12打開開發(fā)者工具,找到控制臺(tái),輸入下面的代碼
// 獲取第一個(gè) "取消關(guān)注" 按鈕并點(diǎn)擊
function cancelFollow() {
const cancelBtn = window.document.getElementsByTagName('a')[2];
if (cancelBtn) {
cancelBtn.click();
setTimeout(() => {
const confirmBtns = document.querySelectorAll('button.semi-button-primary');
if (confirmBtns.length > 0) {
for (let i = 0; i < confirmBtns.length; i++) {
const btnText = confirmBtns[i].innerText.trim();
if (btnText === "確認(rèn)") {
confirmBtns[i].click();
setTimeout(() => {
cancelFollow();
}, 1000);
return;
}
}
}
// 點(diǎn)擊完第一個(gè)取消關(guān)注后,重新查找新的取消關(guān)注按鈕并執(zhí)行相應(yīng)操作
setTimeout(() => {
cancelFollow();
}, 1000);
}, 500);
} else {
console.log("全部用戶已取消關(guān)注");
}
}
// 執(zhí)行取消關(guān)注流程
cancelFollow();
輸入后按回車即可
視頻演示
與ChatGPT的對(duì)話設(shè)置
需要有完成的提問思路,請(qǐng)看我們跟ChatGPT的對(duì)話,這個(gè)是我們對(duì)剛才完整邏輯的描述
![圖片[3]-抖音批量取關(guān)| 全網(wǎng)首發(fā) | 使用ChatGPT寫一個(gè)自動(dòng)化JS腳本-資源網(wǎng)站](http://www.oilmaxhydraulic.com.cn/wp-content/uploads/2023/02/9e7c4eebc5120552.jpg)
然后就是ChatGPT給出的代碼及解釋了
![圖片[4]-抖音批量取關(guān)| 全網(wǎng)首發(fā) | 使用ChatGPT寫一個(gè)自動(dòng)化JS腳本-資源網(wǎng)站](http://www.oilmaxhydraulic.com.cn/wp-content/uploads/2023/02/c2157f72ca120642.jpg)
給出代碼后,我們需要運(yùn)行代碼,看它是否能正常運(yùn)行。如果不能正常運(yùn)行,有錯(cuò)誤會(huì)提供錯(cuò)誤報(bào)告。如果沒有報(bào)錯(cuò),我們需要盡可能詳細(xì)地描述頁面的情況并給出反饋。
我們認(rèn)為這里沒有得到“確認(rèn)”二字,導(dǎo)致彈出窗口后跳轉(zhuǎn)到其他頁面。
![圖片[5]-抖音批量取關(guān)| 全網(wǎng)首發(fā) | 使用ChatGPT寫一個(gè)自動(dòng)化JS腳本-資源網(wǎng)站](http://www.oilmaxhydraulic.com.cn/wp-content/uploads/2023/02/df6632c146120825.jpg)
// 獲取指定位置的 "取消關(guān)注" 按鈕并點(diǎn)擊
function cancelFollow(index) {
const cancelBtn = document.querySelectorAll('a[style="color: rgb(22, 24, 35); font-weight: 600; cursor: pointer;"]')[index];
if (cancelBtn) {
cancelBtn.click();
setTimeout(() => {
const confirmBtns = document.querySelectorAll('button.semi-button-primary');
if (confirmBtns.length > 0) {
for (let i = 0; i < confirmBtns.length; i++) {
const btnText = confirmBtns[i].innerText.trim();
if (btnText === "確認(rèn)") {
confirmBtns[i].click();
setTimeout(() => {
// 判斷是否已經(jīng)取消了所有用戶的關(guān)注
const newCancelBtns = document.querySelectorAll('a[style="color: rgb(22, 24, 35); font-weight: 600; cursor: pointer;"]');
if (newCancelBtns.length > 0) {
cancelFollow(index);
} else {
console.log("全部用戶已取消關(guān)注");
// 刷新頁面并重新執(zhí)行取消關(guān)注流程
setTimeout(() => {
location.reload();
}, 1000);
}
}, 1000);
return;
}
}
}
// 點(diǎn)擊完當(dāng)前取消關(guān)注后,重新查找新的取消關(guān)注按鈕并執(zhí)行相應(yīng)操作
const newCancelBtns = document.querySelectorAll('a[style="color: rgb(22, 24, 35); font-weight: 600; cursor: pointer;"]');
if (newCancelBtns.length > 0) {
cancelFollow(index === 2 ? 1 : 2);
} else {
console.log("全部用戶已取消關(guān)注");
// 刷新頁面并重新執(zhí)行取消關(guān)注流程
setTimeout(() => {
location.reload();
}, 1000);
}
}, 1000);
} else {
console.log("沒有找到“取消關(guān)注”按鈕");
// 刷新頁面并重新執(zhí)行取消關(guān)注流程
setTimeout(() => {
location.reload();
}, 1000);
}
}
// 執(zhí)行取消關(guān)注流程
cancelFollow(2);
繼續(xù)測(cè)試,發(fā)現(xiàn)基本邏輯可以實(shí)現(xiàn),但是現(xiàn)在會(huì)出現(xiàn)一個(gè)問題:
即頁面上有10個(gè)按鈕,它會(huì)依次點(diǎn)擊1、2、3、4、5、6、7、8、9、10個(gè)按鈕,無法獲得新的。
相當(dāng)于現(xiàn)在的代碼可以取消一個(gè)頁面的關(guān)注,但是我們需要的是取消每個(gè)頁面的關(guān)注。
我們可以考慮一個(gè)折中的辦法,每次點(diǎn)擊第一個(gè)或第二個(gè)標(biāo)簽代碼。
![圖片[6]-抖音批量取關(guān)| 全網(wǎng)首發(fā) | 使用ChatGPT寫一個(gè)自動(dòng)化JS腳本-資源網(wǎng)站](http://www.oilmaxhydraulic.com.cn/wp-content/uploads/2023/02/f7f8b4b7db121002.jpg)
修改一下代碼
// 獲取第一個(gè) "取消關(guān)注" 按鈕并點(diǎn)擊
function cancelFollow() {
const cancelBtn = window.document.getElementsByTagName('a')[2];
if (cancelBtn) {
cancelBtn.click();
setTimeout(() => {
const confirmBtns = document.querySelectorAll('button.semi-button-primary');
if (confirmBtns.length > 0) {
for (let i = 0; i < confirmBtns.length; i++) {
const btnText = confirmBtns[i].innerText.trim();
if (btnText === "確認(rèn)") {
confirmBtns[i].click();
setTimeout(() => {
cancelFollow();
}, 1000);
return;
}
}
}
// 點(diǎn)擊完第一個(gè)取消關(guān)注后,重新查找新的取消關(guān)注按鈕并執(zhí)行相應(yīng)操作
setTimeout(() => {
cancelFollow();
}, 1000);
}, 1000);
} else {
console.log("全部用戶已取消關(guān)注");
}
}
// 執(zhí)行取消關(guān)注流程
cancelFollow();
這里可以進(jìn)行延遲優(yōu)化
// 點(diǎn)擊完第一個(gè)取消關(guān)注后,重新查找新的取消關(guān)注按鈕并執(zhí)行相應(yīng)操作
setTimeout(() => {
cancelFollow();
}, 1000);
}, 1000);
} else {
console.log("全部用戶已取消關(guān)注");
}
我們可以把1000改成500,提高點(diǎn)擊確認(rèn)的速度。
// 點(diǎn)擊完第一個(gè)取消關(guān)注后,重新查找新的取消關(guān)注按鈕并執(zhí)行相應(yīng)操作
setTimeout(() => {
cancelFollow();
}, 1000);
}, 500);
} else {
console.log("全部用戶已取消關(guān)注");
}
暫無評(píng)論內(nèi)容