转自:DRL@fireinice写的教程
************************************************************************************************************************

您从本文可以得到
1.如何在linux/windows下安装3proxy代理软件,并使用其开设代理
2.调整3proxy代理链,使用多个父代理联合上网
3.使用3proxy开设多个代理

3proxy是一个由俄罗斯人开发的多平台代理软件,支持http/https/ftp/socks4/socks5/socks4a/socks5a等多种代理方式。

之前由dRag0nMa介绍到drl,并由ccpp0兄写过一个简单的教程原文地址
我是因为要在linux下寻找一款同时支持http和socks的代理软件,由ccpp0兄介绍给我的,从那篇文章里获益良多。跟据自己的需要,阅读软件英文手册并在软件论坛上发帖询问后有了一些新的理解,特发此文

一、安装
在windows下安装:
在windows下安装其实十分简单:
可以下载已经编译好的二进制包,然后解压缩到一个文件中。bin文件夹下即是软件执行文件。

二、配置
对于windows系统来说要在bin文件夹下新建一个名为3proxy.cfg的文件。所有的配置信息都写在这里。
若为linux系统,则可新建一个3proxy.sh的文件。

我先粗略说明一下我的网络环境及想用3proxy实现哪些功能
我手头上有一个socks代理,我希望大部分网络连接通过这个代理,同时不想进行代理所需的身份验证。同时,我是一个tor用户,但从来没有用过privoxy的其它功能,只用tor来浏览网页,所以希望将tor转换为普通的http代理。
同时,我还需要开设一个代理给寝室中的同学使用。
做下假设:
我的父代理
socks代理为:192.168.0.1:8080,代理类型是socks5,用户名、密码是:usr/pwd
tor代理是:127.0.0.1:9050,代理类型是socks4a
我希望开设的代理:
用户有192.168.1.1和192.168.1.2以及我自己
共开设四个代理接口:
1234端口:这个端口进来的http请求全部转到192.168.0.1
1235端口:这个端口接受socks请求,并全部转到192.168.0.1
1236端口:这个端口希望能建起一个代理链,使用tor为一级代理,192.168.0.1做为二级代理
1237端口:这个端口没有父代理,提供给除我之外的用户使用。

好了,让我们看一下我的cfg文件是如何实现以上要求的(#后为注释):

timeouts 30 30 60 60 180 1800 60 120 

log D:/temp/3proxy.log D #注意在linux系统中的路径应改为其它形式。

logformat "L%d %H:%M %N-%p %C:%c %R:%r %O %I %h %T err:%E"

rotate 3
#以上三行设置了记录文件的地址、格式及保存几天的记录
#这部分内容必须放到auth iponly之前,否则不能记录


service
#这一行对windows是必须的,将会将3proxy安装为系统服务。
#对linux及非nt系统应替换为 daemon,以保证在后台运行。

auth iponly
#只使用ip进行用户印证
allow * 127.0.0.1 *
parent 1000 socks5 192.168.0.1 8080 usr pwd #父代理
proxy -a -p1234 #http代理
socks -a -p1235 #socks代理

flush
#使用flush清空服务列表,接下来就可以开设新的服务
allow * 127.0.0.1 *
parent 1000 socks4 127.0.0.1 9050 #tor父代理
parent 1000 socks5 192.168.0.1 8080 usr pwd
#这里实现了一个代理链,这部分原来的简单教程有一点错误。
#所有的请求都将通过tor后通过192.168.0.1,详细的解释可以参看后文
proxy -a -p1236

flush
allow * 222.205.4.245,127.0.0.1,10.214.32.121 *
proxy -a -p1237
#这是第四个代理端口,没有父代理

下面就两个问题深入说明一下
1.tor本身是socks4a的代理,在设置文件中应该表示为socks4+,但由于192.168.0.1不支持域名解析,所以标为socks4,否则会代理链出错
2.代理链是这样的,由权重值(即1000)来分组,每组权重值相加必须为1000,一组即为一层
 使用手册中的例子:
 parent 1000 socks5 192.168.10.1 1080
 parent 1000 connect 192.168.20.1 3128
 parent 300 socks4 192.168.30.1 1080
 parent 700 socks5 192.168.40.1 1080
以上的代理链共分为三组,分别是第一层:192.168.10.1,第二层:192.168.20.1,第三层:30.1和40.1
当一个请求到达后,第一层和第二层是必须要经过的,在第三层中,有30%的机会通过30.1,70%的机会通过40.1
使用权重的时候注意保证每组权重和为1000

三、运行
在windows具有管理员权限的情况下,运行3proxy.exe --install就可以了,之后将会作为后台服务运行。
在linux下在文件的最前面加入
#!/usr/local/bin/3proxy/3proxy
之后
chmod +x 3proxy.sh,直接运行3proxy.sh就可以开设代理服务了。