超级版1

This commit is contained in:
tukuaiai
2025-12-13 17:00:54 +08:00
parent 5e6f46c096
commit 53100d627b
108 changed files with 240878 additions and 21 deletions
+291
View File
@@ -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 在遇到网络问题时自动使用代理,无需用户手动干预!**
+101
View File
@@ -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
```
---
**提示:** 大多数问题都是由于代理服务未运行或端口配置错误造成的。首先确保代理服务正常运行。
+122
View File
@@ -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 "=========================================="