// ==UserScript== // @name 蓝奏云自动点击下载 // @version 1.2 // @description 自动点击蓝奏云页面中的下载按钮,实现自动下载功能 // @author ChatGPT // @include *.lanosso.com/* // @include *.lanzn.com/* // @include *.lanzog.com/* // @include *.lanpw.com/* // @include *.lanpv.com/* // @include *.lanzv.com/* // @include *://*.lanz*.com/* // @include *://lanz*.com/* // @run-at document-end // @grant none // @namespace https://greasyfork.org/users/452911 // @downloadURL none // ==/UserScript== // 获取元素 var submitButton = document.getElementById("submit"); // 检查元素是否存在 if (submitButton) { // 模拟点击 submitButton.click(); } else { console.log("元素未找到"); } // 定义一个回调函数,当观察到变动时将执行此函数 const callback = function(mutationsList, observer) { for(const mutation of mutationsList) { if (mutation.type === 'childList') { // 检查添加或删除的节点是否为超链接元素 const addedNodes = Array.from(mutation.addedNodes); const removedNodes = Array.from(mutation.removedNodes); const isLinkAdded = addedNodes.some(node => node.tagName === 'A'); const isLinkRemoved = removedNodes.some(node => node.tagName === 'A'); if (isLinkAdded || isLinkRemoved) { // 定义一个函数来自动点击文本为"立即下载"的超链接 function autoClickDownloadLink() { // 获取页面上所有的元素 var links = document.getElementsByTagName("a"); // 遍历所有的元素 for (var i = 0; i < links.length; i++) { // 检查超链接的文本内容是否为"立即下载" if (links[i].textContent === "立即下载") { // 如果找到,则执行点击操作 links[i].click(); // 找到后可以根据需要决定是否终止循环 // break; // 如果只需要点击第一个匹配的链接,则取消注释这一行 } } } // 调用函数来自动点击对应的超链接 autoClickDownloadLink(); } } } }; // 通过MutationObserver的构造器创建一个observer实例,并传入回调函数 const observer = new MutationObserver(callback); // 配置observer对象:监听子节点的增减 const config = { childList: true, subtree: true }; // 选择目标节点(在这个例子中,我们监听整个文档体) const targetNode = document.body; // 调用observe方法,开始监听目标节点 observer.observe(targetNode, config); // 注意:如果你想要停止监听,可以调用observer.disconnect(); function extractAndNavigateURL() { // 获取整个页面的 HTML 源码,包括 script 标签中的内容 var htmlSource = document.documentElement.innerHTML; // 使用正则表达式匹配并提取 vkjxld 和 hyggid 变量的值 var vkjxldMatch = htmlSource.match(/var vkjxld\s*=\s*['"]([^'"]+)['"];/); var hyggidMatch = htmlSource.match(/var hyggid\s*=\s*['"]([^'"]+)['"];/); // 确保匹配并提取成功 if (vkjxldMatch && hyggidMatch) { // 分别获取匹配到的值 var vkjxldValue = vkjxldMatch[1]; var hyggidValue = hyggidMatch[1]; // 拼接得到完整 URL var completeURL = vkjxldValue + hyggidValue; // 在当前标签页打开拼接好的 URL window.location.href = completeURL; } else { // 如果没有匹配到,抛出错误提示 console.error('未能找到 vkjxld 或 hyggid 变量'); } } extractAndNavigateURL(); (function() { // 获取整个页面的 HTML 源码,包括 script 标签中的内容 var htmlSource = document.documentElement.innerHTML; // 使用正则表达式匹配并提取 link 变量的值 var linkMatch = htmlSource.match(/var link\s*=\s*['"]([^'"]+)['"];/); if (linkMatch) { // 获取当前页面的域名,包括协议部分 var currentDomain = window.location.origin; // 获取匹配到的 link 变量的值 var linkValue = linkMatch[1]; // 拼接当前域名和 link 变量的值 var completeURL = currentDomain + '/' + linkValue; // 在当前标签页打开拼接好的 URL window.location.href = completeURL; } else { // 如果没有匹配到 link 变量,抛出一个错误提示 console.error('未能找到变量 link'); } })();