Install
openclaw skills install @thcjp/vpn-rotatoropenclaw skills install @thcjp/vpn-rotator核心功能: 本技能提供中文交互等能力。 核心功能: 本技能提供、报表生成、统计洞察、数据可视化时使用等能力。
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| 复杂工作流可视化编排 | 不支持 | 支持 |
| 条件分支与异常重试 | 不支持 | 支持 |
| 定时触发与事件驱动 | 不支持 | 支持 |
| 执行日志与审计追踪 | 不支持 | 支持 |
| 分布式任务调度与负载均衡 | 不支持 | 支持 |
| 能力模块 | 说明 | 专业版增强 |
|---|---|---|
| VPN连接管理 | 连接/断开/状态查询 | 支持多VPN并发会话池 |
| IP轮换 | 按请求/时间切换 | 支持智能轮换策略 |
| 自动重连 | 断线恢复 | 指数退避自动重连 |
| 负载均衡 | 服务器选择 | 延迟+成功率综合评分 |
| 失败熔断 | 故障隔离 | 连续失败自动熔断+恢复 |
| VPN+代理链 | 混合代理 | VPN+SOCKS5双重匿名 |
| 按地区路由 | 地理路由 | 按目标域名自动选区 |
| 性能监控 | 运行指标 | 实时仪表盘+告警 |
| 服务器优选 | 质量评分 | 自动剔除低质量节点 |
| 配置热更新 | 动态配置 | 不中断服务更新配置 |
详细的输入输出格式请参考下方章节说明。
某数据采集平台需要同时运行50个采集任务,每个任务需要独立的出口IP。专业版的多VPN会话池支持:
from vpn_rotator import VPNPool, LoadBalancer, CircuitBreaker
# ...
# 初始化VPN会话池
pool = VPNPool(
max_connections=20, # 最大并发VPN连接数
auto_reconnect=True, # 自动重连
reconnect_backoff="exponential", # 指数退避
health_check_interval=30, # 健康检查间隔
)
# ...
# 负载均衡器:智能选择最优VPN
balancer = LoadBalancer(
strategy="weighted", # 加权轮询
metrics=["latency", "success_rate", "stability"],
fallback_on_failure=True,
)
# ...
# 熔断器:连续失败自动隔离
breaker = CircuitBreaker(
failure_threshold=5, # 连续失败5次熔断
reset_timeout=300, # 5分钟后尝试恢复
half_open_max_calls=3,
)
# ...
async def scrape_with_pool(url):
"""从池中获取VPN并执行采集"""
vpn = await pool.acquire(balancer=balancer, breaker=breaker)
try:
async with vpn.session():
response = await fetch(url)
breaker.record_success(vpn.id)
return response
except Exception as e:
breaker.record_failure(vpn.id)
raise
finally:
await pool.release(vpn)
某比价系统需要监控20个国家、100个电商网站的价格。专业版支持按目标地区自动选择VPN节点:
class GeoRouter:
"""按目标域名/地区自动路由VPN"""
REGION_MAP = {
"amazon.com": "US",
"amazon.co.uk": "UK",
"amazon.de": "DE",
"amazon.co.jp": "JP",
"amazon.fr": "FR",
}
# ...
async def route(self, target_url):
region = self._detect_region(target_url)
vpn = await self.pool.acquire(
country=region,
balancer=self.balancer
)
return vpn
# ...
def _detect_region(self, url):
for domain, region in self.REGION_MAP.items():
if domain in url:
return region
return None # 默认任意地区
某安全测试场景需要双重匿名:VPN提供优秀层IP隐藏,SOCKS5代理提供第二层出口IP。专业版支持代理链配置:
class ProxyChain:
"""VPN + SOCKS5 代理链"""
def __init__(self, vpn_pool, socks_pool):
self.vpn_pool = vpn_pool
self.socks_pool = socks_pool
# ...
async def request(self, url):
# 优秀层:VPN连接
# 第二层:通过VPN连接SOCKS5代理
socks = await self.socks_pool.acquire()
try:
proxy_url = f"socks5h://{socks.username}:{socks.password}@{socks.host}:{socks.port}"
response = await fetch_through_proxy(url, proxy_url)
return response
finally:
await self.socks_pool.release(socks)
pip install vpn-rotator aiohttp psutilfrom vpn_rotator import VPNPool, LoadBalancer, MetricsCollector
# ...
# 企业级配置
pool = VPNPool(
max_connections=20,
config_dirs=[
"~/.vpn/protonvpn/servers",
"~/.vpn/nordvpn/servers",
"~/.vpn/mullvad/servers"
],
auto_reconnect=True,
reconnect_attempts=3,
reconnect_backoff_base=2.0,
health_check_interval=30,
)
# ...
balancer = LoadBalancer(strategy="weighted")
metrics = MetricsCollector()
结果验证: 任务完成后,查看输出确认状态。成功时返回摘要和数据;失败时根据错误信息排查,参考恢复章节获取修复步骤.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | 否 | vpn-rotator处理的内容输入 |
| strict_level | string | 否 | 审查严格度, 可选: strict/normal/loose, 默认: normal |
{
"success": true,
"data": {
"overall_grade": "A",
"total_score": 92,
"max_score": 100,
"summary": "处理完成",
"details": [
{
"item": "代码风格",
"status": "pass",
"score": 95,
"comment": "符合规范"
},
{
"item": "安全合规",
"status": "warn",
"score": 80,
"comment": "符合规范"
}
],
"improvements": [
{
"priority": "high",
"suggestion": "建议优化",
"expected_gain": "+5分"
},
{
"priority": "medium",
"suggestion": "建议优化",
"expected_gain": "+3分"
}
]
},
"error": null
}
| 问题现象 | 可能原因 | 排查步骤 | 优先级 |
|---|---|---|---|
| 所有VPN连接失败 | 网络中断或凭证过期 | 验证凭证 | P0 |
| 大量请求超时 | VPN延迟过高 | 查看延迟指标,切换低延迟节点 | P0 |
| 频繁重连 | VPN服务器不稳定 | 查看重连日志,拉黑不稳定节点 | P1 |
| 熔断器频繁触发 | 目标网站封锁VPN IP | 更换VPN服务商,使用代理链 | P1 |
| 地区路由错误 | 域名映射表过时 | 更新地区映射表,检查匹配逻辑 | P1 |
| 内存占用过高 | 连接数过多 | 降低max_connections,检查连接泄漏 | P2 |
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent平台内置LLM提供 |
| OpenVPN | 系统软件 | 必需 | apt install openvpn / 官网下载 |
| aiohttp | Python库 | 必需 | pip install aiohttp |
| psutil | Python库 | 必需 | pip install psutil |
| redis | Python库 | 推荐 | pip install redis |
| prometheus-client | 监控库 | 推荐 | pip install prometheus-client |
| requests | Python库 | 推荐 | pip install requests |
| VPN服务商账号 | 订阅 | 必需 | NordVPN/Mullvad/ProtonVPN等 |
~/.vpn/creds.txt,权限设为600~/.vpn/servers/ 目录,按服务商分子目录REDIS_URL.gitignore 排除 ~/.vpn/POOL_CONFIG = {
"max_connections": 20, # 最大并发VPN连接
"min_idle": 5, # 最小空闲连接
"acquire_timeout": 30, # 获取连接超时
"idle_timeout": 300, # 空闲连接超时
"auto_reconnect": True, # 自动重连
"reconnect_attempts": 3, # 重连次数
"reconnect_backoff": "exponential",
"reconnect_backoff_base": 2.0, # 初始退避秒数
"reconnect_backoff_max": 60, # 最大退避秒数
"health_check_interval": 30, # 健康检查间隔
"health_check_url": "https://api.ipify.org",
}
BALANCER_CONFIG = {
"strategy": "weighted", # 加权轮询
"metrics": {
"latency_weight": 0.4, # 延迟权重
"success_rate_weight": 0.4, # 成功率权重
"stability_weight": 0.2, # 稳定性权重
},
"scoring_window": 3600, # 评分窗口(秒)
"min_samples": 10, # 最小样本数
"blacklist_threshold": 0.3, # 评分低于0.3拉黑
"blacklist_duration": 1800, # 拉黑时长(秒)
"fallback_strategy": "round_robin", # 无评分数据时回退策略
}
CIRCUIT_CONFIG = {
"failure_threshold": 5, # 连续失败5次熔断
"reset_timeout": 300, # 5分钟后尝试恢复
"half_open_max_calls": 3, # 半开状态最多测试3次
"success_threshold": 2, # 连续成功2次完全恢复
"monitored_errors": [
"ConnectionTimeout",
"AuthFailure",
"DNSResolutionError",
"TLSError",
],
"auto_isolate": True, # 自动隔离熔断的VPN
"isolation_duration": 1800, # 隔离时长
}
METRICS_SCHEMA = {
"vpn_id": "string",
"provider": "string",
"country": "string",
"server": "string",
"connection_uptime": "int", # 连接时长
"total_requests": "int", # 总请求数
"success_rate": "float", # 成功率
"avg_latency_ms": "float", # 平均延迟
"p99_latency_ms": "float", # P99延迟
"bandwidth_used_mb": "float", # 带宽使用
"reconnect_count": "int", # 重连次数
"last_rotation": "timestamp", # 最后轮换时间
"circuit_state": "string", # 熔断状态
}
A:受系统资源限制(每个VPN连接约消耗50MB内存)。建议单机不超过30个并发连接。如需更多并发,建议使用多台机器分布式部署,通过中心控制器统一管理.
A:采用指数退避:第1次立即重连,第2次等待2秒,第3次等待4秒,第4次等待8秒,最大等待60秒。连续3次重连失败后标记VPN为不可用并隔离.
A:综合三个维度评分(0-1分):延迟(40%权重,延迟越低分越高)、成功率(40%权重,成功率越高分越高)、稳定性(20%权重,连接时长越长分越高)。评分低于0.3的VPN自动拉黑30分钟.
A:双重匿名:(1) VPN隐藏真实IP;(2) SOCKS5代理提供二次出口IP,即使VPN被识别,目标网站看到的也是SOCKS5出口IP。适合对匿名性要求极高的安全测试场景.
A:维护域名到地区的映射表,发起请求前根据目标域名自动选择对应地区的VPN节点。例如访问amazon.de自动选择德国VPN。未匹配的域名使用默认VPN.
A:不会。热更新采用原子替换:新配置加载到副本,验证通过后原子切换。正在进行的请求使用旧配置完成,新请求使用新配置.
A:专业版提供实时仪表盘,展示:(1) 活跃VPN数与地区分布;(2) 各VPN延迟与成功率;(3) 熔断状态与隔离列表;(4) 带宽使用与重连次数。支持推送到Prometheus/Grafana.
A:基于历史性能数据评分,评分低于0.3的节点自动拉黑30分钟。拉黑期间不分配新请求,30分钟后进入半开状态进行探测,连续成功2次后恢复.
A:当前版本以OpenVPN为主。WireGuard支持在路线图中,预计下个大版本发布。WireGuard相比OpenVPN有更低的连接延迟和更高的吞吐量.
A:如果你有以下需求之一,建议升级:(1) 需要同时管理多个VPN连接;(2) 采集频率超过每分钟50次;(3) 需要多地区路由;(4) 需要自动重连与熔断;(5) 需要双重匿名代理链.
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| LLM响应超时或无响应 | 网络延迟或模型负载过高 | 请求重试;确认Agent平台LLM服务正常 |
| 输入内容格式不正确 | 用户输入不符合skill预期格式 | 检查输入是否符合skill使用说明中的格式要求,参考示例章节 |
| 执行结果与预期不符 | 指令描述不够明确或上下文不足 | 提供更详细的指令描述,补充必要的上下文信息 |
| 命令执行失败 | 运行环境不满足要求或权限不足 | 确认运行环境符合依赖说明中的要求;检查命令权限设置 |
| 错误现象 | 可能原因 | 诊断步骤 | 解决方案 |
|---|---|---|---|
| VPN连接失败 | VPN服务提供商问题或配置错误 | 检查VPN服务提供商状态,验证配置文件 | 重置VPN配置,尝试更换VPN服务提供商 |
| 自动重连失败 | 重连策略配置错误或网络问题 | 检查重连策略配置,确认网络连接正常 | 调整重连策略,确保网络连接稳定 |
| 负载均衡器选择错误 | 负载均衡策略配置不当 | 检查负载均衡策略配置,确认服务器状态 | 调整负载均衡策略,确保服务器状态正确 |
| 失败熔断器误触发 | 故障隔离设置不当 | 检查故障隔离设置,确认故障检测逻辑 | 调整故障隔离设置,优化故障检测逻辑 |
| 性能监控数据缺失 | 监控配置错误或服务中断 | 检查监控配置,确认监控服务运行正常 | 修复监控配置,重启监控服务 |
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| VPN凭证泄露 | 高 | 使用加密存储,限制访问权限 | 定期审计凭证访问日志 |
| VPN配置文件暴露 | 中 | 使用安全存储,确保文件权限正确 | 定期检查文件权限和存储位置 |
| VPN连接被拦截 | 高 | 使用TLS加密,选择安全VPN服务 | 定期检查VPN连接加密状态 |
| VPN服务器被攻击 | 高 | 定期更新VPN软件,使用防火墙 | 定期检查VPN服务器安全日志 |
| VPN流量被监控 | 高 | 使用VPN+SOCKS5代理链,选择匿名VPN服务 | 定期检查流量加密状态和代理链配置 |
| 场景 | 效率提升量化分析 | 差异化对比 |
|---|---|---|
| 大规模分布式采集 | 通过多VPN并发,效率提升50%以上 | 传统方式单VPN,效率低,易受IP封锁 |
| 多地区价格监控 | 智能路由,监控效率提升30% | 传统方式手动配置,效率低,易出错 |
| 安全测试 | 双重匿名,测试安全性提升20% | 传统方式单层匿名,安全性低 |
| 自动化测试 | 自动重连和熔断,测试稳定性提升15% | 传统方式人工干预,效率低 |
| 性能监控 | 实时仪表盘,监控效率提升25% | 传统方式手动收集,效率低,数据延迟 |
| 请注意,上述表格中的数据为示例,实际效率提升和差异化对比可能因具体使用场景和配置而有所不同。 |
A1: 全功能VPN轮换平台,。支持文本指令和结构化参数输入,具体格式参考使用流程章节。
A2: 是的,部分功能需要配置对应平台的API Key。请在依赖说明章节查看具体要求,并通过环境变量安全配置。
A3: 检查命令参数是否正确,确认运行环境支持exec能力。如遇权限问题,请参照错误处理章节排查。
| 操作场景 | 手动耗时 | 自动化耗时 | 效率提升 |
|---|---|---|---|
| 文件解析与提取 | 5-10分钟/个 | <5秒/个 | 60-120x |
| 批量文件处理(100个) | 8-16小时 | <5分钟 | 96-192x |
| API调用与响应解析 | 2-3分钟/次 | <1秒/次 | 120-180x |
| 多接口数据聚合 | 15-30分钟 | <10秒 | 90-180x |
| 命令执行与结果收集 | 3-5分钟/次 | <2秒/次 | 90-150x |
| 重复任务批量执行 | 因任务而异 | 线性缩减 | 5-50x |
| 错误排查与修复 | 10-30分钟 | <30秒 | 20-60x |
| 对比维度 | VPN轮换工具专业版 | 传统手动方式 | 通用脚本工具 |
|---|---|---|---|
| 自动化程度 | 全流程自动 | 完全手动 | 部分自动 |
| 错误处理 | 内置错误恢复 | 依赖人工经验 | 基本try-catch |
| 可复用性 | 参数化配置 | 一次性脚本 | 模板化 |
| 安全合规 | 内置安全检查 | 无安全保障 | 无安全保障 |
| 适用场景 | 全功能VPN轮换平台, | 通用场景 | 通用场景 |