首页
关于
搜索
1
subStore折腾记录
1 阅读
2
Typecho通用悬浮目录插件
1 阅读
3
为什么你老是能收到骚扰信息?是你没开这个!
0 阅读
4
Mac删除自带的ABC输入法,输入体验升级
0 阅读
5
Mac新版微信多开,已稳定3个月以上
0 阅读
默认分类
爱分享
登录
搜索
Evan
累计撰写
5
篇文章
累计收到
0
条评论
首页
栏目
默认分类
爱分享
页面
关于
搜索到
5
篇与
» 爱分享
的结果
2026-03-31
Typecho通用悬浮目录插件
前言我折腾过太多博客系统了,hugo,hexo,WordPress等,最终还是选择了typecho,它的好处很明显,非常的轻量,搭配SQLite用起来真的很爽,而且备份起来也很方便,所有文件一打包就好了,可以说非常使,而且有后端,不会像hugo,hexo这类静态博客系统一样换一台机器就要本地重新配置,WordPress很强大,但是对我们这种个人小博客来说太重了。但由于typecho现在用的人确实不多了,好用的主题和插件也不多,我现在用的是Joe这个主题,其他都挺好的,就是没有目录功能,如果是长文的话对读者非常不友好。在现在这个AI的时候,我就vibe coding了一个悬浮目录的插件,也就是你们现在看到的这个右侧的目录,可能有点小瑕疵,待我后续优化一下使用方法本地建一个Plugin.php的文件将下方的代码copy到这个文件中在你typecho的usr/plugins目录下建一个SmartTOC的目录,这个名字必须要对应上把本地的Plugin.php文件上传到SmartTOC目录下,即可在博客后台看到这个插件了后续我把它打包一下放到github上去,到时候导入起来会方便一些插件代码<?php /** * SmartTOC - 智能悬浮目录插件 * * @package SmartTOC * @author Evan * @version 1.0.0 * @link https://www.evantalk.com */ if (!defined('__TYPECHO_ROOT_DIR__')) exit; class SmartTOC_Plugin implements Typecho_Plugin_Interface { public static function activate() { Typecho_Plugin::factory('Widget_Archive')->footer = array('SmartTOC_Plugin', 'render'); return '插件已激活'; } public static function deactivate() { return '插件已禁用'; } public static function config(Typecho_Widget_Helper_Form $form) { $name = 'offset'; $default = '80'; $label = '顶部偏移量 (px)'; $desc = '点击标题跳转时,距离顶部的像素值(建议设置为:导航栏高度 + 20)'; $offset = new Typecho_Widget_Helper_Form_Element_Text($name, NULL, $default, $label, $desc); $form->addInput($offset); } public static function personalConfig(Typecho_Widget_Helper_Form $form){} public static function render($archive) { if (!$archive->is('single')) { return; } $offsetVal = 80; try { $options = Typecho_Widget::widget('Widget_Options')->plugin('SmartTOC'); if (isset($options->offset) && is_numeric($options->offset)) { $offsetVal = intval($options->offset); } } catch (Exception $e) { $offsetVal = 80; } echo '<style> /* 容器基础样式 */ #smart-toc-container { position: fixed; bottom: 50px; right: 20px; width: 220px; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-radius: 8px; box-shadow: 0 4px 15px rgba(0,0,0,0.15); z-index: 9999; font-size: 14px; color: #333; border: 1px solid #eee; max-height: 400px; display: flex; flex-direction: column; user-select: none; transition: width 0.3s, height 0.3s, border-radius 0.3s; } html[data-theme="dark"] #smart-toc-container, body.dark #smart-toc-container { background: rgba(40, 40, 40, 0.95); color: #eee; border-color: #444; } /* 头部样式 */ #smart-toc-header { padding: 12px 15px; cursor: move; background: #f9f9f9; border-bottom: 1px solid #eee; border-radius: 8px 8px 0 0; font-weight: bold; display: flex; justify-content: space-between; align-items: center; } html[data-theme="dark"] #smart-toc-header, body.dark #smart-toc-header { background: #333; border-bottom-color: #444; } #smart-toc-minimize { cursor: pointer; padding: 0 5px; font-size: 18px; line-height: 1; } /* 列表滚动区 */ #smart-toc-list { padding: 8px 0; overflow-y: auto; margin: 0; list-style: none; scrollbar-width: thin; } #smart-toc-list::-webkit-scrollbar { width: 4px; } #smart-toc-list::-webkit-scrollbar-thumb { background: #ccc; border-radius: 2px; } #smart-toc-list li { margin: 0; line-height: 1.4; padding: 0; } /* --- 核心链接样式 & 缩进系统 --- */ #smart-toc-list a { text-decoration: none; color: inherit; display: block; /* 稍微减小上下间距,使列表更紧凑 */ padding: 5px 12px 5px 0; transition: background 0.2s, color 0.2s; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 13.5px; border-left: 3px solid transparent; position: relative; } #smart-toc-list a:hover { background: rgba(0,0,0,0.05); color: #409eff; } html[data-theme="dark"] #smart-toc-list a:hover { background: rgba(255,255,255,0.1); } /* 激活状态 */ #smart-toc-list a.active { background: rgba(64, 158, 255, 0.1); color: #409eff; border-left: 3px solid #409eff; font-weight: 600; } /* --- 强制缩进规则 (padding-left) --- */ /* H1 (极少用) */ #smart-toc-list a.stoc-h1 { padding-left: 10px; font-weight: 700; } /* H2: 基础缩进 15px */ #smart-toc-list a.stoc-h2 { padding-left: 15px; font-weight: 600; /* 加粗 */ color: #333; } /* H3: 缩进 30px (比H2多15px) */ #smart-toc-list a.stoc-h3 { padding-left: 30px; font-size: 13px; color: #666; } /* H4: 缩进 45px (比H3多15px) */ #smart-toc-list a.stoc-h4 { padding-left: 45px; font-size: 12.5px; color: #888; } /* H5/H6: 如果有,缩进更深 */ #smart-toc-list a.stoc-h5 { padding-left: 60px; font-size: 12px; color: #999; } /* 暗黑模式文字颜色适配 */ html[data-theme="dark"] #smart-toc-list a.stoc-h2 { color: #eee; } html[data-theme="dark"] #smart-toc-list a.stoc-h3 { color: #aaa; } html[data-theme="dark"] #smart-toc-list a.stoc-h4 { color: #888; } /* 最小化圆球 */ #smart-toc-container.minimized { width: 44px; height: 44px; border-radius: 50%; overflow: hidden; cursor: pointer; border: none; box-shadow: 0 4px 10px rgba(0,0,0,0.2); } #smart-toc-container.minimized #smart-toc-header { padding: 0; height: 100%; justify-content: center; background: #409eff; color: white; } #smart-toc-container.minimized .header-title, #smart-toc-container.minimized #smart-toc-list { display: none; } </style>'; $js = '<script> (function() { var USER_OFFSET = ' . $offsetVal . '; function initSmartTOC() { var oldContainer = document.getElementById("smart-toc-container"); if (oldContainer) oldContainer.remove(); var contentSelectors = [".joe_detail__content", ".typecho-post-content", ".entry-content", ".post-content", "article", "#content"]; var contentEl = null; for (var i = 0; i < contentSelectors.length; i++) { var el = document.querySelector(contentSelectors[i]); if (el) { contentEl = el; break; } } if (!contentEl) return; // 扩大抓取范围,支持到 H6 var headers = contentEl.querySelectorAll("h1, h2, h3, h4, h5, h6"); if (headers.length < 2) return; var container = document.createElement("div"); container.id = "smart-toc-container"; var header = document.createElement("div"); header.id = "smart-toc-header"; header.innerHTML = "<span class=\'header-title\'>目录</span><span id=\'smart-toc-minimize\'>-</span>"; var list = document.createElement("ul"); list.id = "smart-toc-list"; headers.forEach(function(h, index) { if (!h.id) h.id = "stoc-" + index; var li = document.createElement("li"); var a = document.createElement("a"); a.href = "#" + h.id; a.innerText = h.innerText; // JS 自动分配类名:stoc-h2, stoc-h3... a.className = "stoc-" + h.tagName.toLowerCase(); a.addEventListener("click", function(e) { e.preventDefault(); var target = document.getElementById(h.id); if(target) { var elementPosition = target.getBoundingClientRect().top; var offsetPosition = elementPosition + window.pageYOffset - USER_OFFSET; window.scrollTo({ top: offsetPosition, behavior: "smooth" }); if(window.innerWidth < 768) container.classList.add("minimized"); } }); li.appendChild(a); list.appendChild(li); }); container.appendChild(header); container.appendChild(list); document.body.appendChild(container); var isDragging = false, startX, startY, initialLeft, initialTop; header.addEventListener("mousedown", dragStart); header.addEventListener("touchstart", dragStart, {passive: false}); function dragStart(e) { if (e.target.id === "smart-toc-minimize") return; isDragging = true; var rect = container.getBoundingClientRect(); container.style.right = "auto"; container.style.bottom = "auto"; container.style.left = rect.left + "px"; container.style.top = rect.top + "px"; if (e.type === "touchstart") { startX = e.touches[0].clientX; startY = e.touches[0].clientY; } else { startX = e.clientX; startY = e.clientY; } initialLeft = rect.left; initialTop = rect.top; document.addEventListener("mousemove", dragMove); document.addEventListener("mouseup", dragEnd); document.addEventListener("touchmove", dragMove, {passive: false}); document.addEventListener("touchend", dragEnd); } function dragMove(e) { if (!isDragging) return; e.preventDefault(); var clientX = (e.type === "touchmove") ? e.touches[0].clientX : e.clientX; var clientY = (e.type === "touchmove") ? e.touches[0].clientY : e.clientY; container.style.left = (initialLeft + (clientX - startX)) + "px"; container.style.top = (initialTop + (clientY - startY)) + "px"; } function dragEnd() { isDragging = false; document.removeEventListener("mousemove", dragMove); document.removeEventListener("mouseup", dragEnd); document.removeEventListener("touchmove", dragMove); document.removeEventListener("touchend", dragEnd); } var minBtn = document.getElementById("smart-toc-minimize"); minBtn.addEventListener("click", function(e) { e.stopPropagation(); toggleMinimize(); }); container.addEventListener("click", function(e) { if(container.classList.contains("minimized")) toggleMinimize(); }); function toggleMinimize() { container.classList.toggle("minimized"); var isMin = container.classList.contains("minimized"); if (isMin) { header.innerHTML = "<span style=\'font-size:20px; line-height:44px;\'>≡</span>"; minBtn.textContent = ""; } else { header.innerHTML = "<span class=\'header-title\'>目录</span><span id=\'smart-toc-minimize\'>-</span>"; document.getElementById("smart-toc-minimize").addEventListener("click", function(ev){ ev.stopPropagation(); toggleMinimize(); }); header.addEventListener("mousedown", dragStart); header.addEventListener("touchstart", dragStart, {passive: false}); } } if ("IntersectionObserver" in window) { var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { list.querySelectorAll(".active").forEach(function(a) { a.classList.remove("active"); }); var activeLink = list.querySelector("a[href=\'#" + entry.target.id + "\']"); if (activeLink) { activeLink.classList.add("active"); var linkRect = activeLink.getBoundingClientRect(); var listRect = list.getBoundingClientRect(); if (linkRect.bottom > listRect.bottom || linkRect.top < listRect.top) activeLink.scrollIntoView({ block: "nearest" }); } } }); }, { rootMargin: "-" + USER_OFFSET + "px 0px -70% 0px" }); headers.forEach(function(h) { observer.observe(h); }); } } document.addEventListener("DOMContentLoaded", initSmartTOC); document.addEventListener("pjax:complete", initSmartTOC); document.addEventListener("pjax:end", initSmartTOC); var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(initSmartTOC, 500); } }, 1000); })(); </script>'; echo $js; } }
2026年03月31日
1 阅读
0 评论
0 点赞
2026-01-21
subStore折腾记录
背景介绍我们科学上网的时候,往往会有多个机场,这个时候订阅的管理就非常的麻烦,在以前我一直是每条订阅链接都去通过规则转换的后端去做一下处理,用的基本都是这个站点。https://acl4ssr-sub.github.io/其实也有看到SubStore,但是自己用的感觉还行也一直不知道这个是怎么玩的,那么最近空了一些,就去了解了一下,感觉确实对于多个订阅的管理还是很方便的。能够很好解决我下面2个痛点windows用的是clash,mac用的是surge,如果机场订阅发生更变了,那么两个系统都要去规则转换后去导入,也就是说我有N个订阅发生变化了,我就得转换2N次。多个订阅的节点无法聚合到一块,每次都要手动切换不通的订阅配置才能选对应的节点。这篇文章我就简单的记录一下我是怎么去使用SubStore的,希望能给屏幕的前的你带来一些帮助。SubStore搭建我这里是使用我自己的VPS来部署的,使用的是Docker的方式,如果你不需要多设备去使用,那么只在本地部署也是可以的。这里注意要把唯一标识替换成自己的,可以用工具随机生成一个,这个一定要保存好,并且不要被其他人知道,这就相当于密码,别人知道了就可以过来看你所有的订阅内容。端口如果要改的话,可以把前面的3001换成任意没有被占用的端口。docker run -it -d \ --restart=always \ -e "SUB_STORE_CRON=50 23 * * *" \ -e SUB_STORE_FRONTEND_BACKEND_PATH=/唯一标识 \ -p 127.0.0.1:3001:3001 \ -v /etc/sub-store:/opt/app/data \ --name sub-store \ xream/sub-store(非必须)1panel的安装可以去参考他们官网的教程,比较简单的。https://1panel.cn/在Docker启动后,我们其实就可以访问substore了用服务器部署的话把127.0.0.1换成自己的服务器ip就行了,记得防火墙去把对应的端口对外开放一下。http://127.0.0.1:3001/sub?api=http://127.0.0.1:3001/唯一标识如果有自己的域名也可以去绑定一下,绑定域名后的地址就是http://你的域名/sub?api=http://你的域名/唯一标识订阅配置添加订阅我们进来之后,可以在这里去添加订阅这里就安装要求去填上我们的订阅链接就行了,如果我们有多条订阅,那么就分多次去添加,最后通过组合订阅把他们合在一起。订阅聚合接下来,我们继续点击左上角的➕号,这回选组合订阅这一步很简单,只要把我们想要组合在一起的订阅给他选上就行了。因为不同订阅里的节点的名字不一样,为了方便和美观,这里我们可以统一重命名和加上对应的国旗。https://raw.githubusercontent.com/Keywos/rule/main/rename.js我们拉到下面,选择脚本操作,气质操作,节点排序把我们的上面的链接填到脚本操作里,如果想要一些进阶的玩法,可以打开链接看上面的使用教程。最后我们选择保存就行了。订阅导入最后我们首页就会有我们的单条订阅和组合订阅我们想导入哪个订阅到我们的工具中,就点击哪个订阅然后选择对应的工具即可。Surge托管配置这里是因为的用Surge的分流需求,所以我自己还折腾了一下分流文件,其实大家如果闲麻烦的话可以把订阅拿到转换站处理一下也可以有相应的分流效果,一般老牌一些的转换站还是靠谱的,也不太会有偷订阅的情况。如果你用的也是Surge那么可以看下我这里的分流文件配置。我们先到文件管理去创建一个文件,类型我们选“文件”即可。我们主要就是要填这个文件内容的地方大家可以参考我的配置文件,自己在上面改一改,也可以直接拿去用的,我的是参照acl4ssr转换站里的模板改出来的。这里有有两个链接要填【文件地址链接】指的是我们创建的分流文件的链接,这个是方便我们后面改分流文件后不用每次复制链接去导入更新,如果你觉得每次都去导入更新不麻烦的话,可以把第一行删掉。【订阅链接】是我们那个组合订阅的链接,这个是必须要填的。#!MANAGED-CONFIG 【文件地址链接】 interval=86400 strict=false # > Surge 范例托管配置文件,推荐搭配 Sub-Store 插件进行使用 # > Evan的博客:www.evantalk.com [General] # 端口设置 http-listen = 0.0.0.0:7890 socks5-listen = 0.0.0.0:7891 #日志等级 loglevel = notify bypass-system = true #跳过代理 skip-proxy = 127.0.0.1,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,100.64.0.0/10,localhost,*.local,e.crashlytics.com,captive.apple.com,::ffff:0:0:0:0/1,::ffff:128:0:0:0/1,sequoia.apple.com,seed-sequoia.siri.apple.com #DNS设置或根据自己网络情况进行相应设置 bypass-tun = 192.168.0.0/16,10.0.0.0/8,172.16.0.0/12 dns-server = 119.29.29.29,223.5.5.5 [Script] http-request https?:\/\/.*\.iqiyi\.com\/.*authcookie= script-path=https://raw.githubusercontent.com/NobyDa/Script/master/iQIYI-DailyBonus/iQIYI.js [Proxy Group] 🚀 节点选择 = select,♻️ 自动选择,🇭🇰 香港节点,🇨🇳 台湾节点,🇸🇬 狮城节点,🇯🇵 日本节点,🇺🇲 美国节点,🇰🇷 韩国节点,🚀 手动切换,DIRECT 🚀 手动切换 = select,policy-path=【订阅链接】 ♻️ 自动选择 = url-test,policy-path=【订阅链接】,url=http://www.gstatic.com/generate_204,interval=300,tolerance=50 📲 电报消息 = select,🚀 节点选择,♻️ 自动选择,🇸🇬 狮城节点,🇭🇰 香港节点,🇨🇳 台湾节点,🇯🇵 日本节点,🇺🇲 美国节点,🇰🇷 韩国节点,🚀 手动切换,DIRECT 💬 Ai平台 = select,🚀 节点选择,♻️ 自动选择,🇸🇬 狮城节点,🇭🇰 香港节点,🇨🇳 台湾节点,🇯🇵 日本节点,🇺🇲 美国节点,🇰🇷 韩国节点,🚀 手动切换,DIRECT 📹 油管视频 = select,🚀 节点选择,♻️ 自动选择,🇸🇬 狮城节点,🇭🇰 香港节点,🇨🇳 台湾节点,🇯🇵 日本节点,🇺🇲 美国节点,🇰🇷 韩国节点,🚀 手动切换,DIRECT 🎥 奈飞视频 = select,🎥 奈飞节点,🚀 节点选择,♻️ 自动选择,🇸🇬 狮城节点,🇭🇰 香港节点,🇨🇳 台湾节点,🇯🇵 日本节点,🇺🇲 美国节点,🇰🇷 韩国节点,🚀 手动切换,DIRECT 📺 巴哈姆特 = select,🇨🇳 台湾节点,🚀 节点选择,🚀 手动切换,DIRECT 📺 哔哩哔哩 = select,🎯 全球直连,🇨🇳 台湾节点,🇭🇰 香港节点 🌍 国外媒体 = select,🚀 节点选择,♻️ 自动选择,🇭🇰 香港节点,🇨🇳 台湾节点,🇸🇬 狮城节点,🇯🇵 日本节点,🇺🇲 美国节点,🇰🇷 韩国节点,🚀 手动切换,DIRECT 🌏 国内媒体 = select,DIRECT,🇭🇰 香港节点,🇨🇳 台湾节点,🇸🇬 狮城节点,🇯🇵 日本节点,🚀 手动切换 📢 谷歌FCM = select,DIRECT,🚀 节点选择,🇺🇲 美国节点,🇭🇰 香港节点,🇨🇳 台湾节点,🇸🇬 狮城节点,🇯🇵 日本节点,🇰🇷 韩国节点,🚀 手动切换 Ⓜ️ 微软Bing = select,DIRECT,🚀 节点选择,🇺🇲 美国节点,🇭🇰 香港节点,🇨🇳 台湾节点,🇸🇬 狮城节点,🇯🇵 日本节点,🇰🇷 韩国节点,🚀 手动切换 Ⓜ️ 微软云盘 = select,DIRECT,🚀 节点选择,🇺🇲 美国节点,🇭🇰 香港节点,🇨🇳 台湾节点,🇸🇬 狮城节点,🇯🇵 日本节点,🇰🇷 韩国节点,🚀 手动切换 Ⓜ️ 微软服务 = select,DIRECT,🚀 节点选择,🇺🇲 美国节点,🇭🇰 香港节点,🇨🇳 台湾节点,🇸🇬 狮城节点,🇯🇵 日本节点,🇰🇷 韩国节点,🚀 手动切换 🍎 苹果服务 = select,DIRECT,🚀 节点选择,🇺🇲 美国节点,🇭🇰 香港节点,🇨🇳 台湾节点,🇸🇬 狮城节点,🇯🇵 日本节点,🇰🇷 韩国节点,🚀 手动切换 🎮 游戏平台 = select,DIRECT,🚀 节点选择,🇺🇲 美国节点,🇭🇰 香港节点,🇨🇳 台湾节点,🇸🇬 狮城节点,🇯🇵 日本节点,🇰🇷 韩国节点,🚀 手动切换 🎶 网易音乐 = select,DIRECT,🚀 节点选择,♻️ 自动选择 🎯 全球直连 = select,DIRECT,🚀 节点选择,♻️ 自动选择 🛑 广告拦截 = select,REJECT,DIRECT 🍃 应用净化 = select,REJECT,DIRECT 🐟 漏网之鱼 = select,🚀 节点选择,♻️ 自动选择,DIRECT,🇭🇰 香港节点,🇨🇳 台湾节点,🇸🇬 狮城节点,🇯🇵 日本节点,🇺🇲 美国节点,🇰🇷 韩国节点,🚀 手动切换 # > 外部节点自动匹配 # > 匹配到关键字,自动收纳为节点组 🇭🇰 香港节点 = url-test, policy-path=【订阅链接】, policy-regex-filter=(🇭🇰)|(港)|(Hong)|(HK), url=http://www.gstatic.com/generate_204, interval=300, tolerance=150 🇨🇳 台湾节点 = url-test, policy-path=【订阅链接】, policy-regex-filter=(🇨🇳)|(台)|(Tai)|(TW), url=http://www.gstatic.com/generate_204, interval=300, tolerance=150 🇺🇲 美国节点 = url-test, policy-path=【订阅链接】, policy-regex-filter=(🇺🇸)|(美)|(States)|(US), url=http://www.gstatic.com/generate_204, interval=300, tolerance=150 🇯🇵 日本节点 = url-test, policy-path=【订阅链接】, policy-regex-filter=(🇯🇵)|(日)|(Japan)|(JP), url=http://www.gstatic.com/generate_204, interval=300, tolerance=150 🇸🇬 狮城节点 = url-test, policy-path=【订阅链接】, policy-regex-filter=(🇸🇬)|(新)|(Singapore)|(SG), url=http://www.gstatic.com/generate_204, interval=300, tolerance=150 🇰🇷 韩国节点 = url-test, policy-path=【订阅链接】, policy-regex-filter=(🇰🇷)|(韩)|(Korea)|(KR), url=http://www.gstatic.com/generate_204, interval=300, tolerance=150 🎥 奈飞节点 = select, policy-path=【订阅链接】, policy-regex-filter=(NF)|(奈飞)|(Netflix)|(video)|(Video)|(nf), url=http://www.gstatic.com/generate_204, interval=300, tolerance=150 [Rule] RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/LocalAreaNetwork.list,🎯 全球直连,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/UnBan.list,🎯 全球直连,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanAD.list,🛑 广告拦截,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanProgramAD.list,🍃 应用净化,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/GoogleFCM.list,📢 谷歌FCM,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/GoogleCN.list,🎯 全球直连,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/SteamCN.list,🎯 全球直连,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Bing.list,Ⓜ️ 微软Bing,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/OneDrive.list,Ⓜ️ 微软云盘,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Microsoft.list,Ⓜ️ 微软服务,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Apple.list,🍎 苹果服务,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Telegram.list,📲 电报消息,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/AI.list,💬 Ai平台,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/OpenAi.list,💬 Ai平台,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/NetEaseMusic.list,🎶 网易音乐,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Epic.list,🎮 游戏平台,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Origin.list,🎮 游戏平台,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Sony.list,🎮 游戏平台,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Steam.list,🎮 游戏平台,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Nintendo.list,🎮 游戏平台,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/YouTube.list,📹 油管视频,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Netflix.list,🎥 奈飞视频,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Bahamut.list,📺 巴哈姆特,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/BilibiliHMT.list,📺 哔哩哔哩,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Bilibili.list,📺 哔哩哔哩,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaMedia.list,🌏 国内媒体,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyMedia.list,🌍 国外媒体,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyGFWlist.list,🚀 节点选择,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaDomain.list,🎯 全球直连,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaCompanyIp.list,🎯 全球直连,update-interval=86400 RULE-SET,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Download.list,🎯 全球直连,update-interval=86400 GEOIP,CN,🎯 全球直连 FINAL,🐟 漏网之鱼参考资料https://www.youtube.com/watch?v=nEw1iadtPvshttps://www.youtube.com/watch?v=ty5mI3bp6lkhttps://hub.docker.com/r/xream/sub-store
2026年01月21日
1 阅读
0 评论
0 点赞
2025-12-01
Mac新版微信多开,已稳定3个月以上
原理:复制微信的应用包,修改签名,让系统识别为不同的应用这个方式本人已经稳定使用3个月以上了,下面是具体的操作方法。多开步骤第一步:copy应用运行命令后,会要求输入电脑的密码,这里正常输入即可sudo cp -R /Applications/WeChat.app /Applications/WeChat2.app第二步:修改标识修改Mac应用程序的唯一标识,可以在系统中区分不同的应用实例。sudo /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier com.tencent.xinWeChat2" /Applications/WeChat2.app/Contents/Info.plist第三步:签名sudo codesign --force --deep --sign - /Applications/WeChat2.app 第四步:完成多开操作完以上内容后,你的应用列表中就有两个微信了,正常来说两个都能打开的,你也可以给wechat2设置不同的图标进行区分。在应用程序中找到wechat2,右键,显示简介,将图标拖动上去即可如何更新微信我们的主微信提示要更新的话,我们正常更新即可,不会影响分身,如果分身需要更新的话,步骤如下。更新主体删除分身(我更新过好几次聊天记录都不会消失,不放心的可以先备份一下)按多开步骤重新操作完成分身更新参考资料https://blog.csdn.net/D1237890/article/details/147544117https://zhuanlan.zhihu.com/p/1896980501740376243
2025年12月01日
0 阅读
0 评论
0 点赞
2025-10-31
Mac删除自带的ABC输入法,输入体验升级
以下操作均在MacOS 15 上进行,这个方法经过测试12-15都适用,其他版本没有试过,按理来说应该都是可以的。Mac上系统自带的输入法很不好用,大部分都会装第三方输入法,我用的是微信输入法,但是Mac上的 ABC 输入是没法直接删除的,所以会导致时不时切换到ABC,然后狂敲键盘只能打出英文字母,其实只要我们在系统的配置文件中删除掉对应配置,就可以删除ABC了,也就不会出现上面说的这个问题了,输入的体验会得到质的飞跃。操作步骤1. 前期准备编辑plist格式的文件需要用 xcode 或者 PlistEdit Pro,没装 xcode 的建议装个 PlistEdit Pro,比较方便,这个地址去下载即可。https://www.fatcatsoftware.com/plisteditpro/看网上其他的教程下一步应该是关闭 SIP,但是我自己试下来,不关 SIP 也是可以的,如果不行的话可以跳到 SIP 的小节看如何关闭和开启 SIP。安装好编辑器后,打开终端工具,输入下面的命令,也可以自己根据目录去找这个文件打开,建议修改之前将这个文件备份一下open ~/Library/Preferences/com.apple.HIToolbox.plist如果修改不了可以再open前面加上sudo,加sudo会要求输入电脑的密码。2. 修改配置文件打开后找到图中ABC这项,这里可以打开0,1,2,3和其他数字都看一下,不一定就在3这里。接下来把包含ABC这整项删除掉,注意一定是整项,而不只是 ABC 那一小行,然后 Cmmand + S 保存一下文件 然后重启电脑就行啦,最后效果就是这样啦,没有 ABC,只有一个使用的输入法 添加ABC输入法如果想重新用 ABC 输入法的话,我们之间去键盘的输入法设置里去添加即可系统设置 -> 键盘 -> 输入法(编辑)-> 添加 -> 英语 -> ABC关闭和开启 SIPSIP 是系统完整性保护 (System Integrity Protection)的缩写,主要是保护Mac 上的关键系统文件和目录,防止它们被未经授权的软件和用户修改,即使是管理员账户也无法修改。SIP 默认是开启的,这边也建议在修改完文件后将 SIP 重新启用。SIP状态检查在终端中输入csrutil status命令,可以查看 SIP 的状态,显示System Integrity Protection status: enabled.就表示 SIP 是开启状态。关闭SIPM 系列的电脑,一定要先关机,不要重启,不用重启,重启会导致关不掉,当时给我整懵了。关机后,长按开机键,一直按着,会进入到==恢复模式==进入恢复模式后,打开终端(路径:顶部菜单栏 -> 实用工具 -> 终端)执行csrutil disable命令即可执行后终端应该会提示 SIP 已经禁用,然后根据提示重启 Mac 即可。非 M 系列的电脑是按开机后一直按住Command + R进入恢复模式修改完后记得重新进入恢复模式输入csrutil enable命令重新启用 SIP。参考资料https://blog.csdn.net/qq_43921353/article/details/139477924https://juejin.cn/post/7362547967700926490https://rokcso.com/p/macos-remove-abc/https://blog.csdn.net/Dying_river/article/details/129789063
2025年10月31日
0 阅读
0 评论
0 点赞
2021-07-18
为什么你老是能收到骚扰信息?是你没开这个!
很早以前发公众号的文章了,丰富一下博客的信息,就搬上来吧。前言大家的日常生活中应该不少有收到骚扰短信和各类骚扰电话吧,每逢618和双11都会收到购物优惠短信的联环轰炸,平时时不时就能收到各类网游一刀999的短信邀请。还有就是各种房产中介,保险推销的骚扰电话。 Android用户的感知可能没有那么的强烈,毕竟现在国内各厂商的Android基本都会自带有骚扰短信和电话的拦截功能,但对于IOS用户的感知应该就比较明显了,经常收到一些骚扰短信和电话,但是又苦于没有办法去拦截。今天我就教大家解决这个问题!运营商方式拦截其实移动、联通、电信运营商有给我们提供免费的骚扰短信和骚扰电话拦截服务,但是效果不是特别好,接下来我就依次讲一下各个运营商的拦截服务怎么样去开通1、移动首先我们需要关注微信公众号“中国移动高频骚扰电话防护”在公众号下方的菜单中选择业务设置再选择骚扰拦截设置进行开通即可 2、联通联通用户需要关注微信公众号“智慧沃服务”在公众号下方菜单中选择手机管家进行开通即可! 3、电信电信用户需要关注微信公众号“天翼防骚扰”在公众号下方菜单中选择业务设置再选择智能拦截设置进行开通即可 以上就是各大运营商给我们提供的一些骚扰拦截服务啦,因为运营商提供的拦截服务效果并不是很好,所以下面我们会介绍两款第三方软件进行拦截,效果比较好,主要还是针对IOS用户,因为Android端的软件较多,而且基本系统都已经有自带了。软件方式拦截这里我们给大家介绍一下腾讯手机管家和熊猫吃短信这两款拦截的APP,各位不要看到腾讯这两个字就觉得一定是垃圾软件了,虽然这款软件里面确实还是挺乱的,但是我们注意一些的使用的话,还是非常好的一个工具。1、腾讯手机管家腾讯手机管家是Android和IOS用户都可以在应用商店进行下载的,这里下载我就不作详细说明了。 首先我们打开下载好的腾讯手机管家,这里要注意一下,如果你不想被它频繁打扰,我们就不要给他任何其他的权限,什么通知权限,都给他拒绝掉,我们就给基本的一些权限就行了。打开后我们会看到如下界面,其他的功能我们都不用,我们只用骚扰拦截相关的功能。 点击进入之后,我们开启精准识别骚扰来电和垃圾短信过滤,下方的智能接听助理不要开启,因为要付费,如果你财力雄厚则可以忽视。功能开启的过程按流程操作即可,IOS用户则需要一些特殊的设置。 IOS用户请按下面的步骤进行设置:设置->信息->未知与过滤信息->选择腾讯手机管家 经过以上的一系列操作,我们就已经开启了骚扰电话和短信的拦截了。下面我们介绍一下熊猫吃短信2、熊猫吃短信这款APP是IOS用户专属的,需要付费但是不贵,3元即可买断,但是它只能拦截骚扰短信,无法拦截骚扰电话。 熊猫吃短信是基于统计学的机器学习算法从几十万条短信样本中进行学习的,他能精准的判断收到的短信是正常短信、公益短信还是骚扰短信等等,而且如果有误判的时候,大家可以在APP中投喂新的短信样本帮助优化,所以永久时间越久就会越加的精准,并且这款软件非常的干净,不会偷偷收集您的任何信息。 在AppStore中搜索熊猫吃短信,直接进行买断下载即可,打开下载好的APP,我们会看到如下界面。 我们一般不需要进行调整,直接就快要使用了,但是需要和腾讯手机管家一下进行一些简单的设置。 设置->信息->未知与过滤信息->选择熊猫吃短信 然后我们可以到短信中看到,你的短信已经进行了分类,所有短信就是我们收到的一些正常短信,这个是我们能正常看到的通知,交易信息一般都是银行或者支付相关的一些短信,垃圾短信我们则不会收到提醒,直接会被放入该分类中。 一段的时间使用下来,我个人感觉熊猫吃短信的短信拦截功能会更好用,所以我现在都是使用熊猫吃短信的短信拦截功能配合腾讯手机管家的电话拦截功能再加上运营商的拦截,这一套下来基本日常没什么骚扰电话和短信了。
2021年07月18日
0 阅读
0 评论
0 点赞