存在的记忆

Ubuntu下搭建高匿HTTP代理


功能用途

公司业务需要实体主机翻墙,大佬搞不定,只有老夫硬着头皮上了
作为反爬利器,如果爬虫爬取的目标网站具有较强的反爬机制,最常见的通过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"

本文重点,没有目录,就手动创建,

当前页面是本站的「Baidu MIP」版。查看和发表评论请点击:完整版 »