3.5k★by acastellana
vpn-rotate-skill – OpenClaw Skill
vpn-rotate-skill is an OpenClaw Skills integration for coding workflows. Bypass API rate limits by rotating VPN servers. Works with any OpenVPN-compatible VPN (ProtonVPN, NordVPN, Mullvad, etc.). Automatically rotates to new server every N requests for fresh IPs. Use for high-volume scraping, government APIs, geo-restricted data.
Skill Snapshot
| name | vpn-rotate-skill |
| description | Bypass API rate limits by rotating VPN servers. Works with any OpenVPN-compatible VPN (ProtonVPN, NordVPN, Mullvad, etc.). Automatically rotates to new server every N requests for fresh IPs. Use for high-volume scraping, government APIs, geo-restricted data. OpenClaw Skills integration. |
| owner | acastellana |
| repository | acastellana/vpn-rotate-skill |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @acastellana/vpn-rotate-skill |
| last updated | Feb 7, 2026 |
Maintainer

name: vpn-rotate-skill description: Bypass API rate limits by rotating VPN servers. Works with any OpenVPN-compatible VPN (ProtonVPN, NordVPN, Mullvad, etc.). Automatically rotates to new server every N requests for fresh IPs. Use for high-volume scraping, government APIs, geo-restricted data.
VPN Rotate Skill
Rotate VPN servers to bypass API rate limits. Works with any OpenVPN-compatible VPN.
Setup
1. Run Setup Wizard
./scripts/setup.sh
This will:
- Check OpenVPN is installed
- Help you configure your VPN provider
- Set up passwordless sudo
- Test the connection
2. Manual Setup
If you prefer manual setup:
# Install OpenVPN
sudo apt install openvpn
# Create config directory
mkdir -p ~/.vpn/servers
# Download .ovpn files from your VPN provider
# Put them in ~/.vpn/servers/
# Create credentials file
echo "your_username" > ~/.vpn/creds.txt
echo "your_password" >> ~/.vpn/creds.txt
chmod 600 ~/.vpn/creds.txt
# Enable passwordless sudo for openvpn
echo "$USER ALL=(ALL) NOPASSWD: /usr/sbin/openvpn, /usr/bin/killall" | sudo tee /etc/sudoers.d/openvpn
Usage
Decorator (Recommended)
from scripts.decorator import with_vpn_rotation
@with_vpn_rotation(rotate_every=10, delay=1.0)
def scrape(url):
return requests.get(url).json()
# Automatically rotates VPN every 10 calls
for url in urls:
data = scrape(url)
VPN Class
from scripts.vpn import VPN
vpn = VPN()
# Connect
vpn.connect()
print(vpn.get_ip()) # New IP
# Rotate (disconnect + reconnect to different server)
vpn.rotate()
print(vpn.get_ip()) # Different IP
# Disconnect
vpn.disconnect()
Context Manager
from scripts.vpn import VPN
vpn = VPN()
with vpn.session():
# VPN connected
for url in urls:
vpn.before_request() # Handles rotation
data = requests.get(url).json()
# VPN disconnected
CLI
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
Configuration
Decorator Options
@with_vpn_rotation(
rotate_every=10, # Rotate after N requests
delay=1.0, # Seconds between requests
config_dir=None, # Override config directory
creds_file=None, # Override credentials file
country=None, # Filter servers by country prefix (e.g., "us")
auto_connect=True, # Connect automatically on first request
)
VPN Class Options
VPN(
config_dir="~/.vpn/servers",
creds_file="~/.vpn/creds.txt",
rotate_every=10,
delay=1.0,
verbose=True,
)
Recommended Settings
| API Aggressiveness | rotate_every | delay |
|---|---|---|
| Aggressive (Catastro, LinkedIn) | 5 | 2.0s |
| Standard | 10 | 1.0s |
| Lenient | 20-50 | 0.5s |
Files
vpn-rotate-skill/
├── SKILL.md # This file
├── README.md # Overview
├── scripts/
│ ├── vpn.py # VPN controller
│ ├── decorator.py # @with_vpn_rotation
│ └── setup.sh # Setup wizard
├── examples/
│ └── catastro.py # Spanish property API example
└── providers/
├── protonvpn.md # ProtonVPN setup
├── nordvpn.md # NordVPN setup
└── mullvad.md # Mullvad setup
Troubleshooting
"sudo: a password is required"
Run the setup script or manually add sudoers entry:
echo "$USER ALL=(ALL) NOPASSWD: /usr/sbin/openvpn, /usr/bin/killall" | sudo tee /etc/sudoers.d/openvpn
Connection fails
- Check credentials are correct
- Test manually:
sudo openvpn --config ~/.vpn/servers/server.ovpn --auth-user-pass ~/.vpn/creds.txt - Check VPN provider account is active
Still getting blocked
- Lower
rotate_every(try 5 instead of 10) - Increase
delay(try 2-3 seconds) - Check if API blocks VPN IPs entirely
No .ovpn files
Download from your VPN provider:
- ProtonVPN: https://protonvpn.com/support/vpn-config-download/
- NordVPN: https://nordvpn.com/ovpn/
- Mullvad: https://mullvad.net/en/account/#/openvpn-config
🔄 VPN Rotate Skill
Break free from API restrictions. Rotate IPs. Scrape without limits.
The Problem
APIs fight back against data collection:
- 🚫 IP blocks after a few requests
- 🚫 Rate limits killing throughput
- 🚫 Geo-restrictions locking you out
The Solution
Automatically rotate VPN servers to get fresh IPs. Works with any OpenVPN-compatible VPN:
- ✅ ProtonVPN
- ✅ NordVPN
- ✅ Mullvad
- ✅ Any provider with .ovpn configs
Quick Start
# 1. Setup (interactive)
./scripts/setup.sh
# 2. Use in Python
from scripts.decorator import with_vpn_rotation
@with_vpn_rotation(rotate_every=10)
def scrape(url):
return requests.get(url).json()
# Every 10 requests → new server → new IP → no blocks
for url in urls:
data = scrape(url)
How It Works
- Connects to VPN server via OpenVPN
- Makes N requests
- Disconnects, picks new server
- Reconnects with fresh IP
- Repeat
Success Rates
| Rotation | Success Rate | Speed |
|---|---|---|
| Every 5 requests | 95%+ | Slower |
| Every 10 requests | 90-95% | Medium |
| Every 20 requests | 80-90% | Faster |
Use Cases
- Government APIs — Catastro, court records, public data
- Real estate — Idealista, Zillow, property registries
- E-commerce — Price monitoring, stock tracking
- Search engines — SERP data, rankings
- Social media — Profiles, posts, analytics
Requirements
- Linux with OpenVPN (
apt install openvpn) - VPN account with OpenVPN support
- Passwordless sudo for openvpn (setup script handles this)
Documentation
- SKILL.md — Full API reference
- providers/ — Setup guides for specific VPNs
Stop fighting rate limits. Start rotating IPs.
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
Requirements
- OpenClaw CLI installed and configured.
- Language: Markdown
- License: MIT
- Topics:
Configuration
### Decorator Options ```python @with_vpn_rotation( rotate_every=10, # Rotate after N requests delay=1.0, # Seconds between requests config_dir=None, # Override config directory creds_file=None, # Override credentials file country=None, # Filter servers by country prefix (e.g., "us") auto_connect=True, # Connect automatically on first request ) ``` ### VPN Class Options ```python VPN( config_dir="~/.vpn/servers", creds_file="~/.vpn/creds.txt", rotate_every=10, delay=1.0, verbose=True, ) ```
FAQ
How do I install vpn-rotate-skill?
Run openclaw add @acastellana/vpn-rotate-skill in your terminal. This installs vpn-rotate-skill into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/acastellana/vpn-rotate-skill. Review commits and README documentation before installing.
