「LUCKY STUN穿透」使用UptimeRobot使UPnP映射的TCP规则保持活跃

news/2026/1/25 21:45:42/文章来源:https://www.cnblogs.com/ie123610/p/19526463

「LUCKY STUN穿透」使用UptimeRobot使UPnP映射的TCP规则保持活跃

「LUCKY STUN穿透」使用UptimeRobot使UPnP映射的TCP规则保持活跃

2024.05.04

在之前的教程中我们通过UPnP映射 webhook等功能配合STUN穿透
实现了在无IPv4公网环境下全自动的为BT客户端开放端口

  • LUCKY STUN穿透在Windows上使用UPnP工具为BT客户端自动添加内外端口号不同的映射规则
  • 「LUCKY STUN穿透」在Docker中使用MiniUPnP为BT客户端自动添加内外端口不同的映射规则
  • 「LUCKY STUN穿透」使用 Webhook 自动修改 qbittorrent 的监听端口
  • 「LUCKY STUN穿透」使用 cURL 自动修改 Transmission 的监听端口

但有一些网友反映UPnP映射规则会在一段时间后自己消失
与此同时STUN穿透并没有变化

这应该是由于 映射规则不活跃导致的 即路由设备会认为这个规则是陈旧的需要清理
当然不同的设备表现不一样 清理的时间应该也是不一样的
一般认为在规则租约期为无限的情况下 只要有流量通过规则其应该就不会被清理

这其实对BT来说不是什么问题  因为几乎一直会有流量和连接
但是对PT(主要看保的种子)和其他 不总是有流量的服务 来说就是另外一回事了

当然在我们之前教程中所设置的映射规则租约是无限的
所以我们只需要解决流量问题

我们可以使用 UptimeRobot 这个网站来解决问题
其本身用于网站检测 即检测网站或其他服务是否运行正常
我们需要使用它的端口检测功能


注册 UptimeRobot

访问:https://uptimerobot.com/

注册账户

填写信息
只需填写前三项 分别为 昵称 邮箱 和 密码

通过邮件激活账户

点击激活邮件中的链接以激活账户


配置监视器

登录账户

首次使用会弹出设置向导
我们使用向导进行设置 之后会介绍不使用向导的设置方法

创建监视器
点击右侧的箭头弹出菜单 选择 Port monitoring
IP or host 这里填写一个已经解析到BT客户端所在设备IP的(动态)域名

如果还没有设置过可以看看之前的教程或者其他(动态)域名教程 链接 
端口号填写 BT客户端正在监听的端口填写 完成后点击创建

测试通知

其作用是监视的网站或端口离线后发出警告
这里我们用不到这个功能 直接跳过

设置状态页面

其为一个公开的网页可以用来显示多个监视器的状态
这里我们用不到这个功能 直接跳过

不使用向导设置监视器
与使用向导设置的方法基本相同

选择监控类型 填写IP和端口 建议取消勾选下面的邮件提醒
免费版扫描间隔最小为5分钟


设置更新API

通过上述的设置 现在网站会每隔5分钟探测一次我们BT客户端的端口
尽管5分钟的间隔有点长 端口扫描所产生的流量也很小
但这足够让UPnP映射规则保持活跃了

不过由于我们使用STUN进行穿透 所以端口是动态的
需要在端口变化后更新监视器中的端口

之所以选择UptimeRobot是因为其提供的更新AP可以使我们可以轻松的更新监视器端口
API文档:https://uptimerobot.com/api/

获取更新KEY

目前UptimeRobot 似乎正在更新界面
我们刚才所看到的都是新界面

像更新API设置这样的高级功能似乎还没有迁移过来
我们需要回到它的 旧版页面 点击上方横幅中的 old app

回到旧版界面后
点击右上角的用户名 弹出 菜单 选择 My Settings

滚动页面到底部可以看到 API Settings
点击 创建主更新key

获取监视器ID

有了更新key后我们还需要获取监视器ID
请求方法:https://uptimerobot.com/api/#getMonitorsWrap
这里使用lucky计划任务中的callweb功能进行获取

创建计划任务

任务备注 、执行周期、执行时间等任意填写
子规则选择 callweb 并填写下列内容

接口地址:https://api.uptimerobot.com/v2/getMonitors
请求方法: POST

请求头:

Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache

请求主体:

api_key=你的API_Key&format=json&logs=1

禁用callweb调用成功字符串检测:

保存任务

示例

关闭规则开关 我们只使用 手动触发

按下手动触发按钮并查看日志 应该可以看到 stat:ok
在monitors 和 friendly_name 之间的ID就是我们需要的 监视器ID

更新端口号

在获取了监视器ID后我们就可以开始 更新端口号了
依然是先在计划任务中测试 完成后再填写到STUN规则中

请求方法: https://uptimerobot.com/api/#editMonitorWrap

考虑到经过之前教程中的一系列设置STUN穿透规则中的webhook可能已经被占用
所以这里给出 使用 webhook 和 curl配置的两种方法 测试阶段端口号可任意填写
curl在不同平台上的安装方法可以看之前的教程:链接

Curl配置方法

Linux平台(Docker)

curl -X POST -H "Cache-Control: no-cache" -H "Content-Type: application/x-www-form-urlencoded" -d "api_key=你的APIKey&format=json&id=监视器ID&port=新端口号" "https://api.uptimerobot.com/v2/editMonitor"

示例

Windows平台

Windows下要额外添加 --ssl-no-revoke 参数不然会出现无法检查证书是否吊销的 报错
这可能是Windows下的检查方式和Linux下不太一样导致的 详见:链接

curl --ssl-no-revoke -X POST -H "Cache-Control: no-cache" -H "Content-Type: application/x-www-form-urlencoded" -d "api_key=你的APIKey&format=json&id=监视器ID&port=新端口号" "https://api.uptimerobot.com/v2/editMonitor"

按下手动触发按钮 检查输出日志
成功会返回ok监视器ID

Webhook配置方法

请求地址:

Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache

请求主体:

api_key=你的APIKey&format=json&id=监视器ID&port=新端口号

禁用callweb调用成功字符串检测:

示例

按下手动触发按钮 检查输出日志
成功会返回ok监视器ID


编辑STUN穿透规则

使用Curl

将之前测试完成的脚本 复制到STUN的自定义脚本区域
若在自定义脚本区域 已经有命令 则应按照流程顺序进行排列并设置间隔

Linux下可以使用 sleep命令 实现而在Windows下需要使用 vbs脚本 实现类似效果
可以查看之前的教程:链接

还需将 port 的值替换为 STUN穿透 端口变量
api_key=你的APIKey&format=json&id=监视器ID&port=${port}

示例

使用Webhook

与在计划任务中测试的时候基本相同
要把 port 的值替换为 STUN穿透 端口变量
api_key=你的APIKey&format=json&id=监视器ID&port=${port}

同时将 禁用Webhook接口调用成功字符串检测 改为
并填写 ok 作为判断执行成功的字符串

示例

填写完成后可以按下右上角的 手动触发测试
手动测试会使用固定的参数比如端口号固定为 6666

返回ok和监视器ID即表示更新成功

至此我们便完成了UPnP映射规则的保活设置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1215869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI应用架构师详解:智能供应链预测系统模型服务化设计(TensorFlow Serving实践)

AI应用架构师详解:智能供应链预测系统的模型服务化设计——基于TensorFlow Serving的实践指南 一、引言:从"模型训练完成"到"生产可用"的最后一公里痛 作为AI应用架构师,我曾遇到过这样的场景: 数据科学家花了3个月训练出一个供应链销量预测模型——…

A. Perfect Root

time limit per test1 secondmemory limit per test256 megabytesA positive integer x is a perfect root if there exists an integer y such that y√x. For example, 5 is a perfect root because 25−−√5.For each test case, output n distinct perfect roots. Note th…

曲线Curve

曲线Curve1.setFromPoints .setFromPoints()是几何体BufferGeometry的一个方法,通过该方法可以把数组pointsArr中坐标数据提取出来赋值给几何体。具体说就是把pointsArr里面坐标数据提取出来,赋值给geometry.attribu…

「LUCKY STUN穿透」在Docker中使用MiniUPnP为BT客户端自动添加内外端口不同的映射规则

「LUCKY STUN穿透」在Docker中使用MiniUPnP为BT客户端自动添加内外端口不同的映射规则「LUCKY STUN穿透」在Docker中使用MiniUPnP为BT客户端自动添加内外端口不同的映射规则 2024.04.23 关于本教程 在之前的教程中我们…

【论文学习】重新审视面向持续图像分割的基于查询的 Transformer || 用于二分类图像分割的多视图聚合网络

Rethinking Query-based Transformer for Continual Image Segmentation 重新审视面向持续图像分割的基于查询的 Transformer 理解 针对 “持续图像分割” 任务,重新分析并优化 “基于查询的 Transformer” 模型的应用逻辑 基于查询的 Transformer:图…

基于STM32的智能停车场系统设计(实物设计)

基于STM32的智能停车场系统设计摘要随着城市化进程加快与汽车保有量激增,传统停车场管理c效率低下、信息不透明、安全隐患突出等问题日益显著。为解决上述痛点,本文设计了一套基于STM32微控制器的智能停车场系统,实现车辆出入计数、环境参数监…

Kafka与RabbitMQ相比有什么优势? - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

MiniMax的全球化之路:中国AI公司出海的新样本

MiniMax成立4年即实现73%海外收入,以Talkie、海螺AI为核心产品,凭借“生而全球化”战略,从底层架构适配全球市场,通过文化本地化运营和高效市场推广,在全球200多个国家及地区拥有2.12亿用户,为中国AI公司出…

C++工程师的前端之旅:前后端对话 - 实时通信篇 02 - WebSocket订阅(观察者模式实现)

日期 内容 1 20260125 初版 作为一名C++工程师,我们理解观察者模式的核心:当对象状态改变时,自动通知所有依赖它的对象。今天,我用最简单的例子——LED灯的开关状态,展示如何将这一经典模式应用于Web实时通信。 一:为什么需要订阅机制? 想象一个工厂有100个LED灯,每个…

动态注册RBAC

1.PermissionPolicyProvider:每次[Authorize(Policy="xxx")]调用时动态生成Policy using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.DependencyInjection;namespace Infrastructure.…

YOLO26改进 - 采样 | ICCV 顶会技术:WaveletPool 小波池化强化采样,保留小目标细节

前言 本文介绍了基于小波变换的池化方法——Wavelet Pooling,作为传统最大池化与平均池化的有效替代方案。该方法通过两级小波分解丢弃高频子带,保留更具代表性的低频特征,从而在减少信息丢失的同时提升模型的正则化能力。我们将 Wavelet Po…

深度测评10个AI论文平台,研究生高效写作必备!

深度测评10个AI论文平台,研究生高效写作必备! AI 工具如何重塑研究生的学术写作之路 在当今科研与学术写作日益数字化的背景下,AI 工具正逐步成为研究生们不可或缺的得力助手。从初稿生成到内容优化,再到降重处理,这些…

图神经网络分享系列-GGNN(GATED GRAPH SEQUENCE NEURAL NETWORKS)(三)

目录 七、相关研究 八、讨论 GG-NN模型学到了什么? 逻辑推理与模型学习的对比 任务编码与背景知识 实验结果与局限性 动态推理优化 未来应用展望 A 收缩映射示例 限制更新以定义欧几里得度量下的收缩映射 GNN模型中的节点标签与信息传播 信息衰减与长程依…

音视频学习(八十六):宏块

什么是宏块(Macroblock)? 在传统的视频编码标准(如 MPEG-2 或 H.264)中,宏块是进行预测、变换、量化和编码的基本单元。 基本组成: 一个标准的宏块通常涵盖 16x16 个像素的亮度(Luma…

完整教程:(数据结构)栈和队列

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

day11|150. 逆波兰表达式求值 239. 滑动窗口最大值 347.前 K 个高频元素

150. 逆波兰表达式求值 150. 逆波兰表达式求值 | 代码随想录 栈的最后表演! | LeetCode:150. 逆波兰表达式求值_哔哩哔哩_bilibili 笔记 逆波兰式表达式就是二叉树的左右中遍历顺序;我们正常看见的表达式就是左中右…

求多个乘法逆元(模板)

线性算法 用于求一连串数字对于一个modp的逆元。洛谷P3811 只能用这种方法&#xff0c;别的算法都比这些要求一串要慢。 首先我们有一个,1−1≡1(modp) 然后设 pk∗ir,(1<r<i<p) 也就是 k 是 p/i 的商&#xff0c;r 是余数 。 再将这个式子放到(modp)意义下就会得…

语义分割实战——基于EGEUNet神经网络印章分割系统3:含训练测试代码、数据集和GUI交互界面

第一步&#xff1a;准备数据 印章分割-深度学习图像分割数据集 印章分割数据&#xff0c;可直接应用到一些常用深度学习分割算法中&#xff0c;比如FCN、Unet、SegNet、DeepLabV1、DeepLabV2、DeepLabV3、DeepLabV3、PSPNet、RefineNet、HRnet、Mask R-CNN、Segformer、DUCK-…

语义分割实战——基于EGEUNet神经网络印章分割系统2:含训练测试代码和数据集

第一步&#xff1a;准备数据 印章分割-深度学习图像分割数据集 印章分割数据&#xff0c;可直接应用到一些常用深度学习分割算法中&#xff0c;比如FCN、Unet、SegNet、DeepLabV1、DeepLabV2、DeepLabV3、DeepLabV3、PSPNet、RefineNet、HRnet、Mask R-CNN、Segformer、DUCK-…

语义分割实战——基于EGEUNet神经网络印章分割系统1:数据集说明(含下载链接)

印章分割-深度学习图像分割数据集 印章分割数据&#xff0c;可直接应用到一些常用深度学习分割算法中&#xff0c;比如FCN、Unet、SegNet、DeepLabV1、DeepLabV2、DeepLabV3、DeepLabV3、PSPNet、RefineNet、HRnet、Mask R-CNN、Segformer、DUCK-Net模型等 数据集总共有2000对…