mirror of
https://github.com/tradecatlabs/vibe-coding-cn.git
synced 2026-08-13 02:48:05 +00:00
超级版1
This commit is contained in:
@@ -0,0 +1,291 @@
|
||||
---
|
||||
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 在遇到网络问题时自动使用代理,无需用户手动干预!**
|
||||
@@ -0,0 +1,101 @@
|
||||
# Proxychains 参考文档索引
|
||||
|
||||
## 核心文档
|
||||
|
||||
- **proxychains.conf** - 完整配置文件示例(针对 127.0.0.1:9910 优化)
|
||||
- **quick-reference.md** - 快速命令参考和常见场景
|
||||
- **troubleshooting.md** - 故障排除指南
|
||||
- **setup-guide.md** - 安装和初始配置指南
|
||||
|
||||
## 使用场景
|
||||
|
||||
本技能包专为以下场景设计:
|
||||
|
||||
1. **自动代理重试** - Claude 检测到网络错误时自动使用代理
|
||||
2. **已知慢速源** - 访问 GitHub、PyPI、npm 等自动走代理
|
||||
3. **一键配置** - 快速配置代理指向 127.0.0.1:9910
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1. 安装 proxychains4
|
||||
|
||||
```bash
|
||||
# Ubuntu/Debian
|
||||
sudo apt install proxychains4
|
||||
|
||||
# CentOS/RHEL
|
||||
sudo yum install proxychains-ng
|
||||
|
||||
# macOS
|
||||
brew install proxychains-ng
|
||||
```
|
||||
|
||||
### 2. 配置代理(127.0.0.1:9910)
|
||||
|
||||
```bash
|
||||
mkdir -p ~/.proxychains
|
||||
cat > ~/.proxychains/proxychains.conf << 'EOF'
|
||||
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
|
||||
```
|
||||
|
||||
### 3. 测试代理
|
||||
|
||||
```bash
|
||||
# 测试配置
|
||||
proxychains4 curl https://ipinfo.io/json
|
||||
|
||||
# 应该显示代理服务器的 IP 地址
|
||||
```
|
||||
|
||||
## 核心概念
|
||||
|
||||
**Proxychains 工作原理:**
|
||||
- 通过 LD_PRELOAD 拦截程序的 socket 调用
|
||||
- 将所有 TCP 连接重定向到代理服务器
|
||||
- 支持 HTTP、SOCKS4、SOCKS5 代理协议
|
||||
- 透明代理,应用程序无需修改
|
||||
|
||||
**适用范围:**
|
||||
- ✅ 动态链接的程序
|
||||
- ✅ TCP 连接
|
||||
- ✅ HTTP/HTTPS 请求
|
||||
- ❌ 静态链接程序
|
||||
- ❌ UDP 连接
|
||||
|
||||
## 参考文档说明
|
||||
|
||||
### proxychains.conf
|
||||
完整的配置文件模板,已针对 127.0.0.1:9910 优化,包含:
|
||||
- 超时时间设置
|
||||
- DNS 代理配置
|
||||
- 代理链模式选择
|
||||
|
||||
### quick-reference.md
|
||||
快速命令参考,包含:
|
||||
- 常用命令模式
|
||||
- 不同工具的代理使用方法
|
||||
- 环境变量配置
|
||||
|
||||
### troubleshooting.md
|
||||
故障排除指南,包含:
|
||||
- 常见错误和解决方案
|
||||
- 代理服务检查方法
|
||||
- 配置验证步骤
|
||||
|
||||
### setup-guide.md
|
||||
详细的安装和配置指南,包含:
|
||||
- 不同系统的安装方法
|
||||
- 配置文件详解
|
||||
- 高级配置选项
|
||||
|
||||
---
|
||||
|
||||
**使用提示:** Claude 会自动使用这些参考文档中的信息来帮助解决网络问题。
|
||||
@@ -0,0 +1,79 @@
|
||||
# Proxychains 配置文件
|
||||
# 针对本地代理 127.0.0.1:9910 优化
|
||||
|
||||
# 代理链模式(三选一)
|
||||
# ===========================
|
||||
|
||||
# strict_chain - 严格按顺序使用所有代理(推荐)
|
||||
# 所有代理必须在线,任何一个失败则整个链失败
|
||||
strict_chain
|
||||
|
||||
# dynamic_chain - 动态代理链
|
||||
# 自动跳过离线代理,至少需要一个可用
|
||||
#dynamic_chain
|
||||
|
||||
# random_chain - 随机代理链
|
||||
# 从列表中随机选择代理
|
||||
#random_chain
|
||||
#chain_len = 2 # 随机链长度
|
||||
|
||||
# 代理 DNS 请求
|
||||
# ===========================
|
||||
# 通过代理服务器解析 DNS,避免 DNS 泄漏
|
||||
proxy_dns
|
||||
|
||||
# DNS 解析设置
|
||||
# ===========================
|
||||
# remote_dns_subnet - 用于代理 DNS 的虚拟子网
|
||||
# 默认 224,范围 1-255
|
||||
remote_dns_subnet 224
|
||||
|
||||
# 超时设置(毫秒)
|
||||
# ===========================
|
||||
# tcp_read_time_out - 读取超时
|
||||
tcp_read_time_out 15000
|
||||
|
||||
# tcp_connect_time_out - 连接超时
|
||||
tcp_connect_time_out 8000
|
||||
|
||||
# 日志设置
|
||||
# ===========================
|
||||
# 安静模式(不输出代理链信息)
|
||||
# quiet_mode
|
||||
|
||||
# 代理列表
|
||||
# ===========================
|
||||
# 格式:type host port [username password]
|
||||
# 支持类型:http, socks4, socks5
|
||||
#
|
||||
# 示例:
|
||||
# http 127.0.0.1 8080 username password
|
||||
# socks4 127.0.0.1 1080
|
||||
# socks5 127.0.0.1 1080 username password
|
||||
|
||||
[ProxyList]
|
||||
# 默认本地代理:127.0.0.1:9910
|
||||
http 127.0.0.1 9910
|
||||
|
||||
# 备用代理(取消注释以启用)
|
||||
# ===========================
|
||||
# http 127.0.0.1 8080
|
||||
# socks5 127.0.0.1 1080
|
||||
|
||||
# 使用说明
|
||||
# ===========================
|
||||
# 1. 将此文件保存为:
|
||||
# ~/.proxychains/proxychains.conf (用户级,推荐)
|
||||
# /etc/proxychains.conf (系统级)
|
||||
#
|
||||
# 2. 测试配置:
|
||||
# proxychains4 curl https://ipinfo.io/json
|
||||
#
|
||||
# 3. 使用示例:
|
||||
# proxychains4 git clone https://github.com/user/repo.git
|
||||
# proxychains4 pip install package-name
|
||||
# proxychains4 npm install package-name
|
||||
#
|
||||
# 4. 检查代理服务:
|
||||
# netstat -tunlp | grep 9910
|
||||
# curl -x http://127.0.0.1:9910 https://www.google.com
|
||||
@@ -0,0 +1,379 @@
|
||||
# Proxychains 快速参考
|
||||
|
||||
## 基本语法
|
||||
|
||||
```bash
|
||||
proxychains4 [command] [arguments]
|
||||
```
|
||||
|
||||
## 常用命令模式
|
||||
|
||||
### Git 操作
|
||||
|
||||
```bash
|
||||
# 克隆仓库
|
||||
proxychains4 git clone https://github.com/user/repo.git
|
||||
|
||||
# 拉取更新
|
||||
proxychains4 git pull
|
||||
|
||||
# 推送代码
|
||||
proxychains4 git push origin main
|
||||
|
||||
# 添加子模块
|
||||
proxychains4 git submodule update --init --recursive
|
||||
```
|
||||
|
||||
### Python/pip
|
||||
|
||||
```bash
|
||||
# 安装包
|
||||
proxychains4 pip install requests
|
||||
proxychains4 pip install -r requirements.txt
|
||||
|
||||
# 升级包
|
||||
proxychains4 pip install --upgrade package-name
|
||||
|
||||
# 搜索包
|
||||
proxychains4 pip search package-name
|
||||
|
||||
# 使用国内镜像 + 代理(双保险)
|
||||
proxychains4 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package-name
|
||||
```
|
||||
|
||||
### Node.js/npm/yarn
|
||||
|
||||
```bash
|
||||
# npm 安装
|
||||
proxychains4 npm install package-name
|
||||
proxychains4 npm install -g package-name
|
||||
proxychains4 npm install
|
||||
|
||||
# yarn 安装
|
||||
proxychains4 yarn add package-name
|
||||
proxychains4 yarn install
|
||||
|
||||
# 清理缓存后安装
|
||||
proxychains4 npm cache clean --force
|
||||
proxychains4 npm install
|
||||
```
|
||||
|
||||
### curl/wget
|
||||
|
||||
```bash
|
||||
# curl 下载
|
||||
proxychains4 curl -O https://example.com/file.tar.gz
|
||||
proxychains4 curl -L https://example.com/redirect
|
||||
|
||||
# wget 下载
|
||||
proxychains4 wget https://example.com/file.tar.gz
|
||||
proxychains4 wget -c https://example.com/large-file.iso
|
||||
|
||||
# API 请求
|
||||
proxychains4 curl -X POST https://api.example.com/endpoint
|
||||
```
|
||||
|
||||
### Docker
|
||||
|
||||
```bash
|
||||
# 拉取镜像
|
||||
proxychains4 docker pull ubuntu:latest
|
||||
proxychains4 docker pull nginx:alpine
|
||||
|
||||
# 构建镜像(如果需要下载基础镜像)
|
||||
proxychains4 docker build -t myapp:latest .
|
||||
|
||||
# 推送镜像
|
||||
proxychains4 docker push myregistry.com/myapp:latest
|
||||
```
|
||||
|
||||
### SSH/SCP
|
||||
|
||||
```bash
|
||||
# SSH 连接
|
||||
proxychains4 ssh user@remote-host
|
||||
|
||||
# SCP 文件传输
|
||||
proxychains4 scp file.txt user@remote-host:/path/
|
||||
proxychains4 scp -r folder/ user@remote-host:/path/
|
||||
|
||||
# rsync 同步
|
||||
proxychains4 rsync -avz folder/ user@remote-host:/path/
|
||||
```
|
||||
|
||||
### 其他工具
|
||||
|
||||
```bash
|
||||
# telnet
|
||||
proxychains4 telnet example.com 80
|
||||
|
||||
# nc (netcat)
|
||||
proxychains4 nc example.com 80
|
||||
|
||||
# ftp
|
||||
proxychains4 ftp ftp.example.com
|
||||
|
||||
# svn
|
||||
proxychains4 svn checkout https://example.com/svn/repo
|
||||
|
||||
# mercurial (hg)
|
||||
proxychains4 hg clone https://example.com/hg/repo
|
||||
```
|
||||
|
||||
## 配置文件选项
|
||||
|
||||
### 指定配置文件
|
||||
|
||||
```bash
|
||||
# 使用自定义配置文件
|
||||
proxychains4 -f /path/to/proxychains.conf curl https://example.com
|
||||
|
||||
# 使用当前目录配置
|
||||
proxychains4 -f ./proxychains.conf command
|
||||
```
|
||||
|
||||
### 环境变量方式
|
||||
|
||||
```bash
|
||||
# 设置代理主机和端口(SOCKS5)
|
||||
export PROXYCHAINS_SOCKS5_HOST=127.0.0.1
|
||||
export PROXYCHAINS_SOCKS5_PORT=9910
|
||||
proxychains4 curl https://example.com
|
||||
|
||||
# 指定配置文件路径
|
||||
export PROXYCHAINS_CONF_FILE=~/.proxychains/custom.conf
|
||||
proxychains4 command
|
||||
|
||||
# 自定义 DNS 服务器
|
||||
export PROXY_DNS_SERVER=8.8.8.8
|
||||
proxychains4 curl https://example.com
|
||||
```
|
||||
|
||||
### 启动代理会话
|
||||
|
||||
```bash
|
||||
# 在代理环境中启动 shell
|
||||
proxychains4 bash
|
||||
# 或
|
||||
proxychains4 zsh
|
||||
|
||||
# 然后所有命令都会通过代理
|
||||
git clone https://github.com/user/repo.git
|
||||
pip install requests
|
||||
npm install package-name
|
||||
|
||||
# 退出代理会话
|
||||
exit
|
||||
```
|
||||
|
||||
## 诊断和测试
|
||||
|
||||
### 测试代理连接
|
||||
|
||||
```bash
|
||||
# 测试 HTTP 代理
|
||||
proxychains4 curl https://ipinfo.io/json
|
||||
proxychains4 curl https://ifconfig.me
|
||||
|
||||
# 测试特定网站
|
||||
proxychains4 curl -I https://github.com
|
||||
proxychains4 curl -I https://google.com
|
||||
|
||||
# 详细输出(调试)
|
||||
proxychains4 -q curl -v https://example.com
|
||||
```
|
||||
|
||||
### 检查代理服务
|
||||
|
||||
```bash
|
||||
# 检查端口是否监听
|
||||
netstat -tunlp | grep 9910
|
||||
ss -tunlp | grep 9910
|
||||
lsof -i :9910
|
||||
|
||||
# 测试代理直接连接(不用 proxychains)
|
||||
curl -x http://127.0.0.1:9910 https://www.google.com
|
||||
curl -x socks5://127.0.0.1:1080 https://www.google.com
|
||||
|
||||
# 测试代理认证
|
||||
curl -x http://username:password@127.0.0.1:9910 https://www.google.com
|
||||
```
|
||||
|
||||
### DNS 解析测试
|
||||
|
||||
```bash
|
||||
# 通过代理解析 DNS
|
||||
proxychains4 nslookup google.com
|
||||
proxychains4 dig google.com
|
||||
|
||||
# 使用 proxyresolv 工具(proxychains 自带)
|
||||
proxyresolv google.com
|
||||
proxyresolv github.com
|
||||
```
|
||||
|
||||
## 快速配置生成
|
||||
|
||||
### 单行命令创建配置
|
||||
|
||||
```bash
|
||||
# 创建用户级配置(HTTP 代理 127.0.0.1:9910)
|
||||
mkdir -p ~/.proxychains && cat > ~/.proxychains/proxychains.conf << 'EOF'
|
||||
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
|
||||
|
||||
# 创建 SOCKS5 配置
|
||||
mkdir -p ~/.proxychains && cat > ~/.proxychains/proxychains.conf << 'EOF'
|
||||
strict_chain
|
||||
proxy_dns
|
||||
[ProxyList]
|
||||
socks5 127.0.0.1 1080
|
||||
EOF
|
||||
```
|
||||
|
||||
### 临时配置(当前目录)
|
||||
|
||||
```bash
|
||||
# 在当前目录创建临时配置
|
||||
cat > proxychains.conf << 'EOF'
|
||||
strict_chain
|
||||
proxy_dns
|
||||
[ProxyList]
|
||||
http 127.0.0.1 9910
|
||||
EOF
|
||||
|
||||
# 使用临时配置
|
||||
proxychains4 -f ./proxychains.conf curl https://github.com
|
||||
```
|
||||
|
||||
## 性能优化
|
||||
|
||||
### 减少延迟
|
||||
|
||||
```bash
|
||||
# 配置文件中调整超时
|
||||
tcp_connect_time_out 5000 # 5秒
|
||||
tcp_read_time_out 10000 # 10秒
|
||||
|
||||
# 使用 quiet_mode 减少输出
|
||||
quiet_mode
|
||||
```
|
||||
|
||||
### 并行下载
|
||||
|
||||
```bash
|
||||
# aria2 多线程下载
|
||||
proxychains4 aria2c -x 16 https://example.com/large-file.iso
|
||||
|
||||
# wget 多连接下载
|
||||
proxychains4 wget --limit-rate=10m https://example.com/file.tar.gz
|
||||
```
|
||||
|
||||
## 常见组合场景
|
||||
|
||||
### 场景 1: Python 项目依赖安装
|
||||
|
||||
```bash
|
||||
# 克隆项目
|
||||
proxychains4 git clone https://github.com/user/project.git
|
||||
cd project
|
||||
|
||||
# 创建虚拟环境
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
|
||||
# 安装依赖
|
||||
proxychains4 pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 场景 2: Node.js 项目初始化
|
||||
|
||||
```bash
|
||||
# 克隆项目
|
||||
proxychains4 git clone https://github.com/user/project.git
|
||||
cd project
|
||||
|
||||
# 安装依赖
|
||||
proxychains4 npm install
|
||||
# 或
|
||||
proxychains4 yarn install
|
||||
|
||||
# 运行项目(如果需要下载额外资源)
|
||||
proxychains4 npm start
|
||||
```
|
||||
|
||||
### 场景 3: Docker 镜像构建
|
||||
|
||||
```bash
|
||||
# 拉取基础镜像
|
||||
proxychains4 docker pull node:18-alpine
|
||||
|
||||
# 构建镜像(Dockerfile 中有 FROM 远程镜像)
|
||||
proxychains4 docker build -t myapp:latest .
|
||||
|
||||
# 推送到仓库
|
||||
proxychains4 docker push myregistry.com/myapp:latest
|
||||
```
|
||||
|
||||
### 场景 4: 系统软件更新
|
||||
|
||||
```bash
|
||||
# Ubuntu/Debian
|
||||
proxychains4 sudo apt update
|
||||
proxychains4 sudo apt upgrade
|
||||
|
||||
# CentOS/RHEL
|
||||
proxychains4 sudo yum update
|
||||
|
||||
# Arch Linux
|
||||
proxychains4 sudo pacman -Syu
|
||||
```
|
||||
|
||||
## 别名设置(可选)
|
||||
|
||||
```bash
|
||||
# 添加到 ~/.bashrc 或 ~/.zshrc
|
||||
alias pc='proxychains4'
|
||||
alias pcgit='proxychains4 git'
|
||||
alias pcpip='proxychains4 pip'
|
||||
alias pcnpm='proxychains4 npm'
|
||||
alias pccurl='proxychains4 curl'
|
||||
alias pcwget='proxychains4 wget'
|
||||
|
||||
# 使用别名
|
||||
pc curl https://github.com
|
||||
pcgit clone https://github.com/user/repo.git
|
||||
pcpip install requests
|
||||
```
|
||||
|
||||
## 故障排除快速检查清单
|
||||
|
||||
```bash
|
||||
# 1. 检查 proxychains 是否安装
|
||||
which proxychains4
|
||||
|
||||
# 2. 检查配置文件是否存在
|
||||
ls -la ~/.proxychains/proxychains.conf
|
||||
cat ~/.proxychains/proxychains.conf
|
||||
|
||||
# 3. 检查代理服务是否运行
|
||||
netstat -tunlp | grep 9910
|
||||
|
||||
# 4. 测试代理直接连接
|
||||
curl -x http://127.0.0.1:9910 https://www.google.com
|
||||
|
||||
# 5. 测试 proxychains 连接
|
||||
proxychains4 curl https://ipinfo.io/json
|
||||
|
||||
# 6. 查看详细错误信息
|
||||
proxychains4 curl -v https://example.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**提示:** 将常用命令保存为 shell 脚本或别名,可以提高效率。
|
||||
@@ -0,0 +1,640 @@
|
||||
# Proxychains 安装和配置指南
|
||||
|
||||
## 安装 Proxychains
|
||||
|
||||
### Linux 系统
|
||||
|
||||
#### Ubuntu/Debian
|
||||
|
||||
```bash
|
||||
# 更新包列表
|
||||
sudo apt update
|
||||
|
||||
# 安装 proxychains4
|
||||
sudo apt install proxychains4
|
||||
|
||||
# 验证安装
|
||||
proxychains4 --version
|
||||
```
|
||||
|
||||
#### CentOS/RHEL 7/8
|
||||
|
||||
```bash
|
||||
# 安装 EPEL 仓库
|
||||
sudo yum install epel-release
|
||||
|
||||
# 安装 proxychains-ng
|
||||
sudo yum install proxychains-ng
|
||||
|
||||
# 验证安装
|
||||
proxychains4 --version
|
||||
```
|
||||
|
||||
#### Fedora
|
||||
|
||||
```bash
|
||||
# 安装 proxychains-ng
|
||||
sudo dnf install proxychains-ng
|
||||
|
||||
# 验证安装
|
||||
proxychains4 --version
|
||||
```
|
||||
|
||||
#### Arch Linux
|
||||
|
||||
```bash
|
||||
# 安装 proxychains-ng
|
||||
sudo pacman -S proxychains-ng
|
||||
|
||||
# 验证安装
|
||||
proxychains4 --version
|
||||
```
|
||||
|
||||
#### 从源码编译(通用方法)
|
||||
|
||||
```bash
|
||||
# 安装依赖
|
||||
sudo apt install build-essential git # Debian/Ubuntu
|
||||
# 或
|
||||
sudo yum install gcc git make # CentOS/RHEL
|
||||
|
||||
# 克隆仓库
|
||||
git clone https://github.com/haad/proxychains.git
|
||||
cd proxychains
|
||||
|
||||
# 编译安装
|
||||
./configure --prefix=/usr --sysconfdir=/etc
|
||||
make
|
||||
sudo make install
|
||||
sudo make install-config # 安装默认配置文件
|
||||
|
||||
# 验证安装
|
||||
proxychains4 --version
|
||||
```
|
||||
|
||||
### macOS
|
||||
|
||||
```bash
|
||||
# 使用 Homebrew 安装
|
||||
brew install proxychains-ng
|
||||
|
||||
# 验证安装
|
||||
proxychains4 --version
|
||||
```
|
||||
|
||||
### WSL (Windows Subsystem for Linux)
|
||||
|
||||
```bash
|
||||
# 在 WSL 中安装(使用 Ubuntu 示例)
|
||||
sudo apt update
|
||||
sudo apt install proxychains4
|
||||
|
||||
# 验证安装
|
||||
proxychains4 --version
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 基础配置
|
||||
|
||||
### 配置文件位置
|
||||
|
||||
Proxychains 按以下顺序查找配置文件:
|
||||
|
||||
1. `${PROXYCHAINS_CONF_FILE}` 环境变量指定的路径
|
||||
2. 命令行 `-f` 参数指定的路径
|
||||
3. `./proxychains.conf` (当前目录)
|
||||
4. `~/.proxychains/proxychains.conf` (用户主目录) **推荐**
|
||||
5. `/etc/proxychains.conf` (系统级)
|
||||
|
||||
### 创建用户级配置(推荐)
|
||||
|
||||
```bash
|
||||
# 创建配置目录
|
||||
mkdir -p ~/.proxychains
|
||||
|
||||
# 创建配置文件(针对 127.0.0.1:9910)
|
||||
cat > ~/.proxychains/proxychains.conf << 'EOF'
|
||||
# Proxychains 配置文件
|
||||
# 代理地址:127.0.0.1:9910
|
||||
|
||||
# 代理链模式
|
||||
strict_chain
|
||||
|
||||
# 代理 DNS 请求
|
||||
proxy_dns
|
||||
|
||||
# DNS 设置
|
||||
remote_dns_subnet 224
|
||||
|
||||
# 超时设置(毫秒)
|
||||
tcp_read_time_out 15000
|
||||
tcp_connect_time_out 8000
|
||||
|
||||
# 代理列表
|
||||
[ProxyList]
|
||||
http 127.0.0.1 9910
|
||||
EOF
|
||||
|
||||
# 设置权限
|
||||
chmod 644 ~/.proxychains/proxychains.conf
|
||||
```
|
||||
|
||||
### 创建系统级配置(可选)
|
||||
|
||||
```bash
|
||||
# 需要 root 权限
|
||||
sudo cat > /etc/proxychains.conf << 'EOF'
|
||||
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
|
||||
|
||||
# 设置权限
|
||||
sudo chmod 644 /etc/proxychains.conf
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 配置详解
|
||||
|
||||
### 代理链模式
|
||||
|
||||
在配置文件中只能选择一种模式:
|
||||
|
||||
#### strict_chain(严格链,推荐)
|
||||
|
||||
```conf
|
||||
# 严格按顺序使用所有代理
|
||||
# 所有代理必须在线,任何一个失败则整个链失败
|
||||
strict_chain
|
||||
```
|
||||
|
||||
**适用场景:**
|
||||
- 只有一个代理服务器
|
||||
- 需要确保所有代理都被使用
|
||||
- 对安全性要求高
|
||||
|
||||
#### dynamic_chain(动态链)
|
||||
|
||||
```conf
|
||||
# 自动跳过离线代理
|
||||
# 至少需要一个可用代理
|
||||
dynamic_chain
|
||||
```
|
||||
|
||||
**适用场景:**
|
||||
- 有多个代理服务器
|
||||
- 某些代理可能不稳定
|
||||
- 需要自动故障转移
|
||||
|
||||
#### random_chain(随机链)
|
||||
|
||||
```conf
|
||||
# 从列表中随机选择代理
|
||||
random_chain
|
||||
chain_len = 2 # 随机链长度(可选)
|
||||
```
|
||||
|
||||
**适用场景:**
|
||||
- 需要隐藏流量模式
|
||||
- 有多个代理可用
|
||||
- 对匿名性要求高
|
||||
|
||||
### DNS 设置
|
||||
|
||||
```conf
|
||||
# 通过代理服务器解析 DNS
|
||||
proxy_dns
|
||||
|
||||
# DNS 解析使用的虚拟子网(1-255)
|
||||
remote_dns_subnet 224
|
||||
|
||||
# 可选:自定义 DNS 服务器(通过环境变量)
|
||||
# export PROXY_DNS_SERVER=8.8.8.8
|
||||
```
|
||||
|
||||
### 超时设置
|
||||
|
||||
```conf
|
||||
# TCP 读取超时(毫秒)
|
||||
tcp_read_time_out 15000 # 15秒
|
||||
|
||||
# TCP 连接超时(毫秒)
|
||||
tcp_connect_time_out 8000 # 8秒
|
||||
```
|
||||
|
||||
**调优建议:**
|
||||
- 慢速网络:增加到 30000 和 15000
|
||||
- 快速网络:减少到 10000 和 5000
|
||||
- 本地代理:可以设置为 5000 和 3000
|
||||
|
||||
### 日志设置
|
||||
|
||||
```conf
|
||||
# 静默模式(不输出代理链信息)
|
||||
quiet_mode
|
||||
```
|
||||
|
||||
**注意:** 调试时应注释掉此选项以查看详细输出。
|
||||
|
||||
---
|
||||
|
||||
## 代理列表配置
|
||||
|
||||
### 基本格式
|
||||
|
||||
```conf
|
||||
[ProxyList]
|
||||
# 格式:type host port [username password]
|
||||
```
|
||||
|
||||
### HTTP 代理
|
||||
|
||||
```conf
|
||||
# 不需要认证
|
||||
http 127.0.0.1 9910
|
||||
|
||||
# 需要认证
|
||||
http 127.0.0.1 8080 username password
|
||||
```
|
||||
|
||||
### SOCKS4 代理
|
||||
|
||||
```conf
|
||||
# 不需要认证
|
||||
socks4 127.0.0.1 1080
|
||||
|
||||
# SOCKS4 不支持用户认证
|
||||
```
|
||||
|
||||
### SOCKS5 代理
|
||||
|
||||
```conf
|
||||
# 不需要认证
|
||||
socks5 127.0.0.1 1080
|
||||
|
||||
# 需要认证
|
||||
socks5 127.0.0.1 1080 username password
|
||||
```
|
||||
|
||||
### 多代理配置
|
||||
|
||||
```conf
|
||||
[ProxyList]
|
||||
# 主代理
|
||||
http 127.0.0.1 9910
|
||||
|
||||
# 备用代理(strict_chain 模式下会按顺序使用)
|
||||
# 取消注释以启用
|
||||
#http 127.0.0.1 8080
|
||||
#socks5 127.0.0.1 1080
|
||||
```
|
||||
|
||||
### 代理链示例
|
||||
|
||||
```conf
|
||||
# 多级代理(流量经过多个代理)
|
||||
strict_chain
|
||||
|
||||
[ProxyList]
|
||||
http 127.0.0.1 9910
|
||||
socks5 proxy2.example.com 1080
|
||||
http proxy3.example.com 8080
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 高级配置
|
||||
|
||||
### 使用环境变量
|
||||
|
||||
```bash
|
||||
# SOCKS5 代理(简化配置)
|
||||
export PROXYCHAINS_SOCKS5_HOST=127.0.0.1
|
||||
export PROXYCHAINS_SOCKS5_PORT=9910
|
||||
proxychains4 curl https://github.com
|
||||
|
||||
# 指定配置文件
|
||||
export PROXYCHAINS_CONF_FILE=~/.proxychains/custom.conf
|
||||
proxychains4 command
|
||||
|
||||
# 自定义 DNS 服务器
|
||||
export PROXY_DNS_SERVER=8.8.8.8
|
||||
proxychains4 curl https://example.com
|
||||
```
|
||||
|
||||
### 多配置文件管理
|
||||
|
||||
```bash
|
||||
# 为不同场景创建不同配置文件
|
||||
mkdir -p ~/.proxychains
|
||||
|
||||
# 国内代理配置
|
||||
cat > ~/.proxychains/cn.conf << 'EOF'
|
||||
strict_chain
|
||||
proxy_dns
|
||||
[ProxyList]
|
||||
http 127.0.0.1 9910
|
||||
EOF
|
||||
|
||||
# 国外代理配置
|
||||
cat > ~/.proxychains/intl.conf << 'EOF'
|
||||
strict_chain
|
||||
proxy_dns
|
||||
[ProxyList]
|
||||
socks5 proxy.example.com 1080
|
||||
EOF
|
||||
|
||||
# 使用特定配置
|
||||
proxychains4 -f ~/.proxychains/cn.conf curl https://github.com
|
||||
proxychains4 -f ~/.proxychains/intl.conf curl https://google.com
|
||||
```
|
||||
|
||||
### 创建 Shell 别名
|
||||
|
||||
```bash
|
||||
# 添加到 ~/.bashrc 或 ~/.zshrc
|
||||
cat >> ~/.bashrc << 'EOF'
|
||||
|
||||
# Proxychains 别名
|
||||
alias pc='proxychains4'
|
||||
alias pccn='proxychains4 -f ~/.proxychains/cn.conf'
|
||||
alias pcintl='proxychains4 -f ~/.proxychains/intl.conf'
|
||||
|
||||
# 常用命令别名
|
||||
alias pcgit='proxychains4 git'
|
||||
alias pcpip='proxychains4 pip'
|
||||
alias pcnpm='proxychains4 npm'
|
||||
alias pccurl='proxychains4 curl'
|
||||
alias pcwget='proxychains4 wget'
|
||||
alias pcssh='proxychains4 ssh'
|
||||
|
||||
EOF
|
||||
|
||||
# 重新加载配置
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 测试配置
|
||||
|
||||
### 基本连接测试
|
||||
|
||||
```bash
|
||||
# 测试 proxychains 是否工作
|
||||
proxychains4 curl https://ipinfo.io/json
|
||||
|
||||
# 应该显示代理服务器的 IP 地址,而不是本机 IP
|
||||
```
|
||||
|
||||
### 对比测试
|
||||
|
||||
```bash
|
||||
# 不使用代理的 IP
|
||||
curl https://ipinfo.io/json
|
||||
|
||||
# 使用代理的 IP(应该不同)
|
||||
proxychains4 curl https://ipinfo.io/json
|
||||
```
|
||||
|
||||
### DNS 测试
|
||||
|
||||
```bash
|
||||
# 测试 DNS 解析
|
||||
proxychains4 nslookup google.com
|
||||
proxychains4 dig github.com
|
||||
|
||||
# 使用 proxyresolv 工具
|
||||
proxyresolv google.com
|
||||
```
|
||||
|
||||
### 完整功能测试
|
||||
|
||||
```bash
|
||||
# HTTP 请求
|
||||
proxychains4 curl -I https://github.com
|
||||
|
||||
# HTTPS 请求
|
||||
proxychains4 curl https://www.google.com
|
||||
|
||||
# SSH 连接(如果有测试服务器)
|
||||
proxychains4 ssh user@example.com
|
||||
|
||||
# Git 克隆
|
||||
proxychains4 git clone https://github.com/haad/proxychains.git /tmp/test-repo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 与代理软件集成
|
||||
|
||||
### V2Ray
|
||||
|
||||
```bash
|
||||
# 假设 V2Ray HTTP 代理端口是 10809
|
||||
# 更新 proxychains 配置
|
||||
cat > ~/.proxychains/proxychains.conf << 'EOF'
|
||||
strict_chain
|
||||
proxy_dns
|
||||
[ProxyList]
|
||||
http 127.0.0.1 10809
|
||||
EOF
|
||||
```
|
||||
|
||||
### Clash
|
||||
|
||||
```bash
|
||||
# 假设 Clash HTTP 代理端口是 7890
|
||||
# 更新 proxychains 配置
|
||||
cat > ~/.proxychains/proxychains.conf << 'EOF'
|
||||
strict_chain
|
||||
proxy_dns
|
||||
[ProxyList]
|
||||
http 127.0.0.1 7890
|
||||
EOF
|
||||
```
|
||||
|
||||
### Shadowsocks
|
||||
|
||||
```bash
|
||||
# 假设 Shadowsocks SOCKS5 端口是 1080
|
||||
# 更新 proxychains 配置
|
||||
cat > ~/.proxychains/proxychains.conf << 'EOF'
|
||||
strict_chain
|
||||
proxy_dns
|
||||
[ProxyList]
|
||||
socks5 127.0.0.1 1080
|
||||
EOF
|
||||
```
|
||||
|
||||
### SSH 动态端口转发
|
||||
|
||||
```bash
|
||||
# 创建 SSH 动态端口转发(SOCKS5)
|
||||
ssh -fN -D 1080 user@remote-server
|
||||
|
||||
# 配置 proxychains 使用 SSH 隧道
|
||||
cat > ~/.proxychains/proxychains.conf << 'EOF'
|
||||
strict_chain
|
||||
proxy_dns
|
||||
[ProxyList]
|
||||
socks5 127.0.0.1 1080
|
||||
EOF
|
||||
|
||||
# 使用
|
||||
proxychains4 curl https://example.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 常见配置模板
|
||||
|
||||
### 模板 1: 单个 HTTP 代理(默认)
|
||||
|
||||
```conf
|
||||
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
|
||||
```
|
||||
|
||||
### 模板 2: 单个 SOCKS5 代理
|
||||
|
||||
```conf
|
||||
strict_chain
|
||||
proxy_dns
|
||||
remote_dns_subnet 224
|
||||
tcp_read_time_out 15000
|
||||
tcp_connect_time_out 8000
|
||||
|
||||
[ProxyList]
|
||||
socks5 127.0.0.1 1080
|
||||
```
|
||||
|
||||
### 模板 3: 多代理动态链(自动故障转移)
|
||||
|
||||
```conf
|
||||
dynamic_chain
|
||||
proxy_dns
|
||||
remote_dns_subnet 224
|
||||
tcp_read_time_out 15000
|
||||
tcp_connect_time_out 8000
|
||||
|
||||
[ProxyList]
|
||||
http 127.0.0.1 9910
|
||||
http 127.0.0.1 8080
|
||||
socks5 127.0.0.1 1080
|
||||
```
|
||||
|
||||
### 模板 4: 低延迟优化
|
||||
|
||||
```conf
|
||||
strict_chain
|
||||
proxy_dns
|
||||
remote_dns_subnet 224
|
||||
tcp_read_time_out 10000
|
||||
tcp_connect_time_out 5000
|
||||
quiet_mode
|
||||
|
||||
[ProxyList]
|
||||
http 127.0.0.1 9910
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 持久化配置
|
||||
|
||||
### 系统启动时自动使用代理
|
||||
|
||||
**不推荐全局使用,仅对特定用户/命令使用**
|
||||
|
||||
```bash
|
||||
# 创建启动脚本(示例)
|
||||
cat > ~/start-with-proxy.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
proxychains4 bash
|
||||
EOF
|
||||
|
||||
chmod +x ~/start-with-proxy.sh
|
||||
```
|
||||
|
||||
### 为特定应用创建包装脚本
|
||||
|
||||
```bash
|
||||
# Git 包装脚本
|
||||
cat > ~/bin/git-proxy << 'EOF'
|
||||
#!/bin/bash
|
||||
proxychains4 git "$@"
|
||||
EOF
|
||||
|
||||
chmod +x ~/bin/git-proxy
|
||||
|
||||
# 使用
|
||||
git-proxy clone https://github.com/user/repo.git
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 故障排除配置
|
||||
|
||||
如果遇到问题,使用此配置进行调试:
|
||||
|
||||
```conf
|
||||
# 调试配置
|
||||
strict_chain
|
||||
proxy_dns
|
||||
remote_dns_subnet 224
|
||||
tcp_read_time_out 30000
|
||||
tcp_connect_time_out 15000
|
||||
# 注释掉 quiet_mode 以查看详细输出
|
||||
|
||||
[ProxyList]
|
||||
http 127.0.0.1 9910
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 安全建议
|
||||
|
||||
1. **配置文件权限**
|
||||
```bash
|
||||
chmod 644 ~/.proxychains/proxychains.conf
|
||||
```
|
||||
|
||||
2. **不要在配置文件中明文存储密码**
|
||||
- 如果必须使用认证,确保配置文件权限正确
|
||||
- 考虑使用环境变量
|
||||
|
||||
3. **定期更新 proxychains**
|
||||
```bash
|
||||
sudo apt update && sudo apt upgrade proxychains4
|
||||
```
|
||||
|
||||
4. **验证代理服务器可信度**
|
||||
- 只使用信任的代理服务器
|
||||
- 避免使用公共免费代理
|
||||
|
||||
---
|
||||
|
||||
## 下一步
|
||||
|
||||
配置完成后:
|
||||
|
||||
1. 阅读 `quick-reference.md` 了解常用命令
|
||||
2. 阅读 `troubleshooting.md` 了解问题解决
|
||||
3. 开始使用 proxychains4!
|
||||
|
||||
---
|
||||
|
||||
**提示:** 配置文件修改后立即生效,无需重启服务。
|
||||
@@ -0,0 +1,475 @@
|
||||
# Proxychains 故障排除指南
|
||||
|
||||
## 常见错误及解决方案
|
||||
|
||||
### 错误 1: "proxychains: command not found"
|
||||
|
||||
**症状:**
|
||||
```bash
|
||||
$ proxychains4 curl https://github.com
|
||||
bash: proxychains4: command not found
|
||||
```
|
||||
|
||||
**原因:** proxychains 未安装
|
||||
|
||||
**解决方案:**
|
||||
|
||||
```bash
|
||||
# Ubuntu/Debian
|
||||
sudo apt update
|
||||
sudo apt install proxychains4
|
||||
|
||||
# CentOS/RHEL
|
||||
sudo yum install epel-release
|
||||
sudo yum install proxychains-ng
|
||||
|
||||
# Fedora
|
||||
sudo dnf install proxychains-ng
|
||||
|
||||
# macOS
|
||||
brew install proxychains-ng
|
||||
|
||||
# Arch Linux
|
||||
sudo pacman -S proxychains-ng
|
||||
|
||||
# 验证安装
|
||||
proxychains4 --version
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 错误 2: "can't read configuration file"
|
||||
|
||||
**症状:**
|
||||
```bash
|
||||
$ proxychains4 curl https://github.com
|
||||
[proxychains] can't read configuration file /etc/proxychains.conf
|
||||
```
|
||||
|
||||
**原因:** 配置文件不存在或路径错误
|
||||
|
||||
**解决方案:**
|
||||
|
||||
```bash
|
||||
# 方法 1: 创建用户级配置文件
|
||||
mkdir -p ~/.proxychains
|
||||
cat > ~/.proxychains/proxychains.conf << 'EOF'
|
||||
strict_chain
|
||||
proxy_dns
|
||||
[ProxyList]
|
||||
http 127.0.0.1 9910
|
||||
EOF
|
||||
|
||||
# 方法 2: 复制系统配置模板
|
||||
sudo cp /usr/share/doc/proxychains*/proxychains.conf /etc/
|
||||
# 或
|
||||
sudo cp /usr/local/etc/proxychains.conf /etc/
|
||||
|
||||
# 方法 3: 指定配置文件路径
|
||||
proxychains4 -f /path/to/proxychains.conf curl https://github.com
|
||||
|
||||
# 验证配置文件
|
||||
cat ~/.proxychains/proxychains.conf
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 错误 3: "timeout"
|
||||
|
||||
**症状:**
|
||||
```bash
|
||||
$ proxychains4 curl https://github.com
|
||||
[proxychains] Strict chain ... 127.0.0.1:9910 ... github.com:443 ... timeout
|
||||
curl: (28) Connection timed out after 10000 milliseconds
|
||||
```
|
||||
|
||||
**原因:** 代理服务未运行、端口错误或防火墙阻止
|
||||
|
||||
**解决方案:**
|
||||
|
||||
```bash
|
||||
# 1. 检查代理服务是否运行
|
||||
netstat -tunlp | grep 9910
|
||||
ss -tunlp | grep 9910
|
||||
lsof -i :9910
|
||||
|
||||
# 2. 测试代理服务直接连接
|
||||
curl -x http://127.0.0.1:9910 https://www.google.com
|
||||
|
||||
# 3. 检查防火墙规则
|
||||
sudo iptables -L -n | grep 9910
|
||||
sudo ufw status
|
||||
|
||||
# 4. 确认代理配置正确
|
||||
cat ~/.proxychains/proxychains.conf | grep -A 2 "\[ProxyList\]"
|
||||
|
||||
# 5. 增加超时时间(编辑配置文件)
|
||||
tcp_connect_time_out 15000
|
||||
tcp_read_time_out 30000
|
||||
|
||||
# 6. 如果代理服务未运行,启动代理服务
|
||||
# (根据你的代理软件,例如:)
|
||||
# v2ray、clash、shadowsocks 等
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 错误 4: "connection refused"
|
||||
|
||||
**症状:**
|
||||
```bash
|
||||
$ proxychains4 curl https://github.com
|
||||
[proxychains] Strict chain ... 127.0.0.1:9910 ... connect refused
|
||||
curl: (7) Failed to connect to 127.0.0.1 port 9910: Connection refused
|
||||
```
|
||||
|
||||
**原因:** 代理端口未监听或代理服务未启动
|
||||
|
||||
**解决方案:**
|
||||
|
||||
```bash
|
||||
# 1. 确认代理服务状态
|
||||
# 检查你的代理软件是否运行(v2ray、clash、shadowsocks 等)
|
||||
|
||||
# 2. 验证代理端口
|
||||
netstat -tunlp | grep 9910
|
||||
# 如果没有输出,说明端口未监听
|
||||
|
||||
# 3. 检查代理软件配置
|
||||
# 确认代理软件监听的端口是 9910
|
||||
|
||||
# 4. 尝试其他可能的代理端口
|
||||
# 常见端口:1080 (SOCKS), 7890 (HTTP), 8080 (HTTP)
|
||||
netstat -tunlp | grep -E '1080|7890|8080|9910'
|
||||
|
||||
# 5. 更新 proxychains 配置为正确端口
|
||||
nano ~/.proxychains/proxychains.conf
|
||||
# 修改 [ProxyList] 部分:
|
||||
# http 127.0.0.1 [正确的端口]
|
||||
|
||||
# 6. 重启代理服务
|
||||
# 根据你的代理软件执行相应命令
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 错误 5: "DNS request timed out"
|
||||
|
||||
**症状:**
|
||||
```bash
|
||||
$ proxychains4 curl https://github.com
|
||||
[proxychains] DNS request timed out
|
||||
curl: (6) Could not resolve host: github.com
|
||||
```
|
||||
|
||||
**原因:** DNS 解析失败或 proxy_dns 配置问题
|
||||
|
||||
**解决方案:**
|
||||
|
||||
```bash
|
||||
# 1. 检查配置文件中的 proxy_dns 设置
|
||||
cat ~/.proxychains/proxychains.conf | grep proxy_dns
|
||||
# 应该有:proxy_dns
|
||||
|
||||
# 2. 如果没有,添加 proxy_dns
|
||||
nano ~/.proxychains/proxychains.conf
|
||||
# 添加:
|
||||
proxy_dns
|
||||
remote_dns_subnet 224
|
||||
|
||||
# 3. 测试 DNS 解析
|
||||
proxychains4 nslookup github.com
|
||||
proxychains4 dig github.com
|
||||
|
||||
# 4. 使用自定义 DNS 服务器
|
||||
export PROXY_DNS_SERVER=8.8.8.8
|
||||
proxychains4 curl https://github.com
|
||||
|
||||
# 5. 或者使用 IP 地址直接访问(跳过 DNS)
|
||||
proxychains4 curl https://140.82.114.4 # GitHub IP
|
||||
|
||||
# 6. 检查 /etc/resolv.conf
|
||||
cat /etc/resolv.conf
|
||||
# 确保有有效的 nameserver
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 错误 6: "Program not supported"
|
||||
|
||||
**症状:**
|
||||
```bash
|
||||
$ proxychains4 ./static-binary
|
||||
[proxychains] Program not supported
|
||||
```
|
||||
|
||||
**原因:** 程序是静态链接的,proxychains 只支持动态链接程序
|
||||
|
||||
**解决方案:**
|
||||
|
||||
```bash
|
||||
# 1. 检查程序是否静态链接
|
||||
ldd ./program
|
||||
# 如果输出 "not a dynamic executable",则为静态链接
|
||||
|
||||
# 2. 对于静态链接程序,需要其他方案:
|
||||
# - 使用系统级代理(iptables 转发)
|
||||
# - 使用 VPN
|
||||
# - 使用容器级代理
|
||||
|
||||
# 3. Go 程序示例(通常是静态链接)
|
||||
# 设置环境变量而不是用 proxychains
|
||||
export HTTP_PROXY=http://127.0.0.1:9910
|
||||
export HTTPS_PROXY=http://127.0.0.1:9910
|
||||
./go-program
|
||||
|
||||
# 4. 对于可重新编译的程序
|
||||
# 编译为动态链接版本
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 错误 7: "strict chain ... all proxy servers are down"
|
||||
|
||||
**症状:**
|
||||
```bash
|
||||
$ proxychains4 curl https://github.com
|
||||
[proxychains] strict chain ... all proxy servers are down!
|
||||
curl: (97) Failure in receiving network data
|
||||
```
|
||||
|
||||
**原因:** strict_chain 模式下所有代理都不可用
|
||||
|
||||
**解决方案:**
|
||||
|
||||
```bash
|
||||
# 1. 测试代理列表中的每个代理
|
||||
cat ~/.proxychains/proxychains.conf | grep -A 10 "\[ProxyList\]"
|
||||
|
||||
# 逐个测试
|
||||
curl -x http://127.0.0.1:9910 https://www.google.com
|
||||
curl -x http://127.0.0.1:8080 https://www.google.com
|
||||
|
||||
# 2. 切换到 dynamic_chain 模式(自动跳过死代理)
|
||||
nano ~/.proxychains/proxychains.conf
|
||||
# 注释掉:#strict_chain
|
||||
# 启用:dynamic_chain
|
||||
|
||||
# 3. 或者移除不可用的代理
|
||||
nano ~/.proxychains/proxychains.conf
|
||||
# 只保留可用的代理在 [ProxyList] 中
|
||||
|
||||
# 4. 重新测试
|
||||
proxychains4 curl https://ipinfo.io/json
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 错误 8: "Permission denied"
|
||||
|
||||
**症状:**
|
||||
```bash
|
||||
$ proxychains4 curl https://github.com
|
||||
[proxychains] Permission denied
|
||||
```
|
||||
|
||||
**原因:** 配置文件或 proxychains 可执行文件权限问题
|
||||
|
||||
**解决方案:**
|
||||
|
||||
```bash
|
||||
# 1. 检查配置文件权限
|
||||
ls -la ~/.proxychains/proxychains.conf
|
||||
|
||||
# 2. 修复权限
|
||||
chmod 644 ~/.proxychains/proxychains.conf
|
||||
|
||||
# 3. 检查目录权限
|
||||
ls -la ~/.proxychains/
|
||||
|
||||
# 4. 修复目录权限
|
||||
chmod 755 ~/.proxychains/
|
||||
|
||||
# 5. 检查 proxychains 可执行文件权限
|
||||
ls -la $(which proxychains4)
|
||||
|
||||
# 6. 如果是系统级配置文件
|
||||
sudo chmod 644 /etc/proxychains.conf
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 高级故障排除
|
||||
|
||||
### 调试模式
|
||||
|
||||
```bash
|
||||
# 启用详细输出
|
||||
# 编辑配置文件,注释掉 quiet_mode
|
||||
nano ~/.proxychains/proxychains.conf
|
||||
# 注释:#quiet_mode
|
||||
|
||||
# 使用 strace 跟踪系统调用
|
||||
strace -e trace=network proxychains4 curl https://github.com
|
||||
|
||||
# 查看环境变量
|
||||
env | grep -i proxy
|
||||
```
|
||||
|
||||
### 日志分析
|
||||
|
||||
```bash
|
||||
# proxychains 输出到文件
|
||||
proxychains4 curl https://github.com 2>&1 | tee proxychains.log
|
||||
|
||||
# 分析连接过程
|
||||
cat proxychains.log | grep -E 'chain|connect|timeout'
|
||||
```
|
||||
|
||||
### 网络连通性测试
|
||||
|
||||
```bash
|
||||
# 测试本地连接
|
||||
ping 127.0.0.1
|
||||
telnet 127.0.0.1 9910
|
||||
|
||||
# 测试外部连接(不通过代理)
|
||||
curl https://ipinfo.io/json
|
||||
|
||||
# 测试外部连接(通过代理)
|
||||
proxychains4 curl https://ipinfo.io/json
|
||||
|
||||
# 比较 IP 地址
|
||||
# 不通过代理的 IP 应该是本机 IP
|
||||
# 通过代理的 IP 应该是代理服务器 IP
|
||||
```
|
||||
|
||||
### 配置验证
|
||||
|
||||
```bash
|
||||
# 验证配置文件语法
|
||||
proxychains4 -f ~/.proxychains/proxychains.conf true
|
||||
|
||||
# 测试不同的代理类型
|
||||
# HTTP
|
||||
proxychains4 -f - curl https://github.com << 'EOF'
|
||||
strict_chain
|
||||
[ProxyList]
|
||||
http 127.0.0.1 9910
|
||||
EOF
|
||||
|
||||
# SOCKS5
|
||||
proxychains4 -f - curl https://github.com << 'EOF'
|
||||
strict_chain
|
||||
[ProxyList]
|
||||
socks5 127.0.0.1 1080
|
||||
EOF
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 性能问题
|
||||
|
||||
### 连接缓慢
|
||||
|
||||
**症状:** 命令执行很慢
|
||||
|
||||
**解决方案:**
|
||||
|
||||
```bash
|
||||
# 1. 减少超时时间
|
||||
nano ~/.proxychains/proxychains.conf
|
||||
tcp_connect_time_out 5000
|
||||
tcp_read_time_out 10000
|
||||
|
||||
# 2. 启用 quiet_mode 减少输出
|
||||
quiet_mode
|
||||
|
||||
# 3. 使用更快的代理服务器
|
||||
|
||||
# 4. 测试代理延迟
|
||||
time proxychains4 curl -I https://github.com
|
||||
|
||||
# 5. 使用 dynamic_chain 跳过慢速代理
|
||||
dynamic_chain
|
||||
```
|
||||
|
||||
### 频繁断开
|
||||
|
||||
**症状:** 连接经常中断
|
||||
|
||||
**解决方案:**
|
||||
|
||||
```bash
|
||||
# 1. 增加超时时间
|
||||
tcp_read_time_out 30000
|
||||
|
||||
# 2. 检查代理服务器稳定性
|
||||
# 持续 ping 测试
|
||||
ping -c 100 127.0.0.1
|
||||
|
||||
# 3. 更换代理服务器
|
||||
|
||||
# 4. 检查网络稳定性
|
||||
mtr 8.8.8.8
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 检查清单
|
||||
|
||||
使用此清单快速诊断问题:
|
||||
|
||||
```bash
|
||||
# ✅ 检查 1: proxychains 已安装
|
||||
which proxychains4
|
||||
|
||||
# ✅ 检查 2: 配置文件存在
|
||||
ls -la ~/.proxychains/proxychains.conf
|
||||
|
||||
# ✅ 检查 3: 配置文件格式正确
|
||||
cat ~/.proxychains/proxychains.conf
|
||||
|
||||
# ✅ 检查 4: 代理服务运行中
|
||||
netstat -tunlp | grep 9910
|
||||
|
||||
# ✅ 检查 5: 代理可直接访问
|
||||
curl -x http://127.0.0.1:9910 https://www.google.com
|
||||
|
||||
# ✅ 检查 6: DNS 解析正常
|
||||
proxychains4 nslookup github.com
|
||||
|
||||
# ✅ 检查 7: proxychains 连接正常
|
||||
proxychains4 curl https://ipinfo.io/json
|
||||
|
||||
# ✅ 检查 8: IP 地址已变更
|
||||
# 对比直接访问和代理访问的 IP 应该不同
|
||||
curl https://ipinfo.io/json
|
||||
proxychains4 curl https://ipinfo.io/json
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 获取帮助
|
||||
|
||||
如果以上方法都无法解决问题:
|
||||
|
||||
```bash
|
||||
# 查看帮助文档
|
||||
man proxychains4
|
||||
proxychains4 --help
|
||||
|
||||
# 查看系统日志
|
||||
sudo journalctl -xe | grep proxy
|
||||
dmesg | grep -i proxy
|
||||
|
||||
# 检查 proxychains 版本
|
||||
proxychains4 --version
|
||||
|
||||
# GitHub Issues
|
||||
# https://github.com/haad/proxychains/issues
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**提示:** 大多数问题都是由于代理服务未运行或端口配置错误造成的。首先确保代理服务正常运行。
|
||||
@@ -0,0 +1,122 @@
|
||||
#!/bin/bash
|
||||
# Proxychains 快速配置脚本
|
||||
# 自动配置代理指向 127.0.0.1:9910
|
||||
|
||||
set -e
|
||||
|
||||
echo "=========================================="
|
||||
echo "Proxychains 快速配置脚本"
|
||||
echo "=========================================="
|
||||
echo
|
||||
|
||||
# 检查 proxychains4 是否安装
|
||||
if ! command -v proxychains4 &> /dev/null; then
|
||||
echo "❌ proxychains4 未安装"
|
||||
echo
|
||||
echo "请先安装 proxychains4:"
|
||||
echo
|
||||
echo " Ubuntu/Debian:"
|
||||
echo " sudo apt install proxychains4"
|
||||
echo
|
||||
echo " CentOS/RHEL:"
|
||||
echo " sudo yum install epel-release"
|
||||
echo " sudo yum install proxychains-ng"
|
||||
echo
|
||||
echo " macOS:"
|
||||
echo " brew install proxychains-ng"
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ proxychains4 已安装"
|
||||
echo
|
||||
|
||||
# 创建配置目录
|
||||
echo "📁 创建配置目录..."
|
||||
mkdir -p ~/.proxychains
|
||||
|
||||
# 创建配置文件
|
||||
echo "📝 创建配置文件..."
|
||||
cat > ~/.proxychains/proxychains.conf << 'EOF'
|
||||
# Proxychains 配置文件
|
||||
# 代理地址:127.0.0.1:9910
|
||||
|
||||
# 代理链模式(严格按顺序使用所有代理)
|
||||
strict_chain
|
||||
|
||||
# 代理 DNS 请求(避免 DNS 泄漏)
|
||||
proxy_dns
|
||||
|
||||
# DNS 设置
|
||||
remote_dns_subnet 224
|
||||
|
||||
# 超时设置(毫秒)
|
||||
tcp_read_time_out 15000
|
||||
tcp_connect_time_out 8000
|
||||
|
||||
# 代理列表
|
||||
[ProxyList]
|
||||
# HTTP 代理:127.0.0.1:9910
|
||||
http 127.0.0.1 9910
|
||||
|
||||
# 备用代理(取消注释以启用)
|
||||
#http 127.0.0.1 8080
|
||||
#socks5 127.0.0.1 1080
|
||||
EOF
|
||||
|
||||
# 设置权限
|
||||
chmod 644 ~/.proxychains/proxychains.conf
|
||||
|
||||
echo "✅ 配置文件已创建: ~/.proxychains/proxychains.conf"
|
||||
echo
|
||||
|
||||
# 测试代理服务
|
||||
echo "🔍 检查代理服务..."
|
||||
if curl -s -x http://127.0.0.1:9910 --connect-timeout 3 https://www.google.com > /dev/null 2>&1; then
|
||||
echo "✅ 代理服务 127.0.0.1:9910 可用"
|
||||
echo
|
||||
|
||||
# 测试 proxychains
|
||||
echo "🧪 测试 proxychains..."
|
||||
if proxychains4 curl -s --connect-timeout 5 https://ipinfo.io/json > /dev/null 2>&1; then
|
||||
echo "✅ Proxychains 配置成功!"
|
||||
echo
|
||||
echo "🎉 配置完成!可以开始使用了。"
|
||||
else
|
||||
echo "⚠️ Proxychains 测试失败"
|
||||
echo " 但配置文件已创建,请检查代理服务是否正常"
|
||||
fi
|
||||
else
|
||||
echo "⚠️ 代理服务 127.0.0.1:9910 无法连接"
|
||||
echo
|
||||
echo "请检查:"
|
||||
echo " 1. 代理服务是否运行"
|
||||
echo " 2. 代理端口是否正确(127.0.0.1:9910)"
|
||||
echo " 3. 防火墙设置"
|
||||
echo
|
||||
echo "检查代理端口:"
|
||||
echo " netstat -tunlp | grep 9910"
|
||||
echo " ss -tunlp | grep 9910"
|
||||
echo
|
||||
echo "配置文件已创建,代理服务就绪后即可使用。"
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "=========================================="
|
||||
echo "使用方法:"
|
||||
echo "=========================================="
|
||||
echo
|
||||
echo " proxychains4 curl https://github.com"
|
||||
echo " proxychains4 git clone https://github.com/user/repo.git"
|
||||
echo " proxychains4 pip install package-name"
|
||||
echo " proxychains4 npm install package-name"
|
||||
echo
|
||||
echo "配置文件位置:"
|
||||
echo " ~/.proxychains/proxychains.conf"
|
||||
echo
|
||||
echo "查看配置:"
|
||||
echo " cat ~/.proxychains/proxychains.conf"
|
||||
echo
|
||||
echo "修改代理地址:"
|
||||
echo " nano ~/.proxychains/proxychains.conf"
|
||||
echo "=========================================="
|
||||
Reference in New Issue
Block a user