爬虫代理简介

1 爬虫经常遇到的一个问题及解决办法

在循环爬取一个网站时,很有可能会在一段时间后,遇到403Forbidden;这种情况很有可能是因为,网站服务器识别出您这种行为不像是一个正常人干的,为了减小服务器的压力,给您Ban掉了.

那么为什么可以看出这不像一个正常人的行为呢?

众所周知,浏览一个网页,实际上就是您向网站服务器发了一个HTTP Request,网站服务器收到请求后,再给您回复一个HTTP Response;而由于HTTP Protocol处在TCP/IP协议栈中的应用层处在网络层的上面,其包内含有IP地址IPv4/6 Protocole;而IP地址又可以唯一标识一台主机,因此在服务器看来,同一台主机,或者说同一个IP在一段时间内频繁有节奏的访问自己,这已经不像是人能干的事儿了.

阐明了访问页面和爬虫被Ban的原理后,比较直接的,也是我目前能想到的办法有以下两个:

  1. 使用sleep()控制访问的频率,及时间间隔.
  2. 修改IP地址.

2 那么如何修改IP呢

2.1 直接修改IP行不行

最直接的一个方法,在本地构造HTTP Request包时,直接修改IP.src(源IP).

乍一看,似乎没毛病,但请您仔细思考一下,如果您修改了这个包的源IP,这个包是发出去了,服务器业也接收到了;但是,当服务器回送HTTP Response时,这个包还会路由到您的主机吗?当然是不会的了,他会路由到修改后的IP.

这里插个图

那还有没其他办法呢?这就是接下来要说的代理.

2.2 代理的原理

什么是代理呢?代理就像时您与网站之间的一个中转站,您把包发给代理,代理把源IP修改为自己的IP后,转发给网站服务器;网站服务器收到请求,将Response包回送给代理,代理再将这个包,回送给您.

这么说的话,代理不也一直在访问网站吗,那难道代理就不会被Ban吗?当然会,所以你需要一个代理池.

代理池根据价格,有好有坏;根据不同的协议、匿名程度等,又有不同的作用. 加下来我们详细的介绍一下.

3 代理的分类及作用

3.1 根据匿名程度分

  1. 高度匿名代理数据包会被原封不动的转发,服务器看到的就像正常客户端访问一般.
  2. 普通匿名代理:数据包会被稍微修改一下,例如增加"HTTP_VIA"字段,其会记录经过了哪些代理,而"HTTP_X_FORWARDED_FOR"字段,则会直接记录源地址.
  3. 透明代理:不但更改了数据包,还会告诉服务器您的IP,透明代理服务器主要是本身有一块很大的缓冲区,可以将下载的内容缓存在本地,提高浏览速度;另外对于内网硬件防火墙,其将过滤程序写入芯片,能够检测流经的数据,这也是一种透明代理.
  4. 间谍代理:监控流经代理服务器的流量.

3.2 根据协议分

协议 功能 端口
FTP 上传、下载及缓存 21/2121
HTTP 访问页面,内容过滤及缓存 80/8080/3128
SSL/TLS 加密 443
PTSP 流媒体传输,一般有缓存功能 554
Telnet 远程控制,黑客常用此隐藏身份 23
POP/SMTP 收发邮件一般有缓存功能 110/25
SOCKS 单纯传输数据包,一般有缓存功能 1080

3.3 作用

  1. 访问一些平常访问不到的IP,例如访问一些校园网.
  2. 提高访问速度,因为具有很大的硬盘缓冲区,当有流量经过时,其会缓存下来,当由用户需要同样的内容是,可以直接传给用户.
  3. 隐藏真实IP,爬虫时防止被Ban.

4 代理获取的三类方法

了解了代理的原理、分类、作用后,您将着手实践,首先要想个办法,获取一个优质的代理库,大致有以下三种方法.

4.1 免费的代理库

百度上有一些免费的代理库,例如快代理. 这一类代理优点就是免费,缺点就是不太稳定,因为有很多人同时用这么一个池子,很多代理是不能用的,所以需要您编写一些代码来利用这些代理库.

4.2 付费的代理库

这种服务有很多,可以自行百度,付费之后会为您提供一个接口.

4.3 ADLS代理

ADLS学过计网的同学应该都了解,您可以自行百度,讲的会更清楚一些. 主要利用其没拨一次号,就获取一个新IP,这种方法要比上面两种来得稳定,并且其费用也不是很高,需要自己买一台VPS主机,专门用于动态拨号.

5 后续

再过几天,会出一篇关于ADSL代理的文章,敬请期待...

posted @ 2020-12-05 22:51  在下王建国  阅读(145)  评论(0编辑  收藏  举报