Why Use This This skill provides specialized capabilities for 2025Emma's codebase.
Use Cases Developing new features in the 2025Emma repository Refactoring existing code to follow 2025Emma standards Understanding and working with 2025Emma's codebase structure
Skill Snapshot Auto scan of skill assets. Informational only.
Valid SKILL.md Checks against SKILL.md specification
Source & Community
Updated At Dec 17, 2025, 12:11 AM
Skill Stats
SKILL.md 292 Lines
Total Files 1
Total Size 0 B
License NOASSERTION
---
name: proxychains
description: Auto-detect network issues and force proxy usage with proxychains4. Use this skill when encountering connection timeouts, DNS failures, or blocked network access. Default proxy is http://127.0.0.1:9910
---
# Proxychains Network Proxy Skill
**自动使用代理解决网络问题** - 当遇到网络连接失败、超时或访问受限时,自动使用 proxychains4 强制走代理。
## When to Use This Skill
**触发条件(自动应用):**
- ❌ Connection timeout errors
- ❌ DNS resolution failures
- ❌ "Connection refused" errors
- ❌ HTTP 403/451 blocked access
- ❌ GitHub/PyPI/npm 等国外资源访问失败
- ❌ curl/wget/git/pip 等命令失败
**Claude 应该:**
1. 检测到网络错误后,自动在命令前添加 `proxychains4`
2. 使用默认代理配置:`http://127.0.0.1:9910`
3. 如果代理失败,提示用户检查代理服务状态
## Quick Reference
### 基本用法模式
```bash
# ❌ 原命令失败
curl https://github.com/user/repo
# ✅ 使用代理重试
proxychains4 curl https://github.com/user/repo
```
### 常见场景自动应用
**场景 1: Git 操作失败**
```bash
# 原命令
git clone https://github.com/user/repo.git
# 自动改为
proxychains4 git clone https://github.com/user/repo.git
```
**场景 2: Python pip 安装失败**
```bash
# 原命令
pip install requests
# 自动改为
proxychains4 pip install requests
```
**场景 3: npm/yarn 安装失败**
```bash
# 原命令
npm install package-name
# 自动改为
proxychains4 npm install package-name
```
**场景 4: wget/curl 下载失败**
```bash
# 原命令
wget https://example.com/file.tar.gz
# 自动改为
proxychains4 wget https://example.com/file.tar.gz
```
**场景 5: Docker 拉取镜像失败**
```bash
# 原命令
docker pull image:tag
# 自动改为
proxychains4 docker pull image:tag
```
**场景 6: SSH 连接失败**
```bash
# 原命令
ssh user@remote-host
# 自动改为
proxychains4 ssh user@remote-host
```
## 配置详情
### 默认代理配置
**本地代理地址:** `http://127.0.0.1:9910`
**配置文件位置:**
- `~/.proxychains/proxychains.conf` (推荐)
- `/etc/proxychains.conf` (系统级)
### 快速配置脚本
创建用户级配置(自动使用 127.0.0.1:9910):
```bash
mkdir -p ~/.proxychains
cat > ~/.proxychains/proxychains.conf << 'EOF'
# Proxychains configuration
strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
http 127.0.0.1 9910
EOF
```
### 环境变量方式(临时使用)
```bash
# 设置代理环境变量
export PROXYCHAINS_SOCKS5_HOST=127.0.0.1
export PROXYCHAINS_SOCKS5_PORT=9910
# 使用
proxychains4 curl https://github.com
```
## 工作原理
Proxychains 通过 LD_PRELOAD 机制拦截程序的网络调用:
1. **拦截系统调用**:Hook socket 相关的 libc 函数
2. **重定向连接**:将所有 TCP 连接重定向到代理服务器
3. **DNS 代理**:通过代理服务器解析域名
4. **透明代理**:应用程序无需修改
**重要限制:**
- 只支持动态链接的程序(statically linked 程序不支持)
- 只支持 TCP 连接(UDP 不支持)
- 部分使用特殊网络库的程序可能不兼容
## Claude 自动化规则
### 规则 1: 网络错误自动重试
```
IF 命令返回网络相关错误(timeout, connection refused, DNS failure)
THEN 自动使用 proxychains4 重试该命令
```
### 规则 2: 已知慢速源强制代理
```
IF 访问以下域名/服务:
- github.com
- raw.githubusercontent.com
- pypi.org
- npmjs.org
- registry.npmjs.org
- docker.io
- gcr.io
THEN 直接使用 proxychains4(不等待失败)
```
### 规则 3: 失败提示
```
IF proxychains4 命令也失败
THEN 提示用户:
1. 检查代理服务是否运行(127.0.0.1:9910)
2. 检查 proxychains 配置文件
3. 尝试其他代理地址
```
## 故障排除
### 检查代理服务状态
```bash
# 测试代理是否可用
curl -x http://127.0.0.1:9910 https://www.google.com
# 检查端口是否监听
netstat -tunlp | grep 9910
# 或
ss -tunlp | grep 9910
```
### 验证 proxychains 配置
```bash
# 测试配置是否正确
proxychains4 curl https://ipinfo.io/json
# 应该显示代理服务器的 IP,而不是本机 IP
```
### 常见错误处理
**错误 1: "proxychains: command not found"**
```bash
# 安装 proxychains4
sudo apt install proxychains4 # Debian/Ubuntu
sudo yum install proxychains-ng # CentOS/RHEL
```
**错误 2: "timeout"**
```bash
# 检查代理地址配置是否正确
cat ~/.proxychains/proxychains.conf | grep -A 2 "\[ProxyList\]"
# 修改超时时间(在配置文件中)
tcp_connect_time_out 15000
tcp_read_time_out 30000
```
**错误 3: "can't read configuration file"**
```bash
# 创建配置文件
mkdir -p ~/.proxychains
cp /etc/proxychains.conf ~/.proxychains/proxychains.conf
# 然后编辑配置
```
## 高级用法
### 多代理链
```conf
# ~/.proxychains/proxychains.conf
strict_chain # 按顺序使用所有代理
[ProxyList]
http 127.0.0.1 9910
socks5 127.0.0.1 1080
```
### 动态代理链
```conf
dynamic_chain # 自动跳过死代理
[ProxyList]
http 127.0.0.1 9910
http 127.0.0.1 8080
socks5 127.0.0.1 1080
```
### 随机代理链
```conf
random_chain
chain_len = 2 # 随机选择 2 个代理
[ProxyList]
http 127.0.0.1 9910
socks5 127.0.0.1 1080
socks5 127.0.0.1 1081
```
### 自定义 DNS 服务器
```bash
# 使用自定义 DNS 通过代理解析
export PROXY_DNS_SERVER=8.8.8.8
proxychains4 curl https://example.com
```
## 参考资源
- **官方仓库**: https://github.com/haad/proxychains
- **配置文件**: `references/proxychains.conf` (完整示例)
- **故障排除**: `references/troubleshooting.md`
- **命令速查**: `references/quick-reference.md`
## 总结
**记住这些原则:**
1. ❌ **遇到网络错误** → ✅ 自动加上 `proxychains4`
2. 🌐 **访问国外资源** → ✅ 主动使用 `proxychains4`
3. 🔧 **代理也失败** → ✅ 提示用户检查代理服务
**默认代理:** `http://127.0.0.1:9910`
---
**这个技能让 Claude 在遇到网络问题时自动使用代理,无需用户手动干预!**