常见爬虫/BOT 对抗技术简介(二)

 

上一篇文章分别从网络协议,Robots文件,JS渲染,行为分析等多方面讲了些“反爬虫”,“反-反爬虫”技术。

点击查看《常见爬虫/BOT 对抗技术简介(一)》

 

本文将主要介绍各种IP地址的获取及接入方式

2.2 VPN

VPN是一个大家耳熟能详的技术。VPN最常用于连接办公网,以及规避流量审计。在WIKI中, VPN的定义如下:

虚拟私人网络(英语:Virtual Private Network,缩写为VPN)是一种常用于连接中、大型企业或团体与团体间的私人网络的通讯方法。它利用隧道协议(Tunneling Protocol)来达到保密、发送端认证、消息准确性等私人消息安全效果,这种技术可以用不安全的网络(例如:互联网)来发送可靠、安全的消息。需要注意的是,加密消息与否是可以控制的,如果是没有加密的虚拟专用网消息依然有被窃取的危险。

我们都知道,我们的网络模型用OSI来描述是7层,分别是应用层、表达层、会话层、传输层、网络层、链路层、物理层。

正常的网络连接, 是完整的7层网络,VPN的原理是通过其中某一层,重新从链路层开始传输。

举个例子,PPTP协议就是把第二层的PPP帧,用GRE协议包装,在IP层上传输。所以PPTP是 PPP over IP . L2TP是把PPP帧封装为UDP包,所以是 PPP over UDP。

用这种方式,也可以理解代理的工作方式,例如,Socks5代理就是 TCP over TCP, HTTP代理是 TCP over HTTP。

只要涉及到改变IP,必然涉及到网络通信协议的重新组装,并在一个层面上重新实现了这个层面或者比这个层面更底层的功能。

由于连接了VPN的用户可以将本地的数据通过VPN路由,所以VPN也是一种“改变IP”的方式。

2.2.1 简单 VPN

简单的VPN组网非常直观,即客户计算机连接至远程服务器,在本地产生一个虚拟网卡,并将本地的所有流量路由至该网卡。
远程的服务器将用户流量从其中一个网卡(可能是物理的、也有可能是PPP的)发出。

2.2.2 混合网络VPN

有意思的是目前国内存在一种混合网络VPN的产品, 本质上是各地的服务器加入到同一个VPN中,用户的VPNClient连接至中心服务器后,

中心服务器在路由表中为此用户随机指定一个VPN网关,实现用户连接同一个VPN服务器,但出口IP是全国随机的

 

2.3 VPS

VPS 是目前非常常见的一种IT服务, 向用户提供一个远程的服务器,本质上是KVM虚拟机。

通常,在提供VPS服务时,还会向用户提供一个外网IP地址,所以很多爬虫就利用VPS提供的IP地址来解决IP问题。

目前国内有许多优秀的VPS提供商,比如我们已经很熟悉的阿里云、腾讯云,还有不太常见的青云、华为云等等。

2.3.1 混拨VPS

国内还有一个很有意思的VPS服务,叫做混拨VPS。 它的效果是, 你在它提供的VPS服务器上发起PPP连接(拨号), 每次可以通过这个PPP连接为你提供不同地区的IP地址。 它的实现方式是EtherIP。

何谓PPPOE?

2.4 PPPoE (家庭宽带)

PPP协议也叫点对点协议(英语:Point-to-Point Protocol,PPP),是一个历史悠久的协议,定义于1992年,备忘录编号RFC 1331。

它的另外一个名字更为我们所熟知——宽带拨号。 当前我们所用的宽带连接技术,无论ADSL还是光纤接入,在数据链路层上,都使用PPP技术。我们在运营商办理宽带时,如果采用ADSL接入, 运营商会为我们提供一个ADSL Modem,如果使用光纤接入, 运营商为我们提供一个光猫,也叫ONU。 ONU 与 ADSL Modem 为我们建立了与ISP通信的物理层,我们会发现,直接将光猫或ADSL Modem上面的以太网口接入电脑是不行的, 这是因为由于运营商需要AAA,也就是 验证、授权和记账(Authentication、Authorization、Accounting )。 在我们看来,我们需要“拨号” 才能上网。 “拨号”,就是建立了一个PPP连接。 PPP协议提供了认证的能力, 这也就是为什么我们在“拨号”的时候,可以输入 用户名、密码。 而运营商可以通过用户名和密码来对我们进行认证的原因。

在建立了PPP连接之后, 在操作系统看来, PPP连接表现为一个网卡,当然这个网卡并不是物理上的网卡,而是一个虚拟的逻辑网卡, 与这个逻辑的网卡进行通信,PPP协议的驱动程序会自动为我们完成PPP协议的封包和拆包工作, 在我们看来,除了由于PPP协议的8个字节开销,导致MTU比正常的要小一些之外, 这个网卡和一般的物理网卡工作起来并没有什么区别。

一般来说,在PPP连接建立之后, 远端的ISP设备, 称为BAS(接入服务器),会为PPP链接的客户端赋予一个IP地址. 这个IP地址在几年前一般都是公网IP地址, 现在有很多是NAT过的IP地址. 它们来源于BAS服务器上配置的地址池,通常IP地址池的划分是于区县级的,也有部分城市经过改造,可能是市级,甚至是省级的。

PPP拨号在爬虫对抗中是很可靠的IP来源,因为它与用户的IP段重合,如果服务提供商贸然封杀IP,会导致严重的误杀, 当然局限性也很大,如果想获取一个地区IP地址,就需要在这个地区架设机房。所需要的时间精力比较大。

2.5 4G

4G网是近几年已经迅速成熟的移动通信技术。按照ITU的定义,静态传输速率达到1Gbps,用户在高速移动状态下可以达到100Mbps,就可以作为4G的技术之一。据2018年上半年的统计数据,4G用户总数达到11.1亿户。 比传统的宽带接入方式用户数要大得多, 4G接入方式的IP段与家庭宽带的IP段互不重合,是独立的IP段。与家庭宽带来源相比,4GIP段NAT的情况要更加严重, 与用户的重合度更好。 在爬虫对抗的过程中,误杀率会更高。 是更有效的代理IP来源。

 

接下来我会介绍其他的的IP层反-反爬虫方案。

目录如下

2.2 VPN
2.3.1 简单 VPN
2.3.2 混合网络VPN

2.3 VPS
2.4 单机PPP拨号
2.5 并发PPP拨号

三、并发PPP连接技术简介
3.1 PPP协议栈简单介绍
3.2 PPP连接和ADSL的关系
3.3 城域网技术简介
3.4 并发PPP连接方案的适用范围
3.5 国内并发PPP连接服务提供商

四、Linux路由
4.1 Linux基础路由简介
4.2 Linux高级路由简介

三、并发PPP连接技术简介
3.1 PPP协议栈简单介绍
3.2 PPP连接和ADSL的关系
3.3 城域网技术简介
3.4 并发PPP连接方案的适用范围
3.5 国内并发PPP连接服务提供商

四、Linux路由
4.1 Linux基础路由简介
4.2 Linux高级路由简介

 

综上所述,使用代理IP是解决反扒机制的最佳解决方案,也是最简单有效的。

为此,我个人研发了一款代理IP池项目,现欢迎大家内测体验~

传送门:www.2808proxy.com

解决爬虫的IP源问题。

posted @ 2019-01-19 20:34  THISISPAN  阅读(...)  评论(... 编辑 收藏