个人简介
作者简介:大家好,我是W_chuanqi,一个编程爱好者
个人主页:W_chaunqi
支持我:点赞+收藏⭐️+留言
愿你我共勉:“若身在泥潭,心也在泥潭,则满眼望去均是泥潭;若身在泥潭,而心系鲲鹏,则能见九万里天地。”✨✨✨
在做爬虫的过程中经常会遇到一种情况,就是爬虫最初是正常运行、正常抓取数据的,一切看起来都是那么美好。然而一杯茶的工夫就出现了错误,例如 403 Forbidden,这时打开网页一看,可能会看到“您的 IP访问频率太高”这样的提示。出现这种现象是因为网站采取了一些反爬虫措施。例如服务器会检测某个 IP在单位时间内的请求次数,如果请求次数超过设定的阈值,就直接拒绝提供服务,并返回一些错误信息,可以称这种情况为封 IP。
既然服务器检测的是某个IP在单位时间内的请求次数,那么借助某种方式把我们的 IP 伪装一下,让服务器识别不出请求是由我们本机发起的,不就可以成功防止封 IP了吗?
一种有效的伪装方式是使用代理,后面会详细说明代理的用法。在这之前,需要先了解代理的基本原理,它是怎样实现伪装 IP 的呢?
代理实际上就是指代理服务器,英文叫作 Proxy Server,功能是代网络用户取得网络信息。形象点说,代理是网络信息的中转站。当客户端正常请求一个网站时,是把请求发送给了 Web 服务器,Web 服务器再把响应传回给客户端。设置代理服务器,就是在客户端和服务器之间搭建一座桥,此时客户端并非直接向 Web 服务器发起请求,而是把请求发送给代理服务器,然后由代理服务器把请求发送给 Web服务器,Web服务器返回的响应也是由代理服务器转发给客户端的。这样客户端同样可以正常访问网页,而且这个过程中 Web服务器识别出的真实P就不再是客户端的护了,成所实现了他情
装,这就是代理的基本原理。
代理有什么作用呢?我们可以简单列举如下。
对于爬虫来说,由于爬取速度过快,因此在爬取过程中可能会遇到同一个 IP 访问过于频繁的同题,此时网站会让我们输入验证码登录或者直接封锁 IP,这样会给爬取造成极大的不便。
使用代理隐藏真实的IP,让服务器误以为是代理服务器在请求自己。这样在爬取过程中不断更换代理,就可以避免 IP被封锁,达到很好的爬取效果。
对代理进行分类时,既可以根据协议,也可以根据代理的匿名程度,这两种分类方式分别总结如下。
根据代理的协议,代理可以分为如下几类。
根据代理的匿名程度,代理可以分为如下几类。
高度匿名代理:高度匿名代理会将数据包原封不动地转发,在服务端看来似乎真的是一个普通客户端在访问,记录的 IP 则是代理服务器的 IP。
普通匿名代理:普通匿名代理会对数据包做一些改动,服务端可能会发现正在访问自己的是个代理服务器,并且有一定概率去追查客户端的真实 IP。这里代理服务器通常会加入的 HTTP头有HTTP_VIA 和HTTP_X_FORWARDED_FOR。
透明代理:透明代理不但改动了数据包,还会告诉服务器客户端的真实 IP。这种代理除了能用缓存技术提高浏览速度,用内容过滤提高安全性之外,并无其他显著作用,最常见的例子是内网中的硬件防火墙。
间谍代理:间谍代理是由组织或个人创建的代理服务器,用于记录用户传输的数据,然后对记录的数据进行研究、监控等。
常见的代理设置如下。
对于网上的免费代理,最好使用高度匿名代理,可以在使用前把所有代理都抓取下来筛选一下可用代理,也可以进一步维护一个代理池。
使用付费代理服务。互联网上存在许多可以付费使用的代理商,质量要比免费代理好很多。
ADSL 拨号,拨一次号换一次 IP,稳定性高,也是一种比较有效的封锁解决方案。
蜂窝代理,即用 4G 或 5G 网卡等制作的代理。由于用蜂窝网络作为代理的情形较少,因此整体被封锁的概率会较低,但搭建蜂窝代理的成本是较高的。