// ==UserScript== // @name 脚本猫脚本/网站/插件推荐助手(持续更新中......) // @namespace http://scriptcat.org // @version 1.9900.000.0 // @description 脚本猫上好用脚本推荐工具,弹窗展示+黑名单避雷###(敲重点:安装后并非没有窗口,浏览器右下角会出现紫色按钮,点击即可弹出窗口。) // @author ScriptCat User // @match *://*/* // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @license MIT // ==/UserScript== (function() { 'use strict'; // 推荐数据 - 按你提供的最新内容修改 const recommendData = `1. 学习通(刷课/视频+刷题): 编号:00001 类型:教育类 网址:https://scriptcat.org/zh-CN/script-show-page/2453 使用教程:待更新...... [说明:暂无......] 2. 各种文库下载器(打勾可用,打叉不可用): 编号:10001 类型:办公类、教育类 网址:https://scriptcat.org/zh-CN/script-show-page/2787 使用教程:待更新...... 适用范围:百度文库√...... [说明:测试了部分网站,其他网站待测试......] 3. 小红书优化: 编号:20001 类型:浏览器优化类 网址:https://scriptcat.org/zh-CN/script-show-page/2538 使用教程:待更新...... [说明:暂无......] 4. BZ综合网页搜索脚本: 编号:30001 类型:工具类 网址:https://scriptcat.org/zh-CN/script-show-page/3006 使用教程:待更新...... [说明:暂无......] 5.智能翻译助手: 编号:30002 类型:工具类 网址:https://scriptcat.org/zh-CN/script-show-page/5633 使用教程:无 缺点:就是切换语言翻译完,语言选项也跟着翻译了,万一翻译成的语言中文不认识怎么切回简体中文?逻辑有点问题 [说明:按钮在屏幕左上角] 6.VPN: 编号:20002 类型:网络加速类 网址:https://microsoftedge.microsoft.com/addons/detail/vpn/dalhgafbhpdolibignjckpmiejgfddjp 使用教程:待更新...... [说明:PC端edge上好用,移动端edge不好用] 7.iTab新标签页: 编号:30003 类型:浏览器优化类 网址:https://microsoftedge.microsoft.com/addons/detail/itab%E6%96%B0%E6%A0%87%E7%AD%BE%E9%A1%B5/inedkoakiaeepjoblbiiipedngonadhn 用途:iTab 组件式图标自定义您的浏览器的标签页,精美日历、炫酷天气、每日头条、海量壁纸、常用网址随心订制等 (大白话:改善edge主页的一个好东西,有各种小组件、实用功能/网站、壁纸等) 使用教程:待更新...... [说明:暂无......] 8.微软积分商城签到(改进版): 编号:30004 类型:实用工具类 网址:https://scriptcat.org/zh-CN/script-show-page/5559 用途:每天在后台自动完成 Microsoft Rewards 任务获取积分奖励,✅签入、✅阅读、✅活动、✅搜索 使用教程:待更新...... [说明:暂无......] 9.短视频榜单: 编号:40001 类型:资讯休闲类 网址:https://www.xinpianchang.com/discover/article 用途:查看热门短视频榜单 使用教程:无 [说明:暂无......] 10.《城市租房生存指南》: 编号:40002 类型:生活实用类 网址:https://zufang.ababtools.com/ 用途:找到一个称心如意的窝,咱们得先学会找房子的门道 使用教程:①进网址后点击开始阅读,其他的不要乱点,可能是垃圾广告/网站,下边有目录,可以点击跳转对应页面阅读, ②进网址后点下载电子书,可以微信扫码,查看更多内容,支付一块钱可以下载到本地保存查看/打印出来查看 ③1块钱看你们自己了,萝卜青菜各有所爱 ④...... [说明:暂无......] 黑名单: 1.抖音优化:https://scriptcat.org/zh-CN/script-show-page/2534 2.超星学习通九九助手[AI答题][一键启动][最小化运行]:https://scriptcat.org/zh-CN/script-show-page/1127 3.右键链接复制器 增强版:https://scriptcat.org/zh-CN/script-show-page/5967#google_vignette 4.【最强无套路脚本】你能看见多少我能下载多少&下载公开免费的PPT、PDF、DOC、TXT等文件:https://scriptcat.org/zh-CN/script-show-page/3046 [说明:安装运行后,没有后台运行,没有前端弹窗,不会用,脚本说明看了也不会用,没招了] 5.重要事件倒计时:https://scriptcat.org/zh-CN/script-show-page/1506 [说明:安装运行后,右上角有几行字,"倒计时结束,请重新设置"之类的话,但是没有设置按钮,用不了]`; // 解析数据 - 修复所有字段解析问题(支持多行用途/教程、字段顺序不固定) function parseData(text) { const scripts = []; const blacklist = []; const lines = text.split('\n'); let currentScript = null; let inBlacklist = false; let multiLineMode = null; // 用于处理多行字段:'purpose'/'tutorial'/null lines.forEach((line) => { const trimmedLine = line.trim(); if (!trimmedLine && !multiLineMode) return; // 空行跳过(多行模式下不跳过) // 检测黑名单开始 if (trimmedLine === '黑名单:') { inBlacklist = true; multiLineMode = null; return; } // 处理黑名单 if (inBlacklist) { const match = trimmedLine.match(/(\d+)\.(.*?):(https:\/\/\S+)/); if (match) { blacklist.push({ name: match[2].trim(), url: match[3], note: '' }); } else if (trimmedLine.startsWith('[说明:') && blacklist.length > 0) { blacklist[blacklist.length - 1].note = trimmedLine.substring(3, trimmedLine.length - 1).trim(); } return; } // 处理推荐脚本 const newScriptMatch = trimmedLine.match(/^(\d+)\.\s*(.+?)(:|$)/); if (newScriptMatch) { // 保存上一个脚本 if (currentScript) scripts.push(currentScript); // 创建新脚本 currentScript = { id: newScriptMatch[1], name: newScriptMatch[2].trim(), number: '', url: '', tutorial: '', scope: '', note: '暂无......', purpose: '', 缺点: '', type: '其他' }; multiLineMode = null; return; } if (!currentScript) return; // 处理多行字段的补充内容 if (multiLineMode) { // 遇到新的属性行时,退出多行模式 if (trimmedLine.startsWith('编号:') || trimmedLine.startsWith('类型:') || trimmedLine.startsWith('网址:') || trimmedLine.startsWith('用途:') || trimmedLine.startsWith('使用教程:') || trimmedLine.startsWith('缺点:') || trimmedLine.startsWith('适用范围:') || trimmedLine.startsWith('[说明:')) { multiLineMode = null; } else if (trimmedLine.startsWith('(大白话:')) { // 大白话属于用途的补充,直接拼接 currentScript.purpose += '\n' + trimmedLine.substring(4, trimmedLine.length - 1).trim(); return; } else { // 追加到当前多行字段 if (multiLineMode === 'purpose') currentScript.purpose += '\n' + trimmedLine; if (multiLineMode === 'tutorial') currentScript.tutorial += '\n' + trimmedLine; return; } } // 解析单个属性行 if (trimmedLine.startsWith('编号:')) { currentScript.number = trimmedLine.replace('编号:', '').trim(); } else if (trimmedLine.startsWith('类型:')) { currentScript.type = trimmedLine.replace('类型:', '').trim(); } else if (trimmedLine.startsWith('网址:')) { currentScript.url = trimmedLine.replace('网址:', '').trim(); } else if (trimmedLine.startsWith('用途:')) { currentScript.purpose = trimmedLine.replace('用途:', '').trim(); multiLineMode = 'purpose'; // 进入用途多行模式 } else if (trimmedLine.startsWith('使用教程:')) { currentScript.tutorial = trimmedLine.replace('使用教程:', '').trim(); multiLineMode = 'tutorial'; // 进入教程多行模式 } else if (trimmedLine.startsWith('适用范围:')) { currentScript.scope = trimmedLine.replace('适用范围:', '').trim(); } else if (trimmedLine.startsWith('缺点:')) { currentScript.缺点 = trimmedLine.replace('缺点:', '').trim(); } else if (trimmedLine.startsWith('[说明:') && trimmedLine.endsWith(']')) { currentScript.note = trimmedLine.substring(3, trimmedLine.length - 1).trim(); } }); // 保存最后一个脚本 if (currentScript) scripts.push(currentScript); return { scripts, blacklist }; } const { scripts, blacklist } = parseData(recommendData); // 添加样式(优化多行文本显示) GM_addStyle(` /* 全局样式重置 */ .script-rec-modal, .script-rec-btn, .script-rec-window { box-sizing: border-box; } /* 悬浮按钮 */ .script-rec-btn { position: fixed; bottom: 30px; right: 30px; width: 60px; height: 60px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-radius: 50%; border: none; color: white; font-size: 24px; cursor: pointer; box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4); z-index: 999999; transition: all 0.3s ease; display: flex; align-items: center; justify-content: center; } .script-rec-btn:hover { transform: scale(1.1); box-shadow: 0 6px 20px rgba(102, 126, 234, 0.6); } /* 模态窗口背景 */ .script-rec-modal { display: none; position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(0, 0, 0, 0.5); z-index: 999999; justify-content: center; align-items: center; backdrop-filter: blur(5px); } .script-rec-modal.active { display: flex; } /* 窗口 */ .script-rec-window { background: white; width: 90vw; max-width: 800px; max-height: 85vh; border-radius: 16px; overflow: hidden; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3); display: flex; flex-direction: column; } /* 窗口头部 */ .script-rec-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 20px 25px; display: flex; justify-content: space-between; align-items: center; } .script-rec-title { font-size: 20px; font-weight: 600; display: flex; align-items: center; gap: 10px; } .script-rec-header-buttons { display: flex; gap: 10px; align-items: center; } .script-rec-developer-button { background: rgba(255,255,255,0.2); border: none; color: white; padding: 8px 16px; border-radius: 20px; cursor: pointer; font-size: 13px; font-weight: 500; transition: all 0.2s ease; } .script-rec-developer-button:hover { background: rgba(255,255,255,0.3); } .script-rec-close { background: rgba(255,255,255,0.2); border: none; color: white; width: 36px; height: 36px; border-radius: 50%; cursor: pointer; font-size: 20px; display: flex; align-items: center; justify-content: center; transition: all 0.2s ease; } .script-rec-close:hover { background: rgba(255,255,255,0.3); } /* 窗口内容 */ .script-rec-body { flex: 1; overflow-y: auto; padding: 25px; } /* 搜索栏 */ .script-rec-search { margin-bottom: 20px; width: 100%; } .script-rec-search input { width: 100%; padding: 14px 18px; border: 2px solid #e0e0e0; border-radius: 12px; font-size: 15px; outline: none; transition: all 0.3s ease; background: white; box-sizing: border-box; } .script-rec-search input:focus { border-color: #667eea; box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); } /* 类型筛选标签 */ .script-rec-type-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; } .script-rec-type-tab { padding: 8px 16px; border: 1px solid #e0e0e0; border-radius: 20px; background: white; cursor: pointer; font-size: 13px; transition: all 0.3s ease; color: #555; } .script-rec-type-tab:hover { border-color: #667eea; color: #667eea; } .script-rec-type-tab.active { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-color: #667eea; color: white; } .script-rec-blacklist-tab { background: #fff3cd; border-color: #ffeeba; color: #856404; } .script-rec-blacklist-tab:hover { background: #ffeeba; border-color: #ffc107; color: #856404; } /* 脚本列表 */ .script-rec-list { display: grid; gap: 15px; } /* 脚本项 */ .script-rec-item { background: #f8f9fa; border: 2px solid transparent; border-radius: 12px; padding: 18px; transition: all 0.3s ease; cursor: pointer; } .script-rec-item:hover { border-color: #667eea; transform: translateY(-2px); box-shadow: 0 8px 25px rgba(102, 126, 234, 0.15); } /* 脚本头部 */ .script-rec-item-header { display: flex; justify-content: space-between; align-items: start; margin-bottom: 10px; } .script-rec-item-name { font-size: 17px; font-weight: 600; color: #333; } .script-rec-item-number { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 4px 12px; border-radius: 15px; font-size: 13px; font-weight: 600; } /* 脚本信息 - 优化多行文本显示 */ .script-rec-item-info { margin-top: 10px; } .script-rec-item-row { display: flex; margin-bottom: 8px; font-size: 14px; line-height: 1.6; } .script-rec-item-label { color: #888; min-width: 80px; flex-shrink: 0; /* 防止标签被压缩 */ } .script-rec-item-value { color: #555; flex: 1; white-space: pre-line; /* 支持换行符显示多行文本 */ word-break: break-word; /* 长文本自动换行 */ } /* 脚本说明 */ .script-rec-item-note { background: #fff3cd; padding: 10px 14px; border-radius: 8px; margin-top: 12px; font-size: 13px; color: #856404; line-height: 1.5; } /* 脚本操作按钮 */ .script-rec-item-actions { display: flex; gap: 10px; margin-top: 15px; } .script-rec-btn-primary { flex: 1; padding: 12px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none; border-radius: 8px; cursor: pointer; font-weight: 600; font-size: 14px; transition: all 0.2s ease; } .script-rec-btn-primary:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(102, 126, 234, 0.4); } .script-rec-btn-secondary { padding: 12px 20px; background: #e9ecef; color: #555; border: none; border-radius: 8px; cursor: pointer; font-weight: 500; font-size: 14px; transition: all 0.2s ease; } .script-rec-btn-secondary:hover { background: #dee2e6; } /* 无结果提示 */ .script-rec-no-result { text-align: center; padding: 50px 20px; color: #888; } .script-rec-no-result-icon { font-size: 60px; margin-bottom: 15px; } /* 分类标题 */ .script-rec-section-title { font-size: 16px; font-weight: 600; color: #333; margin: 25px 0 15px; padding-bottom: 10px; border-bottom: 2px solid #e0e0e0; } /* 黑名单项 */ .script-rec-blacklist-item { background: #f8d7da; border: 1px solid #f5c6cb; border-radius: 8px; padding: 15px; margin-bottom: 10px; display: flex; flex-direction: column; gap: 10px; } .script-rec-blacklist-content { display: flex; justify-content: space-between; align-items: center; } .script-rec-blacklist-name { color: #721c24; font-weight: 500; } .script-rec-blacklist-badge { background: #dc3545; color: white; padding: 3px 10px; border-radius: 12px; font-size: 12px; } .script-rec-blacklist-actions { display: flex; gap: 8px; justify-content: flex-end; } .script-rec-blacklist-btn { border: none; padding: 6px 12px; border-radius: 6px; cursor: pointer; font-size: 12px; font-weight: 500; } .script-rec-blacklist-btn-primary { background: #dc3545; color: white; } .script-rec-blacklist-btn-primary:hover { background: #c82333; } .script-rec-blacklist-btn-secondary { background: #6c757d; color: white; } .script-rec-blacklist-btn-secondary:hover { background: #5a6268; } .script-rec-blacklist-note { font-size: 12px; color: #6c757d; margin: 8px 0; line-height: 1.4; } /* 统计信息 */ .script-rec-stats { display: flex; gap: 20px; margin-bottom: 20px; padding: 15px; background: #f8f9fa; border-radius: 10px; } .script-rec-stat { text-align: center; } .script-rec-stat-value { font-size: 24px; font-weight: 700; color: #667eea; } .script-rec-stat-label { font-size: 12px; color: #888; margin-top: 4px; } /* 滚动条 */ .script-rec-body::-webkit-scrollbar { width: 8px; } .script-rec-body::-webkit-scrollbar-track { background: #f1f1f1; } .script-rec-body::-webkit-scrollbar-thumb { background: #c1c1c1; border-radius: 4px; } .script-rec-body::-webkit-scrollbar-thumb:hover { background: #a8a8a8; } /* 响应式设计 */ @media (max-width: 768px) { .script-rec-window { width: 95vw; max-height: 90vh; } .script-rec-btn { bottom: 20px; right: 20px; } } /* 开发者寄语弹窗 */ .script-rec-developer-popup { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(0, 0, 0, 0.5); z-index: 9999999; display: flex; justify-content: center; align-items: center; } .script-rec-developer-content { background: white; width: 85vw; max-width: 500px; border-radius: 12px; overflow: hidden; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); } .script-rec-developer-header { background: #667eea; color: white; padding: 15px 20px; display: flex; justify-content: space-between; align-items: center; } .script-rec-developer-header h3 { margin: 0; font-size: 16px; font-weight: 600; } .script-rec-developer-close { font-size: 20px; cursor: pointer; } .script-rec-developer-body { padding: 20px; max-height: 60vh; overflow-y: auto; } .script-rec-developer-body p { margin: 10px 0; line-height: 1.5; color: #333; font-size: 14px; } .script-rec-developer-footer { padding: 15px 20px; background: #f5f5f5; text-align: center; } .script-rec-developer-btn { background: #667eea; color: white; border: none; padding: 10px 25px; border-radius: 6px; cursor: pointer; font-weight: 600; font-size: 14px; } .script-rec-developer-btn:hover { background: #5a6fd8; } `); // 创建UI function createUI() { // 创建悬浮按钮 const btn = document.createElement('button'); btn.className = 'script-rec-btn'; btn.innerHTML = '📋'; btn.title = '脚本推荐'; document.body.appendChild(btn); // 创建模态窗口 const modal = document.createElement('div'); modal.className = 'script-rec-modal'; modal.innerHTML = `
🐱 脚本推荐
${scripts.length}
推荐脚本
${blacklist.length}
黑名单
`; document.body.appendChild(modal); // 绑定事件 btn.addEventListener('click', () => { showDeveloperMessage(); modal.classList.add('active'); const searchInput = modal.querySelector('#script-rec-search'); if (searchInput) searchInput.value = ''; renderScripts(); }); modal.querySelector('.script-rec-close').addEventListener('click', () => { const searchInput = modal.querySelector('#script-rec-search'); if (searchInput) searchInput.value = ''; modal.classList.remove('active'); }); // 绑定开发者的话按钮事件 modal.querySelector('.script-rec-developer-button').addEventListener('click', () => { GM_setValue('developerMessageShown', false); showDeveloperMessage(); }); // 搜索功能 modal.querySelector('#script-rec-search').addEventListener('input', (e) => { renderScripts(e.target.value.trim().toLowerCase()); }); } // 获取所有类型 function getTypes() { return ['全部', '教育类', '办公类', '浏览器优化类', '工具类', '网络加速类', '实用工具类', '资讯休闲类', '生活实用类', '其他']; } // 当前选中的类型 let currentType = '全部'; // 渲染脚本 function renderScripts(searchQuery = '', selectedType = currentType) { const container = document.querySelector('#script-rec-container'); if (!container) return; let html = ''; // 渲染类型筛选按钮 const types = getTypes(); html += `
${types.map(type => ` `).join('')} ${blacklist.length > 0 ? ` ` : ''}
`; // 过滤脚本 let filteredScripts = scripts; if (searchQuery) { filteredScripts = scripts.filter(script => script.name.toLowerCase().includes(searchQuery) || script.number.includes(searchQuery) ); } if (selectedType !== '全部') { filteredScripts = filteredScripts.filter(script => script.type === selectedType); } // 渲染推荐脚本 if (filteredScripts.length > 0) { html += `
📌 推荐脚本
`; html += `
`; html += filteredScripts.map(script => `
${highlight(script.name, searchQuery)}
#${highlight(script.number, searchQuery)}
${script.type && script.type !== '其他' ? `
类型: ${script.type}
` : ''} ${script.scope ? `
适用范围: ${script.scope}
` : ''} ${script.purpose ? `
用途: ${script.purpose}
` : ''}
使用教程: ${script.tutorial || '暂无......'}
${script.缺点 ? `
缺点: ${script.缺点}
` : ''}
💡 ${script.note}
`).join(''); html += `
`; } else if (searchQuery || selectedType !== '全部') { html += `
🔍
未找到匹配的脚本
试试其他关键词或类型
`; } // 渲染黑名单(只在"全部"类型时显示) if (blacklist.length > 0 && selectedType === '全部') { let filteredBlacklist = blacklist; if (searchQuery) { filteredBlacklist = blacklist.filter(item => item.name.toLowerCase().includes(searchQuery)); } if (filteredBlacklist.length > 0) { html += `
⚠️ 黑名单(不推荐)
`; html += filteredBlacklist.map(item => `
${highlight(item.name, searchQuery)} 不推荐
${item.note ? `
${item.note.replace(/^:/, '')}
` : ''}
`).join(''); } } container.innerHTML = html; // 绑定按钮事件 container.querySelectorAll('.script-rec-btn-primary, .script-rec-blacklist-btn-primary').forEach(btn => { btn.addEventListener('click', (e) => { e.stopPropagation(); window.open(btn.dataset.url, '_blank'); }); }); container.querySelectorAll('.script-rec-btn-secondary, .script-rec-blacklist-btn-secondary').forEach(btn => { btn.addEventListener('click', (e) => { e.stopPropagation(); copyLink(btn.dataset.url); }); }); // 绑定类型筛选事件 container.querySelectorAll('.script-rec-type-tab').forEach(tab => { tab.addEventListener('click', (e) => { e.stopPropagation(); const type = tab.dataset.type; if (type) { currentType = type; renderScripts('', type); } else if (tab.id === 'script-rec-blacklist-tab') { currentType = '全部'; renderScripts('', '全部'); setTimeout(() => { container.querySelector('.script-rec-blacklist-item')?.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } }); }); } // 高亮搜索词 function highlight(text, query) { if (!query) return text; return text.replace(new RegExp(`(${escapeRegExp(query)})`, 'gi'), '$1'); } function escapeRegExp(string) { return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); } // 复制链接 function copyLink(url) { navigator.clipboard.writeText(url).then(() => { alert('链接已复制到剪贴板!'); }).catch(() => { const textarea = document.createElement('textarea'); textarea.value = url; document.body.appendChild(textarea); textarea.select(); document.execCommand('copy'); document.body.removeChild(textarea); alert('链接已复制到剪贴板!'); }); } // 显示开发者寄语弹窗 function showDeveloperMessage() { if (GM_getValue('developerMessageShown', false)) return; const popup = document.createElement('div'); popup.className = 'script-rec-developer-popup'; popup.innerHTML = `

开发者寄语

×

大家好,我是本脚本开发者,也是长期使用脚本猫的普通用户。

日常使用中发现平台脚本质量参差不齐,找实用脚本需要反复试错、浪费时间,因此我开发了这款工具:只推荐**实测好用**的优质脚本,同时拉黑劣质脚本,帮大家快速避坑、节省时间。

所有推荐脚本均经过亲自实测验证,稳定靠谱;脚本黑名单也会根据用户反馈和后续实测持续更新,欢迎大家积极反馈补充优劣脚本信息。

我的初心:让每位脚本猫用户都能轻松找到好用脚本,不用盲目筛选浪费精力,提升使用体验。后续会跟随脚本猫版本和大家需求,持续优化功能,感谢支持与使用❤️

联系方式:625716806 [(QQ,加好友请备注来意)]

QQ群:1067225399
[欢迎进群交流闲聊一切,但要合法合规(加群请备注来意,另外加群成功记得按照要求改名哦)]

`; document.body.appendChild(popup); popup.querySelector('.script-rec-developer-close').addEventListener('click', () => { document.body.removeChild(popup); GM_setValue('developerMessageShown', true); }); popup.querySelector('.script-rec-developer-btn').addEventListener('click', () => { document.body.removeChild(popup); GM_setValue('developerMessageShown', true); }); } // 初始化 function init() { if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', createUI); } else { createUI(); } } // 启动 init(); })();