在做爬虫的过程中经常会遇到一种情况,就是爬虫最初是正常运行、正常抓取数据的,一切看起来都是那么美好,然而一杯茶的工夫就出现了错误,例如 403 Forbidden,这时打开网页一看,可能会看到“您的IP访问频率太高”这样的提示。出现这种现象是因为网站采取了一些反爬虫措施。例如服务器会检测某个 IP 在单位时间内的请求次数,如果请求次数超过设定的阈值,就直接拒绝提供服务并返回一些错误信息,可以称这种情况为封IP。
既然服务器检测的是某个卫P在单位时间内的请求次数,那么借助某种方式把我们的卫P伪装一下让服务器识别不出请求是由我们本机发起的,不就可以成功防止封IP了吗?
一种有效的伪装方式是使用代理,后面会详细说明代理的用法。在这之前,需要先了解代理的基本原理,它是怎样实现伪装IP的呢?
基本原理
代理实际上就是指代理服务器,英文叫作 Proxy Server,功能是代网络用户取得网络信息。形象点说,代理是网络信息的中转站。当客户端正常请求一个网站时,是把请求发送给了 Web 服务器,Web服务器再把响应传回给客户端。设置代理服务器,就是在客户端和服务器之间搭建一座桥,此时客户端并非直接向 Web 服务器发起请求,而是把请求发送给代理服务器,然后由代理服务器把请求发送给 Web服务器,Web服务器返回的响应也是由代理服务器转发给客户端的。这样客户端同样可以正常访问网页,而且这个过程中 Web 服务器识别出的真实IP就不再是客户端的IP了,成功实现了IP伪装,这就是代理的基本原理。
代理的作用
代理有什么作用呢?我们可以简单列举如下:
- 突破自身IP的访问限制,访问一些平时不能访问的站点。
- 访问一些单位或团体的内部资源。比如,使用教育网内地址段的免费代理服务器,就可以下载和上传对教育网开放的各类 FTP,也可以查询、共享各类资料等。
- 提高访问速度。通常,代理服务器会设置一个较大的硬盘缓冲区,当有外界的信息通过时,会同时将其保存到自己的缓冲区中,当其他用户访问相同的信息时,直接从缓冲区中取出信息,提高了访问速度。
- 隐藏真实 。上网者可以通过代理隐藏自己的IP,免受攻击。对于爬虫来说,使用代理就是为了隐藏自身 IP,防止自身的 IP 被封锁。
爬虫代理
对于爬虫来说,由于爬取速度过快,因此在爬取过程中可能会遇到同一个 IP 访问过于频繁的问题,此时网站会让我们输入验证码登录或者直接封锁IP,这样会给爬取造成极大的不便。
使用代理隐藏真实的卫P,让服务器误以为是代理服务器在请求自己。这样在爬取过程中不断更换代理,就可以避免 IP 被封锁,达到很好的爬取效果。
代理分类
对代理进行分类时,既可以根据协议,也可以根据代理的匿名程度,这两种分类方式分别总结如下。
-
根据协议区分
根据代理的协议,代理可以分为如下几类。
(1)FTP 代理服务器:主要用于访问 FTP服务器,一般有上传、下载以及缓存功能,端口一般为21.
2121等。
(2)HTTP 代理服务器:主要用于访问网页,一般有内容过滤和缓存功能,端口一般为80、80803128 等。
(3)SSL/TLS 代理:主要用于访问加密网站,一般有SSL或TLS加密功能(最高支持 128 位加密强度 ),端口一般为 443。
(4)RTSP 代理:主要用于 Realplayer 访问 Real流媒体服务器,一般有缓存功能,端口一般为 554。
(5)Telnet代理:主要用于 Telnet 远程控制(黑客人侵计算机时常用于隐藏身份),端口一般为 23。
(6)POP3/SMTP 代理:主要用于以POP3/SMTP 方式收发邮件,一般有缓存功能,端口一般为110/25。
(7)SOCKS代理:只是单纯传递数据包,不关心具体协议和用法,所以速度快很多,一般有缓存功能,端口一般为1080。SOCKS代理协议又分为SOCKS4和SOCKS5,SOCKS4协议只支持TCP,SOCKS5 协议则支持 TCP 和 UDP,还支持各种身份验证机制、服务器端域名解析等。简单来说,SOCKS4 能做到的 SOCKS5 都能做到,但 SOCKS5 能做到的 SOCKS4 不一定做得到。 -
根据匿名程度区分
根据代理的匿名程度,代理可以分为如下几类。
(1)高度匿名代理:高度匿名代理会将数据包原封不动地转发,在服务端看来似乎真的是一个普通客户端在访问,记录的IP则是代理服务器的IP。
(2) 普通匿名代理:普通匿名代理会对数据包做一些改动,服务端可能会发现正在访问自己的是个代理服务器,并且有一定概率去追査客户端的真实IP。这里代理服务器通常会加人的 HTTP 头有HTTP VIA和HTTP X FORWARDED FOR。
(3)透明代理:透明代理不但改动了数据包,还会告诉服务器客户端的真实IP。这种代理除了能用缓存技术提高浏览速度,用内容过滤提高安全性之外,并无其他显著作用,最常见的例子是内网中的硬件防火墙。
(4) 间谍代理:间谍代理是由组织或个人创建的代理服务器,用于记录用户传输的数据,然后对记录的数据进行研究、监控等。
常见的代理服务器
常见的代理设置如下。
- 对于网上的免费代理,最好使用高度匿名代理,可以在使用前把所有代理都抓取下来筛选一下可用代理,也可以进一步维护一个代理池。
- 使用付费代理服务。互联网上存在许多可以付费使用的代理商,质量要比免费代理好很多,
- ADSL拨号,拨一次号换一次IP,稳定性高,也是一种比较有效的封锁解决方案。
- 蜂窝代理,即用 4G 或 5G 网卡等制作的代理。由于用蜂窝网络作为代理的情形较少,因此整体被封锁的概率会较低,但搭建蜂窝代理的成本是较高的。
在后面,我们会详细介绍一些代理的使用方式。
总结
本文介绍了代理的相关知识,这对后文我们进行一些反爬绕过的实现有很大的帮助,同时也为后文的一些抓包操作打下了基础,需要好好理解。