OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  vpn-rotate-skill:通过轮换 VPN 服务器绕过 API 速率限制

vpn-rotate-skill:通过轮换 VPN 服务器绕过 API 速率限制

 
  frontend ·  2026-02-07 13:48:04 · 3 次点击  · 0 条评论  

名称: vpn-rotate-skill
描述: 通过轮换 VPN 服务器来绕过 API 速率限制。兼容任何支持 OpenVPN 的 VPN 服务(如 ProtonVPN、NordVPN、Mullvad 等)。每 N 次请求后自动切换到新服务器以获取新 IP。适用于大规模数据抓取、政府 API 访问和地理限制数据获取。


VPN 轮换技能

通过轮换 VPN 服务器来绕过 API 速率限制。兼容任何支持 OpenVPN 的 VPN 服务。

设置

1. 运行设置向导

./scripts/setup.sh

此脚本将:
- 检查 OpenVPN 是否已安装
- 协助配置您的 VPN 服务商
- 设置免密码 sudo 权限
- 测试连接

2. 手动设置

如果您偏好手动设置:

# 安装 OpenVPN
sudo apt install openvpn

# 创建配置目录
mkdir -p ~/.vpn/servers

# 从您的 VPN 服务商下载 .ovpn 配置文件
# 将它们放入 ~/.vpn/servers/ 目录

# 创建凭据文件
echo "your_username" > ~/.vpn/creds.txt
echo "your_password" >> ~/.vpn/creds.txt
chmod 600 ~/.vpn/creds.txt

# 为 openvpn 启用免密码 sudo
echo "$USER ALL=(ALL) NOPASSWD: /usr/sbin/openvpn, /usr/bin/killall" | sudo tee /etc/sudoers.d/openvpn

使用方法

装饰器(推荐)

from scripts.decorator import with_vpn_rotation

@with_vpn_rotation(rotate_every=10, delay=1.0)
def scrape(url):
    return requests.get(url).json()

# 每调用 10 次后自动轮换 VPN
for url in urls:
    data = scrape(url)

VPN 类

from scripts.vpn import VPN

vpn = VPN()

# 连接
vpn.connect()
print(vpn.get_ip())  # 新 IP

# 轮换(断开连接并重新连接到其他服务器)
vpn.rotate()
print(vpn.get_ip())  # 不同的 IP

# 断开连接
vpn.disconnect()

上下文管理器

from scripts.vpn import VPN

vpn = VPN()

with vpn.session():
    # VPN 已连接
    for url in urls:
        vpn.before_request()  # 处理轮换
        data = requests.get(url).json()
# VPN 已断开

命令行界面

python scripts/vpn.py connect
python scripts/vpn.py status
python scripts/vpn.py rotate
python scripts/vpn.py disconnect
python scripts/vpn.py ip

配置

装饰器选项

@with_vpn_rotation(
    rotate_every=10,      # 每 N 次请求后轮换
    delay=1.0,            # 请求间隔秒数
    config_dir=None,      # 覆盖配置目录
    creds_file=None,      # 覆盖凭据文件
    country=None,         # 按国家代码前缀筛选服务器(例如 "us")
    auto_connect=True,    # 首次请求时自动连接
)

VPN 类选项

VPN(
    config_dir="~/.vpn/servers",
    creds_file="~/.vpn/creds.txt", 
    rotate_every=10,
    delay=1.0,
    verbose=True,
)

推荐设置

API 严格程度 rotate_every delay
严格(如 Catastro、LinkedIn) 5 2.0s
标准 10 1.0s
宽松 20-50 0.5s

文件结构

vpn-rotate-skill/
├── SKILL.md              # 本文档
├── README.md             # 概述
├── scripts/
│   ├── vpn.py            # VPN 控制器
│   ├── decorator.py      # @with_vpn_rotation 装饰器
│   └── setup.sh          # 设置向导
├── examples/
│   └── catastro.py       # 西班牙房产 API 示例
└── providers/
    ├── protonvpn.md      # ProtonVPN 设置指南
    ├── nordvpn.md        # NordVPN 设置指南
    └── mullvad.md        # Mullvad 设置指南

故障排除

"sudo: a password is required"

运行设置脚本或手动添加 sudoers 条目:

echo "$USER ALL=(ALL) NOPASSWD: /usr/sbin/openvpn, /usr/bin/killall" | sudo tee /etc/sudoers.d/openvpn

连接失败

  1. 检查凭据是否正确
  2. 手动测试:sudo openvpn --config ~/.vpn/servers/server.ovpn --auth-user-pass ~/.vpn/creds.txt
  3. 确认 VPN 服务商账户处于激活状态

仍被阻止

  1. 降低 rotate_every 值(尝试从 10 改为 5)
  2. 增加 delay 值(尝试 2-3 秒)
  3. 检查 API 是否完全屏蔽 VPN IP

缺少 .ovpn 文件

从您的 VPN 服务商下载:
- ProtonVPN:https://protonvpn.com/support/vpn-config-download/
- NordVPN:https://nordvpn.com/ovpn/
- Mullvad:https://mullvad.net/en/account/#/openvpn-config

3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor