首页
留言
推荐
盒子导航
图床
Search
1
N1盒子刷OPENWRT写入N1内置硬盘教程
1,522 阅读
2
博客大事件
1,385 阅读
3
N1盒子救砖刷机
1,261 阅读
4
电信wap模式
1,036 阅读
5
毕业了
981 阅读
默认分类
学习笔记
N1盒子
分享
旅游
摄影
美食
其他
日记
阿豆
ME
纪念日
登录
Search
标签搜索
陕西·西安
浙江·杭州
西湖
埃及·开罗
金字塔
李鑫
累计撰写
33
篇文章
累计收到
5
条评论
首页
栏目
默认分类
学习笔记
N1盒子
分享
旅游
摄影
美食
其他
日记
阿豆
ME
纪念日
页面
留言
推荐
盒子导航
图床
搜索到
32
篇与
的结果
2026-02-11
Gemini写的简单的青龙推送脚本
ssl证书到期提醒第一步:在青龙面板中添加脚本登录青龙面板。点击左侧菜单的 “脚本管理”。点击右上角的 “+”号(新建)。类型选择:Python。文件名填写:check_ssl.py。父目录留空即可。把下面的代码完整复制粘贴进去,只需要修改代码里 domains 列表中的网址即可:import ssl import socket import datetime import smtplib from email.mime.text import MIMEText from email.header import Header from email.utils import formataddr # ================= ⚙️ 配置区域 ================= # 1. 邮件发送设置 # 【登录和发送都用这个邮箱】 sender_mail = '发件邮箱@qq.com' sender_name = 'SSL监控小助手' # 【⚠️重要】这里填授权码 (主账号的) sender_pass = '' # 2. 接收邮箱 receiver_list = ['收件邮箱@qq.com'] # 3. 监控列表 (新增 renew_url 字段) # 您可以在 renew_url 里填入阿里云/腾讯云/宝塔的后台地址 domain_config = [ { 'url': 'www.lsky.pro', 'name': '兰空图床', 'renew_url': 'https://console.cloud.tencent.com/ssl' # 示例:腾讯云控制台 }, { 'url': 'qinglong.online', 'name': '青龙面板', 'renew_url': 'http://192.168.1.5:5700' # 示例:内网IP }, { 'url': 'openwrt.org', 'name': 'N1盒子', 'renew_url': 'https://yoursite.com/renew' # 示例 }, { 'url': 'www.ip38.com', 'name': 'IP检测服务', 'renew_url': 'https://yoursite.com/renew' }, { 'url': 'www.fnnas.com', 'name': '飞牛服务', 'renew_url': 'https://yoursite.com/renew' } ] # 4. 报警阈值 (剩下多少天开始报警) ALERT_DAYS = 15 # =============================================== def check_ssl(domain): """检查单个域名的证书""" try: ctx = ssl.create_default_context() conn = ctx.wrap_socket(socket.socket(socket.AF_INET), server_hostname=domain) conn.settimeout(5.0) conn.connect((domain, 443)) cert = conn.getpeercert() conn.close() expire_date_str = cert['notAfter'] expire_date = datetime.datetime.strptime(expire_date_str, "%b %d %H:%M:%S %Y %Z") remaining_days = (expire_date - datetime.datetime.utcnow()).days return True, remaining_days, expire_date.strftime("%Y-%m-%d") except Exception as e: return False, str(e), "未知" def send_alert_email(alert_data_list): """发送 HTML 报警邮件""" if not sender_pass: print("❌ 未配置授权码,无法发送报警邮件") return # 1. 构建 HTML 表格内容 rows_html = "" for item in alert_data_list: name = item['name'] domain = item['domain'] days = item['days'] info = item['info'] link = item['renew_url'] is_error = item['is_error'] # 样式处理:错误用红色背景,过期警告用黄色背景 if is_error: status_html = f'<span style="color: white; background-color: #d9534f; padding: 2px 6px; border-radius: 4px;">检测失败</span>' desc_html = f'<span style="color: #d9534f;">{info}</span>' else: status_html = f'<span style="color: white; background-color: #f0ad4e; padding: 2px 6px; border-radius: 4px;">仅剩 {days} 天</span>' desc_html = f'<span style="color: #666;">过期时间: {info}</span>' rows_html += f''' <div style="padding: 10px; border-bottom: 1px solid #eee;"> <div style="font-size: 16px; font-weight: bold; color: #333;"> {name} <span style="font-size: 14px; font-weight: normal; color: #888;">({domain})</span> </div> <div style="margin-top: 5px;"> {status_html} {desc_html} </div> <div style="margin-top: 8px;"> 👉 <a href="{link}" target="_blank" style="color: #007bff; text-decoration: none; font-weight: bold;">立即续签 ></a> </div> </div> ''' # 2. 完整的 HTML 结构 html_content = f''' <div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; max-width: 600px; margin: 0 auto; border: 1px solid #ddd; border-radius: 8px; overflow: hidden;"> <div style="background-color: #d9534f; color: white; padding: 15px; text-align: center;"> <h2 style="margin: 0; font-size: 20px;">⚠️ SSL 证书过期预警</h2> </div> <div style="padding: 15px;"> <p style="color: #555;">监控小助手发现以下服务证书异常,请及时处理:</p> {rows_html} </div> <div style="background-color: #f8f9fa; padding: 10px; text-align: center; color: #999; font-size: 12px;"> 此邮件由青龙面板自动发送,正常状态下不会打扰。 </div> </div> ''' msg = MIMEText(html_content, 'html', 'utf-8') msg['From'] = formataddr((Header(sender_name, 'utf-8').encode(), sender_mail)) msg['To'] = ",".join(receiver_list) msg['Subject'] = Header(f'⚠️ 证书报警: 有 {len(alert_data_list)} 个服务需要续期', 'utf-8') try: s = smtplib.SMTP_SSL('smtp.qq.com', 465) s.login(sender_mail, sender_pass) s.sendmail(sender_mail, receiver_list, msg.as_string()) s.quit() print(f"✅ 报警邮件已发送给: {receiver_list[0]}") except Exception as e: print(f"❌ 邮件发送失败: {e}") def main(): print(f"⏰ 开始检查 SSL 证书 (阈值: {ALERT_DAYS}天)...") print("-" * 40) alert_data_list = [] for item in domain_config: domain = item['url'] name = item['name'] renew_url = item.get('renew_url', '#') # 获取续签链接,没有则为空 status, days, exp_date = check_ssl(domain) if status: if days < ALERT_DAYS: print(f"⚠️ {name} 证书告急!(剩 {days} 天)") alert_data_list.append({ 'name': name, 'domain': domain, 'days': days, 'info': exp_date, 'renew_url': renew_url, 'is_error': False }) else: print(f"✅ [{name}] 剩余 {days} 天") else: print(f"❌ {name} 检测失败") alert_data_list.append({ 'name': name, 'domain': domain, 'days': 0, 'info': days, # 这里存报错信息 'renew_url': renew_url, 'is_error': True }) print("-" * 40) if alert_data_list: print(f"😱 发现 {len(alert_data_list)} 个异常,正在发送通知...") send_alert_email(alert_data_list) else: print("🎉 所有服务证书正常,无需打扰。") if __name__ == "__main__": main() 点击右下角的 “保存”。第二步:添加定时任务点击左侧菜单的 “定时任务”。点击右上角的 “新建任务”。名称:SSL证书检查。命令/脚本:task check_ssl.py。定时规则:0 9 1 * *这个规则的意思是:每月 1 号的上午 9 点 0 分 执行一次。点击 “确定”。第三步:配置通知(最关键的一步)第一步:开启 QQ 邮箱的“发信服务”这是唯一稍微麻烦的一步,但只需要做一次,以后永久稳定。电脑登录网页版 QQ 邮箱。点击左上角的 “设置” -> “账号”。向下滑动,找到 “POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”。找到 “POP3/SMTP服务”,如果没开启,点击“开启”。系统会让你发个短信验证,验证后它会给你一串 英文授权码(不是你的 QQ 密码!)。请把这串授权码复制下来,一定要保存好。第二步:修改完记得点“保存”并测试修改代码顶部的 sender_mail 和 sender_pass。保存后,点击 “运行”。如果你的ssl证书小于15天,您的手机应该会收到一封来自“青龙面板 SSL监控”的邮件。
2026年02月11日
22 阅读
0 评论
0 点赞
2025-12-22
利用闲置旧电脑安装飞牛搭建私人家庭影音
本方案是由 openlist + emby + go-emby2openlist + danmu-api 组成的,openlist挂载网盘,emby作为媒体服务器,go-emby2openlist为openlist连接emby做302重定向,danmu-api是视频播放的弹幕,不看弹幕也可以不安装。如何不看弹幕也可以使用openlist+飞牛影视更简单,使用strm刮削更快,但是首播需要多等几秒,类似方案有很多。今天主要是使用我使用的方案openlist + emby + go-emby2openlist + danmu-api非专业人士,本篇文章仅作为自己后续维护使用安装openlist前期准备首先打开飞牛的 “文件管理”,在我的文件下的 docker 文件夹下,创建一个名为 openlist 的文件夹。查看openlist文件夹权限,右键点击 openlist 文件夹 -> 属性 -> 权限,确保你的当前用户拥有读写权限。部署 OpenList (使用 Docker Compose)使用 Compose 部署的好处是方便后续维护,不用去点点选选复杂的 UI。打开飞牛桌面的 “Docker” 应用。点击左侧的 “Compose”,然后点击顶部的 “新增”。项目名称:填 openlist。存储位置:选择刚才创建的 /vol1/1000/docker/openlist 文件夹。代码框:将以下代码完整粘贴进去:services: openlist: image: openlistteam/openlist:latest container_name: openlist ports: - 5244:5244 volumes: - /vol1/1000/docker/openlist:/opt/openlist/data # 注意修改为你的实际路径 environment: - TZ=Asia/Shanghai user: '0:0' # 【避坑必填】强制以root运行,避免fnOS下挂载网盘权限报错 restart: always 点击 “完成”,等待镜像拉取并启动。获取初始密码OpenList 初始密码是随机生成的,隐藏在日志里。在 Docker 的 “容器” 列表中,找到 openlist。点击它的 “日志” 图标。在搜索框输入 password 或者是往下翻,你会看到一行:Successfully created the initial administrator password: [一串随机字符]把它复制下来。登录与配置在浏览器输入:http://飞牛IP:5244。账号:admin,密码:填入刚才在日志里复制的初始随机密码。修改初始密码:登录后点击页面底部的 “管理”,进入 “设置” -> “后端”,修改 “管理员密码” 并保存(以后就不用去翻日志了)。开启 WebDAV:在刚才的同一页面(“设置” -> “后端”),找到并确认开启 “WebDAV 用于播放”。注:记录下你的 WebDAV 地址(通常是 http://飞牛IP:5244/dav)。这是后续让 go-emby2openlist 实现直连播放(不走 NAS 流量)的核心前提。挂载网盘OpenList 现在只是个“空壳”,需要挂载实际的网盘来作为存储空间。我主力使用的是天翼云盘(老号有 10T 空间)和移动云盘(个人与家庭云合并后有 53T 空间)。这两个网盘不开会员下载也不限速,且移动云盘 302 直连走的是定向流量,完全够用。挂载注意事项WebDAV 策略:设置中务必选择 302 重定向(注:夸克网盘不支持 302)。关闭签名:在添加存储时,“开启签名”选项千万不要勾选! 如果勾选了,Emby 在通过 302 重定向播放时会因为签名不匹配而直接报错。具体的各项参数填写教程,请直接移步官方手册:OpenList 官方文档挂载文件夹最后一步把openlist挂载到飞牛本地文件夹,打开飞牛文件管理→远程挂载→挂载远程文件夹→选择WebDAV域名:飞牛IP 端口:5244 选择:http 用户名:admin 密码:openlist密码 指定路径:/dav 挂载名:随便填 我的挂载路径为:/vol02/1000-1-9b6c27ee我们把openlist挂载到飞牛文件管理,我们网盘已经变成了“本地硬盘”。现在我们安装 Emby。安装emby前期准备首先还是打开飞牛的 “文件管理”,在我的文件下的 docker 文件夹下,创建一个名为 emby 的文件夹,在 emby 文件夹内再建一个子文件夹叫 config(用于存放海报墙数据)。部署 Emby (使用 Docker Compose)打开飞牛桌面的 “Docker” 应用。点击左侧的 “Compose”,然后点击顶部的 “新增”。项目名称:填 emby。存储位置:选择刚才创建的 /vol1/1000/docker/emby 文件夹。代码框:复制以下代码services: emby: image: emby/embyserver:latest container_name: emby network_mode: host # host 模式能让 Senplayer 在内网秒搜到服务器 environment: - UID=1000 - GID=1000 - TZ=Asia/Shanghai volumes: - /vol1/1000/docker/emby/config:/config # 存海报和数据库 - /vol02/1000-1-9b6c27ee/Media:/media # 映射 OpenList 路径 restart: always 路径确认:确保第 12 行左边的路径和你飞牛文件管理里的真实路径完全一致,因为我的视频文件夹在Media下,所以我加了/Media。初始化 Emby部署成功后,在浏览器访问 http://飞牛IP:8096。语言选择:选 Chinese Simplified。创建管理员:账号密码自己设置。添加媒体库:点击“新媒体库”。文件夹:点击那个 /media/openlist(就是我们刚才在 Compose 里映射出来的洞)。元数据语言:选 Chinese,国家选 People's Republic of China。配置刮削器:勾选 TheMovieDb。重要:把“将媒体图像保存到媒体库文件夹”取消勾选(因为网盘文件夹通常是只读的,或者写入很慢,海报图存放在 NAS 本地的 /config 里速度最快)。刮削刮削不出海报:这是因为国内无法直接访问 TMDB 的服务器。解决:你可以在飞牛系统的 系统设置 -> 网络 -> Hosts 里,手动添加 TMDB 的加速地址,或者在 Docker 里挂一个简单的 DNS 代理。网盘文件不显示:如果你在 OpenList 里刚添加了文件,Emby 可能还没反应过来。解决:在 Emby 媒体库点击“扫描媒体库文件”。部署 go-emby2openlist部署 go-emby2openlist 的逻辑是:它作为一个“中转站”,拦截本来发往 Emby(8096端口)的请求,处理成直链后再发给播放器。现在网盘播放视频会消耗 NAS 的流量;部署 go-emby2openlist 后,播放视频时,视频流会直接从网盘服务器发给手机,秒开且不占 NAS 带宽。创建配置文件夹打开飞牛的 “文件管理” ,在我的文件下的 docker 文件夹下,创建一个名为 emby-direct 的文件夹,在 emby-direct 文件夹内再建一个子文件夹叫 config(。部署 emby-direct (使用 Docker Compose)打开飞牛桌面的 “Docker” -> “Compose” -> “新增”。项目名称:emby-direct存储位置:选择刚才建的 /vol1/1000/docker/emby-direct。代码框:直接复制下面这段:services: emby-direct: image: bpking/go-emby2openlist:latest container_name: emby-direct network_mode: host # 必须是 host,因为它要接管 8091 等端口 volumes: # 将刚才建的 config 文件夹映射进去 - /vol1/1000/docker/emby-direct/config:/app/config environment: - TZ=Asia/Shanghai restart: always 点击 “完成” 部署。修改核心配置文件部署成功后,容器会自动在你的 config 文件夹里生成一个 constant.js 文件。配置的核心”,我们需要去里面修改它。回到“文件管理”,进入 docker/emby-direct/config,找到 constant.js,右键选择“文本编辑”(或直接双击)。重点修改以下几个参数(一定要细心):配置项修改内容建议embyHosthttp://127.0.0.1:8096(指向你本地的 Emby)embyApiKey填入你之前在 Emby 后台生成的那个长字符串alistHosthttp://127.0.0.1:5244(指向你本地的 OpenList)alistToken在 OpenList 管理后台 -> 设置 -> 后端 找到并复制 “令牌”embyMountPath["/media"](这是 Emby 容器里看到的路径)alistMountPath[""](留空,表示直接去掉 /media 前缀,对齐 OpenList 路径)重启改完 constant.js 并点击保存后:回到飞牛 Docker 界面。在“项目”里找到 emby-direct。点击 “重启”。在播放器(Senplayer/Yamby)里连接服务器地址:不要填 8096,要填 http://你的NAS内网IP:8091(这是工具默认的转发端口)。账号密码:填 Emby 的账号密码。检查:在 Senplayer 里点播放,飞牛桌面的 上传速度(流量监控) 几乎没跳动,但是视频秒开,那就是成功的,302 直连配置成功!danmu-api配置文件夹打开 “文件管理”。进入路径:/vol1/1000/docker。新建文件夹:danmu-api。部署 danmu-api (Docker Compose)在飞牛 Docker -> Compose -> 新增,项目名:danmu-api。services: danmu-api: image: logvar/danmu-api:latest container_name: danmu-api ports: - 9321:9321 volumes: # 将配置文件持久化到本地,防止更新镜像后配置丢失 - /vol1/1000/docker/danmu-api:/app/data environment: - TZ=Asia/Shanghai # 【关键:安全】这是后台管理密码,部署后立刻修改 - ADMIN_TOKEN=admin123 # 【关键:匹配】填入 TMDB API Key - TMDB_API_KEY=2a5d21d6xxxxxxxxxxxxxx restart: always TMDB_API免费申请后台进配置部署成功后,进入“后台”设置:访问地址:在浏览器输入 http://飞牛IP:9321/admin123(记得带上 Token)。源配置 (最重要):点击顶部的 “源配置”。找到 BILIBILI_COOKIE。扫描登陆B站,获取B站COOKIE(这样能抓到全量弹幕)。保存:点击页面最下方的 “保存配置”。在 Senplayer/Yamby 里使用?进去danmu-api在在上方找到:API端点: http://飞牛IP:9321/12345678 这就是我的需要的链接Senplayer (iOS/iPadOS):在播放界面点击右下角的“设置”图标。找到 “弹幕设置” -> “自定义弹幕API”。地址:http://飞牛IP:9321/12345678(外网建议带域名)。Yamby (Emby 客户端):进入右上角设置 -> 实验性 -> 弹幕 -> Danmaku API(倒数第一个)。添加和管理弹幕 -> 右上角 -> + 新建。url:http://飞牛IP:9321/12345678ddns-go一般家宽没有ipv4但都有ipv6,建议配置ddns-go做解析,即使在外网也能访问,我用cf使用ddns-go解析ipv6,只有ipv6能访问,想要使用ipv4也能访问,可以使用 Cloudflare Tunnel,即使没有外网ip也能访问。若后续改用 Cloudflare Tunnel,无需路由器端口转发,只需在飞牛 Docker 部署 cloudflared 容器,并在 CF 后台配置 Public Hostname 分别指向内网端口(如 8091 和 9321)即可。
2025年12月22日
3 阅读
0 评论
0 点赞
2025-12-19
30元搞定可写 eSIM 实体卡
市面上的成品 eSIM 实体卡(如 5ber 等)价格动辄一百多,感觉性价比不高。最近在拼多多发现了一款仅需 30 多元的平替方案,不仅价格真香,功能也完全够用:支持无限次读写支持 iPhone 端直接切卡(无需安卓手机辅助)配套软件开源(OpenEUICC),安全放心,不怕商家跑路。果断入手实测,体验很不错,以下是详细使用教程。一、写卡准备(安卓端)写卡环节需要使用安卓手机配合开源软件完成。软件下载:OpenEUICC (Gitea)注:进入链接后下载最新 Release 版本即可。详细图文教程:飞书文档链接二、苹果 (iOS) 切卡教程写入配置后,将卡插入 iPhone,即可通过“SIM 卡应用程序”菜单直接切换号码,无需反复插拔。操作路径:进入 设置 > 蜂窝网络。在“SIM 卡”列表中,点击该卡。点击底部的 SIM 卡应用程序。选择 LPAe > Profile List。在列表中点击你想切换的运营商名字。点击以 E 开头的选项(Enable)确认切换。
2025年12月19日
20 阅读
0 评论
1 点赞
2025-06-17
我们结婚了
加密文章,请前往内页查看详情
2025年06月17日
70 阅读
0 评论
0 点赞
2025-06-17
使用 Cloudflare + Backblaze B2+PicGo的搭建免费图床
加密文章,请前往内页查看详情
2025年06月17日
87 阅读
0 评论
0 点赞
2025-06-17
甘肃电信免费流量
加密文章,请前往内页查看详情
2025年06月17日
91 阅读
0 评论
0 点赞
2025-05-01
宁夏电信领流量活动
1、评价领5G每月一次原文链接:【评价好礼】您有5GB流量待领取!仅宁夏电信用户参加,每月一次,活动截止日期2025年12月31日,前往中国app参与评价获得5G流量,48小时内到账:点我直达跳转2、周五领1G原文链接:周五找筱翼,速领1GB!仅宁夏电信用户参加,每周五参加每月仅参加一次,活动截止日期2025年12月31日,24小时内到账;方式一:点我直达方式二:登录电信APP-点击上方搜索框-回复领流量-输入手机号码3、添加客服领10G仅一次原文链接:福利点这里→加好友领10GB!
2025年05月01日
86 阅读
0 评论
0 点赞
2025-02-27
我们订婚啦
加密文章,请前往内页查看详情
2025年02月27日
1,548 阅读
1 评论
4 点赞
2024-08-17
Win11优化
1、激活win11专业版可以用这两个激活密钥试试看J8WVF-9X3GM-4WVYC-VDHQG-42CXT 7Y64F-88DCY-Y6WTC-H33D2-64QHF断网输入激活码等待重启后联网win+x选终端管理员按右键粘贴这行代码后回车即可:irm massgrave.dev/get.ps1 | iex选1即可(选项第一个是永久,第二个是到2038年,第三个是180天带工具,在下方绿色字体尾端输入你选择的选项数字)win11家庭版升专业版通过电子激活就是这样子的2、暂停更新win+x选终端管理员按右键粘贴这行代码后回车即可:reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings“ /v FlightSettingsMaxPauseDays /t reg_dword /d 10000 /f桌面右键菜单改回win10样式新建文本复制内容进去:reg add HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /ve taskkill /f /im explorer.exe explorer reg delete HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /f /ve更改文件名为1.cmd,双击运行即可效果图 office365安装下载Office Tool Plus:https://otp.landian.vip/zh-cn/download.html部署:添加产品 添加语言 开始部署,视你的网络状况和巨硬的网络状况快的话十几分钟吧。 激活:安装许可证选Office Modono 2016-批量许可证 设置KMS主机下面的链接都可以,选一个就行kms.loli.beerkms.ghpym.comkms.loli.best 填好主机后点设置主机,再点激活 刷新许可证就好了 ### 改回win10磁贴 项目:https://github.com/valinet/ExplorerPatcher 下载:https://github.com/valinet/ExplorerPatcher/releases/download/22621.3296.64.1_9e9c016/ep_setup.exe 下载安装后会白屏一下,不要慌一会儿就好了,然后右键任务栏-属性选开始菜单,风格win10,显示更多磁贴,左下角重启文件管理器即可 效果图
2024年08月17日
432 阅读
0 评论
0 点赞
2024-08-14
影视仓
暂无简介
2024年08月14日
356 阅读
0 评论
0 点赞
1
2
...
4