您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
自动获取所有粉丝名字
当前为
// ==UserScript== // @name CC98查询粉丝的变动 // @namespace http://tampermonkey.net/ // @version 4.6 // @description 自动获取所有粉丝名字 // @author Lay // @match https://www.cc98.org/usercenter/myfans // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @license AGPL -3.0 // @grant GM_xmlhttpRequest // ==/UserScript== (function () { 'use strict'; // 提取总页数 function getTotalPages() { const pageCountElement = document.querySelector('#userCenterPageCount ul'); let totalPages = 0; if (pageCountElement) { const pageItems = pageCountElement.querySelectorAll('li'); totalPages = pageItems.length; console.log(`总页数: ${totalPages}`); } else { console.error('无法找到总页数元素'); } return totalPages; } // 获取所有分页链接 function getAllPageLinks() { const baseUrl = window.location.origin; const currentPath = '/usercenter/myfans'; // 确保路径总是 /usercenter/myfans const totalPages = getTotalPages(); if (totalPages === 0) { console.error("未能获取到总页数,请检查 DOM 结构或页面加载情况。"); return []; } let links = []; for (let i = 1; i <= totalPages; i++) { links.push(`${baseUrl}${currentPath}/${i}`); } console.log("生成的分页链接:", links); return links; } // 提取粉丝信息 function getFansFromCurrentPage(doc) { let fanElements = doc.querySelectorAll('.user-center-myfollowings-user'); let fans = Array.from(fanElements).map(el => { let name = el.querySelector('.user-center-myfollowings-user-id a').textContent.trim(); let posts = el.querySelector('.user-center-myfollowings-user-posts').textContent.trim(); let followers = el.querySelector('.user-center-myfollowings-user-fans').textContent.trim(); return { name, posts, followers }; }); console.log("当前页粉丝信息:", fans); return fans; } // 获取存储的粉丝数据 function getStoredFans() { const storedFans = localStorage.getItem('fansData'); return storedFans ? JSON.parse(storedFans) : []; } // 存储粉丝数据 function storeFans(fans) { localStorage.setItem('fansData', JSON.stringify(fans)); } // 比较当前粉丝和上次存储的粉丝数据 function compareFans(currentFans, storedFans) { let added = []; let removed = []; // 查找新增粉丝 currentFans.forEach(currentFan => { if (!storedFans.some(storedFan => storedFan.name === currentFan.name)) { added.push(currentFan); } }); // 查找移除的粉丝 storedFans.forEach(storedFan => { if (!currentFans.some(currentFan => currentFan.name === storedFan.name)) { removed.push(storedFan); } }); console.log('新增粉丝:', added); console.log('移除粉丝:', removed); } // 抓取所有粉丝信息 async function scrapeAllFans() { let allFans = []; let links = getAllPageLinks(); for (let i = 0; i < links.length; i++) { console.log(`正在抓取第 ${i + 1} 页...`); let doc = await fetchPage(links[i]); let fans = getFansFromCurrentPage(doc); allFans = allFans.concat(fans); } console.log("所有粉丝信息:", allFans); storeFans(allFans); // 存储粉丝信息 let storedFans = getStoredFans(); // 获取上次存储的粉丝信息 compareFans(allFans, storedFans); // 比较新增和移除的粉丝 } // 模拟页面抓取 async function fetchPage(url) { return new Promise((resolve, reject) => { GM_xmlhttpRequest({ method: "GET", url: url, onload: function (response) { if (response.status === 200) { let parser = new DOMParser(); let doc = parser.parseFromString(response.responseText, 'text/html'); resolve(doc); } else { reject(`Failed to fetch page: ${url}`); } }, onerror: function () { reject(`Error fetching page: ${url}`); } }); }); } // 延迟执行 setTimeout(function () { console.log("脚本已延迟执行"); scrapeAllFans(); }, 1000); // 延迟 1000 毫秒 (1秒) })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址