爬虫代理简介
1 爬虫经常遇到的一个问题及解决办法
在循环爬取一个网站时,很有可能会在一段时间后,遇到403Forbidden
;这种情况很有可能是因为,网站服务器识别出您这种行为不像是一个正常人干的,为了减小服务器的压力,给您Ban掉了.
那么为什么可以看出这不像一个正常人的行为呢?
众所周知,浏览一个网页,实际上就是您向网站服务器发了一个HTTP Request
,网站服务器收到请求后,再给您回复一个HTTP Response
;而由于HTTP Protocol
处在TCP/IP协议栈
中的应用层
处在网络层
的上面,其包内含有IP地址
的IPv4/6 Protocole
;而IP地址
又可以唯一标识一台主机,因此在服务器看来,同一台主机,或者说同一个IP
在一段时间内频繁有节奏的访问自己,这已经不像是人能干的事儿了.
阐明了访问页面和爬虫被Ban的原理后,比较直接的,也是我目前能想到的办法有以下两个:
- 使用
sleep()
控制访问的频率,及时间间隔. - 修改
IP地址
.
2 那么如何修改IP呢
2.1 直接修改IP
行不行
最直接的一个方法,在本地构造HTTP Request
包时,直接修改IP.src(源IP)
.
乍一看,似乎没毛病,但请您仔细思考一下,如果您修改了这个包的源IP
,这个包是发出去了,服务器业也接收到了;但是,当服务器回送HTTP Response
时,这个包还会路由到您的主机吗?当然是不会的了,他会路由到修改后的IP
.
这里插个图
那还有没其他办法呢?这就是接下来要说的代理.
2.2 代理的原理
什么是代理呢?代理就像时您与网站之间的一个中转站,您把包发给代理,代理把源IP
修改为自己的IP
后,转发给网站服务器;网站服务器收到请求,将Response
包回送给代理,代理再将这个包,回送给您.
这么说的话,代理不也一直在访问网站吗,那难道代理就不会被Ban吗?当然会,所以你需要一个代理池.
代理池根据价格,有好有坏;根据不同的协议、匿名程度等,又有不同的作用. 加下来我们详细的介绍一下.
3 代理的分类及作用
3.1 根据匿名程度分
- 高度匿名代理:数据包会被原封不动的转发,服务器看到的就像正常客户端访问一般.
- 普通匿名代理:数据包会被稍微修改一下,例如增加
"HTTP_VIA"
字段,其会记录经过了哪些代理,而"HTTP_X_FORWARDED_FOR"
字段,则会直接记录源地址. - 透明代理:不但更改了数据包,还会告诉服务器您的
IP
,透明代理服务器主要是本身有一块很大的缓冲区,可以将下载的内容缓存在本地,提高浏览速度;另外对于内网硬件防火墙,其将过滤程序写入芯片,能够检测流经的数据,这也是一种透明代理. - 间谍代理:监控流经代理服务器的流量.
3.2 根据协议分
协议 | 功能 | 端口 |
---|---|---|
FTP | 上传、下载及缓存 | 21/2121 |
HTTP | 访问页面,内容过滤及缓存 | 80/8080/3128 |
SSL/TLS | 加密 | 443 |
PTSP | 流媒体传输,一般有缓存功能 | 554 |
Telnet | 远程控制,黑客常用此隐藏身份 | 23 |
POP/SMTP | 收发邮件一般有缓存功能 | 110/25 |
SOCKS | 单纯传输数据包,一般有缓存功能 | 1080 |
3.3 作用
- 访问一些平常访问不到的
IP
,例如访问一些校园网. - 提高访问速度,因为具有很大的硬盘缓冲区,当有流量经过时,其会缓存下来,当由用户需要同样的内容是,可以直接传给用户.
- 隐藏真实
IP
,爬虫时防止被Ban.
4 代理获取的三类方法
了解了代理的原理、分类、作用后,您将着手实践,首先要想个办法,获取一个优质的代理库,大致有以下三种方法.
4.1 免费的代理库
百度上有一些免费的代理库,例如快代理. 这一类代理优点就是免费,缺点就是不太稳定,因为有很多人同时用这么一个池子,很多代理是不能用的,所以需要您编写一些代码来利用这些代理库.
4.2 付费的代理库
这种服务有很多,可以自行百度,付费之后会为您提供一个接口.
4.3 ADLS代理
ADLS
学过计网的同学应该都了解,您可以自行百度,讲的会更清楚一些. 主要利用其没拨一次号,就获取一个新IP
,这种方法要比上面两种来得稳定,并且其费用也不是很高,需要自己买一台VPS主机
,专门用于动态拨号.
5 后续
再过几天,会出一篇关于ADSL
代理的文章,敬请期待...