功能用途
公司业务需要实体主机翻墙,大佬搞不定,只有老夫硬着头皮上了
作为反爬利器,如果爬虫爬取的目标网站具有较强的反爬机制,最常见的通过IP来限制抓取频率,如果你的爬虫抓取太快,你的IP就会被封禁一段时间甚至永久封禁。此时我们就可以通过高匿代理让抓取的网站识别不出我们的真实IP。
代理安装
安装squid3
我是在Ubuntu14.04 64位环境下使用squid3搭建的代理服务器。squid3是一个主流的可配置的、健壮、低消耗的代理服务器。
sudo apt-get install squid3
配置
squid3的配置文件在/etc/squid3/squid.conf,我们使用vim编辑器来配置。
sudo vim /etc/squid3/squid.conf
我们在配置文件的末尾加入以下几行:
允许的客户端ip
acl allcomputers src 0.0.0.0/0.0.0.0
配置用户名密码,后面会生成passwords文件
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated allcomputers
找到http_access deny all并注释掉
#http_access deny all
最好修改一下默认的3128端口,因为这个端口是默认的,很容易被网络上的代理爬虫探测到。
http_port 8128
用户名密码认证
网络上有很多专门爬免认证的代理的爬虫,如果我们自己搭建的代理服务器不加认证的话,会被这些爬虫探测到然后沦为了免费代理。
使用htpasswd来创建passwords文件,htpasswd命令在软件包apache2-utils中。
sudo apt-get install apache2-utils
apt install apache2-utils
注意htpasswd是Apache Httpd中的一个应用,我在安装Squid后,发现这个就已经有了。如果没有这个程序的话,需要安装httpd服务器。
yum install httpd
apt-get install apache2
生成password文件
sudo htpasswd -c /etc/squid3/passwords 自定义用户名
会在/etc/squid3/目录下生成passwords文件,要保证该文件是可读的,没有的话就手动创建
sudo chmod o+r /etc/squid3/passwords
启动服务,也可以使用restart,stop进行重启和关闭。
sudo service squid3 start
验证代理是否起作用
squid3的访问日志文件在/var/log/squid3/access.log
tail -f /var/log/squid3/access.log
另找一台linux机器打开shell,将我们的代理配置上:
export http_proxy="http://用户名:密码@代理IP:代理端口"
curl -l "http://www.baidu.com"
如果代理配置正确,回输出html,同时代理服务器上的access.log会记录这次请求。
配置高匿
代理分为透明代理、匿名代理、混淆代理、高匿代理,这4种代理,主要是在代理服务器端的配置不同,导致其向目标地址发送请求时,REMOTE_ADDR, HTTP_VIA,HTTP_X_FORWARDED_FOR三个变量不同。
1.透明代理(Transparent Proxy)
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Your IP
透明代理虽然可以直接“隐藏”你的IP地址,但是还是可以从HTTP_X_FORWARDED_FOR来查到你是谁。
2.匿名代理(Anonymous Proxy)
REMOTE_ADDR = proxy IP
HTTP_VIA = proxy IP
HTTP_X_FORWARDED_FOR = proxy IP
匿名代理比透明代理进步了一点:别人只能知道你用了代理,无法知道你是谁。
3.混淆代理(Distorting Proxies)
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Random IP address
如上,与匿名代理相同,如果使用了混淆代理,别人还是能知道你在用代理,但是会得到一个假的IP地址,伪装的更逼真
4.高匿代理(Elite proxy或High Anonymity Proxy)
REMOTE_ADDR = Proxy IP
HTTP_VIA = not determined
HTTP_X_FORWARDED_FOR = not determined
可以看出来,高匿代理让别人根本无法发现你是在用代理,所以是最好的选择。
下面是squid3高匿的设置,我们修改配置文件squid.conf,在最后加上
request_header_access X-Forwarded-For deny all
request_header_access From deny all
request_header_access Via deny all
测试高匿是否生效,我们用上面同样的方法访问,会显示出你使用的IP的地址,我们就可以判断显示的IP和我们使用的代理IP是否相同,如果相同,则匿名生效。
curl -l "http://1212.ip138.com/ic.asp"
本文重点,没有目录,就手动创建,
您好,一条ip如何绑定多个端口?
例如:35.246.62.45:2055:user:pw
35.246.62.45:2056:
35.246.62.45:2057: