技能详情(站内镜像,无评论)
许可证:MIT-0
MIT-0 ·免费使用、修改和重新分发。无需归因。
版本:v0.1.0
统计:⭐ 0 · 1.7k · 1 current installs · 1 all-time installs
⭐ 0
安装量(当前) 1
🛡 VirusTotal :可疑 · OpenClaw :可疑
Package:acastellana/vpn-rotate-skill
安全扫描(ClawHub)
- VirusTotal :可疑
- OpenClaw :可疑
OpenClaw 评估
The skill appears to implement what it claims (rotating OpenVPN configs to change IPs), but its setup/instructions ask you to add a passwordless sudoers entry (including kill permissions), store plaintext VPN credentials, and run system-level commands — these are security-sensitive and warrant caution.
目的
The name/description match the implementation: the package manipulates OpenVPN (.ovpn) configs, connects/disconnects OpenVPN, rotates servers, and exposes a decorator + CLI for integration. There are no unrelated credentials or external services requested, and code operates on expected files (~/.vpn/servers, creds file, ProtonVPN fallback paths).
说明范围
SKILL.md and setup.sh instruct the user to create a credentials file with username/password in plaintext, move provider .ovpn files into a config directory, and add a sudoers entry to allow passwordless openvpn and kill operations. The setup also looks for and may reuse ProtonVPN config/credential paths. These instructions expand scope to system configuration changes and persistent credential storage beyond merely invoking OpenVPN.
安装机制
There is no formal install spec (instruction-only), so nothing is pulled from remote sources; code files are bundled with the skill. The included setup.sh can install OpenVPN via apt (uses sudo), which is expected but means the script will perform system package installs when run.
证书
The skill does not request environment variables or external secrets, which matches its purpose. However, it writes VPN credentials to a local plaintext file (~/.vpn/creds.txt) and may read ProtonVPN credential/config paths; storing credentials on disk is necessary for OpenVPN but increases risk if the host is compromised.
持久
The setup wizard adds a /etc/sudoers.d/vpn-rotate entry granting NOPASSWD for /usr/sbin/openvpn, /usr/bin/killall, and /bin/kill. Allowing passwordless sudo for these commands (especially general kill utilities) gives elevated power that could be abused if configs or binaries are tampered with. The skill does not request always: true and does not alter other skills, but the sudoers modification is a permanent, system-wide privileged change.
安装(复制给龙虾 AI)
将下方整段复制到龙虾中文库对话中,由龙虾按 SKILL.md 完成安装。
请把本段交给龙虾中文库(龙虾 AI)执行:为本机安装 OpenClaw 技能「Vpn Rotate Skill」。简介:Bypass API rate limits by rotating VPN servers. Works with any OpenVPN-compatib…。
请 fetch 以下地址读取 SKILL.md 并按文档完成安装:https://raw.githubusercontent.com/openclaw/skills/refs/heads/main/skills/acastellana/vpn-rotate-skill/SKILL.md
(来源:yingzhi8.cn 技能库)
SKILL.md
---
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
```bash
./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:
```bash
# 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)
```python
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
```python
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
```python
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
```bash
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
```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,
)
```
## 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:
```bash
echo "$USER ALL=(ALL) NOPASSWD: /usr/sbin/openvpn, /usr/bin/killall" | sudo tee /etc/sudoers.d/openvpn
```
### Connection fails
1. Check credentials are correct
2. Test manually: `sudo openvpn --config ~/.vpn/servers/server.ovpn --auth-user-pass ~/.vpn/creds.txt`
3. Check VPN provider account is active
### Still getting blocked
1. Lower `rotate_every` (try 5 instead of 10)
2. Increase `delay` (try 2-3 seconds)
3. 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