网站为了保护数据安全,使用了许多反爬措施,其中一个措施就是 IP 封禁:服务器检测 IP 发起请求的频率,若超过了特定阈值,直接拒绝提供服务或返回错误甚至恶意信息。对应的解决方案是使用代理伪装请求的来源。

代理服务器

代理,即代理服务器 (Proxy Server),是网络信息的中转站,可代替用户获取/接受信息。
在常规的客户端与服务端桥接代理服务器,使客户端的请求经代理服务器中转给 Web 服务器(而不是直接发送给 Web 服务器),来自 Web 服务器的请求也由代理服务器传回客户端。在这个过程中,Web 服务器识别不到客户端的真实 IP 地址,实现了 IP 的伪装。
当同一个 IP 被爬虫频繁访问,可能会被 Web 服务器识别而要求完成人机验证后才允许继续访问或直接封禁 IP,这是很麻烦的。若通过不断更换代理服务器、隐藏真实 IP 的方式访问,服务器将难以察觉,避免 IP 封锁,绕过了反爬机制。

代理的作用

  1. 突破自身 IP 的内容访问限制,浏览当前无法访问的站点;
  2. 访问单位或组织内部资源。如使用教育网内地址段的免费代理服务器下载或上传仅对教育网开放的 FTP 服务,或查询、共享各类资料等;
  3. 提高访问速度。代理服务器往往有较大的硬盘缓冲区,用于保存频繁访问的相同信息。再次访问相同资源时,可直接从缓冲区中读取,提高了访问速度;
  4. 隐藏真实 IP。上网者可用代理隐藏自身 IP 而免受攻击。爬虫可用代理隐藏自身 IP 而避免 IP 封禁。

    代理的分类

    根据协议类型分类

  • FTP 代理:主要用于访问 FTP 服务器,一般有上传、下载以及缓存功能,端口一般为 21、2121 等;
  • HTTP 代理:主要用于访问网页,一般有内容过滤和缓存功能,端口一般为 80、8080、3128 等;
  • SSL/TLS 代理:主要用于访问加密网站,一般有 SSL 或 TLS 加密功能(最高支持 128 位加密),端口一般为 443;
  • RTSP 代理:主要用 Realplayer 访问 Real 流媒体服务器,一般有缓存功能。端口一般为 554;
  • Telnet 代理:主要用于 Telnet 远程控制(黑客入侵计算机时常用于隐藏身份),端口一般为 23;
  • POP3/SMTP 代理:主要用于以 POP3/SMTP 方式收发邮件,一般有缓存功能,端口一般为 110、25;
  • SOCKS 代理:仅用于传输数据包,而不关心具体协议及用法,因此速度更快。一般有缓存功能,端口一般为 1080

    • SOCKS4:只支持 TCP 协议;
    • SOCKS5:同时支持 TCP 和 UDP 协议,还支持各种身份验证机制、服务器端域名解析等。

      根据匿名程度分类

  • 高度匿名代理:将数据包原封不动地转发,使 Web 服务端认为是普通客户端访问,记录代理服务器的 IP 地址;

  • 普通匿名代理:会对数据包做一些改动(在 HTTP 头中加入HTTP_VIAHTTP_X_FORWARDED_FOR),Web 服务端可发现访问来自代理服务器,并以此追查到客户端的真实 IP 地址;
  • 透明代理:不但改动了数据包,还会告诉服务器客户端的真实 IP。常用于内网的硬件防火墙,能用缓存技术提高浏览速度,用内容过滤提高安全性;
  • 间谍代理:由组织或个人创建,用于记录用户传输数据的代理服务器,可对记录的数据进行研究或监控。

    代理的设置

  • 免费代理:最好使用高度匿名代理。使用前可将所有代理进行筛选后维护一个代理池;

  • 付费代理:质量比免费代理好很多;
  • ADSL 拨号:每拨一次号换一次 IP。稳定性高,是一种比较有效的封 IP 解决方案;
  • 蜂窝代理:使用 4G 或 5G 网卡等制作的代理。被封 IP 的概率较低,但搭建成本较高。