网络代理可以使用多种软件,我使用过3proxy,及squid,3proxy的资料很难看,软件也不太好有。用squid资料就比较多,而且比较容易有。
squid安装及配置
安装参考(英文):https://www.linode.com/docs/networking/squid/squid-http-proxy-ubuntu-12-04
这个是ubuntu的,但我用的系统是centos安装及配置有一些不一样。以下是主要的步骤。
1.使用yum install -y squid安装squid。
2.cd /etc/squid/进入squid的配置文件夹。配置文件,我们需要用到的是squid.conf,这个是当squid启动时默认加载的配置文件。
3.使用htpasswd来生成密码(如果你没有这个程序,可以通过yum install -y httpd-tools来下载)。方法是:
touch /etc/squid/squid_passwd来生成一个文件,用于存储用户名及密码。
htpasswd /etc/squid/squid_passwd user1,然后它会提示你输入密码。这样子就生成了一个叫user1账号了。
4.打开squid.conf并把下面的内容添加到里面:
auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/squid_passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
当然,这里面使用到了ncsa_auth这个程序,它的路径你的可能跟我的不一样,可以通过rpm -ql squid | grep ncsr_auth来查看。
你也可以修改其它的内容,比如说http_port,它默认的是3128,你可以改成其它的。
这样子就配置好了,你可以通过service squid start来启动服务器。然后客户端就可以连接了。
客户端连接代理
服务器代理打开后,我们可以使用客户端连接代理。我这里使用node.js的superagent-proxy(https://github.com/TooTallNate/superagent-proxy)来演示一下,主要说明了使用http proxy的格式问题。
var request = require('superagent');
// extend with Request#proxy()
require('superagent-proxy')(request);
// HTTP, HTTPS, or SOCKS proxy to use
var proxy = 'http://user1:password@102.224.164.03:3128';
request
.get('https://encrypted.google.com/')
.proxy(proxy)
.end(onresponse);
function onresponse (err, res) {
if (err) {
console.log(err);
} else {
console.log(res.status, res.headers);
console.log(res.body);
}
}
重点在于前面的var proxy = 'http://user1:password@102.224.164.03:3128';这一句,通过这种形式的连接,我们就可以使用squid的代理了。
使用高匿的方法
在使用代理的时候,我们有时需要隐藏自己的ip地址,方法是在squid.conf加上:
# ANONYMOUS PROXY
forwarded_for off
request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all
配置好后,若squid已经启动过了,可以通过service squid restart来重新启动。