Python公开课 - 爬虫之代理

前言

我们写爬虫程序,如果不做任何措施去抓取网站数据的话,一旦网站采取了反爬虫的措施,就会导致我们无法正常下载。

例如最初爬虫正常运行,正常抓取数据,一切看起来都很正常,然而一支烟的功夫可能就会出现错误,比如 403 Forbidden,

服务器会检测某个IP在单位时间内的请求次数,如果超过了这个阔值,就会直接拒绝服务,返问一些错误信息,这种情况可以称为封 IP。

网站为什么会反爬虫

网站反爬虫一般有以下几个原因

  • 防止数据被抓取 - 由于网站的数据往往都是站长精心整理的,如果被程序抓走后,对方可以很轻松的镜像一个相同网站,这对站长来说,就变成杨白劳了。
  • 防止网站负载过大 - 如果爬虫没有控制好抓取周期和频率,那么往往会对网站造成性能冲击,这时候也需要对爬虫进行限制了。

什么是代理

代理实际上指的就是代理服务器,英文叫作 proxy server,它的功能是代理网络用户去取得网络信 息。 形象地说,它是网络信息的中转站。

在我们正常请求一个网站时, 是发送了请求给 Web 服务器, Web 服务器把响应传回给我们。

如果设置了代理服务器, 实际上就是在本机和服务器之间搭建了一个 桥, 此时本机不是直接向 Web 服务器发起请求,而是向代理服务器发出请求,请求会发送给代理服务 器,然后由代理服务器再发送给 Web 服务器,接着由代理服务器再把 Web 服务器返回的响应转发给本机。

这样我们同样可以正常访问网页,但这个过程中 Web 服务器识别出的真实 IP 就不再是我们本 机的 IP 了,就成功实现了 IP 伪装,这就是代理的基本原理。

代理的作用

  • 突破IP访问限制,访问一些平时不能访问的站点。
  • 访问一些内部资惊:比如使用教育网内地址段免费代理服务器,就可以用于对教育网的资源了。
  • 隐藏真实IP: 对于爬虫来说,我们用代理就是为了隐藏向身 IP,防止自身的 IP 被封锁。

代理分类

根据代理的匿名程度,代理可以分为如下类别:

  • 高度匿名代理: 会将数据包原封不动地转发,在服务端看来就好像真的是一个普通客户端在 访问,而记录的 IP 是代理服务器的 IP。
  • 普通匿名代理: 会在数据包上做一些改动, 服务端上有可能发现这是个代理服务器,也有一定几 率追查到客户端的真实E。 代理服务器通常会加入的头信息有HTTP_VIA和 HTTP_X_FORWARD_FOR。
  • 透明代理: 不但改动了数据包 还会告诉服务器客户端的真实IP。 这种代理除了能用缓存技术提高浏览速度,能用内容过滤提高安全性之外,并无其他显著作用,最常见的例子是内网的硬件防火墙。
  • 间谍代理: 指组织或个人创建的用于记录用户传输的数据,然后进行研究、 监控等目的的代理服务器。

相关阅读