--- 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 在遇到网络问题时自动使用代理,无需用户手动干预!**