名称: vpn-rotate-skill
描述: 通过轮换 VPN 服务器来绕过 API 速率限制。兼容任何支持 OpenVPN 的 VPN 服务(如 ProtonVPN、NordVPN、Mullvad 等)。每 N 次请求后自动切换到新服务器以获取新 IP。适用于大规模数据抓取、政府 API 访问和地理限制数据获取。
通过轮换 VPN 服务器来绕过 API 速率限制。兼容任何支持 OpenVPN 的 VPN 服务。
./scripts/setup.sh
此脚本将:
- 检查 OpenVPN 是否已安装
- 协助配置您的 VPN 服务商
- 设置免密码 sudo 权限
- 测试连接
如果您偏好手动设置:
# 安装 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)
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(
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 设置指南
运行设置脚本或手动添加 sudoers 条目:
echo "$USER ALL=(ALL) NOPASSWD: /usr/sbin/openvpn, /usr/bin/killall" | sudo tee /etc/sudoers.d/openvpn
sudo openvpn --config ~/.vpn/servers/server.ovpn --auth-user-pass ~/.vpn/creds.txtrotate_every 值(尝试从 10 改为 5)delay 值(尝试 2-3 秒)从您的 VPN 服务商下载:
- ProtonVPN:https://protonvpn.com/support/vpn-config-download/
- NordVPN:https://nordvpn.com/ovpn/
- Mullvad:https://mullvad.net/en/account/#/openvpn-config