CDN加速

文档中心 CDN Pro 集成BotGuard爬虫管理

集成BotGuard爬虫管理

更新时间:2022-07-18 19:36:21

集成BotGuard爬虫管理

在CDN Pro上集成BOT应用

《爬虫防护》这篇文章中,我们已经为您介绍了如何在CDN Pro的边缘逻辑(Edge Logic)中自定义一些防爬虫策略。当您不想自己对爬虫特征进行分析并自行编写防爬代码的时候,您也可以选择成我们的BotGuard爬虫管理服务,以保护您的资产不会被非法爬虫程序获取。同样的,您也可以在CDN Pro上集成其他第三方BOT应用保护您的资产。

  • 对于可缓存的静态资源,我们认为:①爬虫程序可以直接在CDN Pro服务器上获取静态资源,不会对您的源站造成额外的压力;②不对每个请求做检测,可以大大提升我们的用户请求访问效率;③这些静态资源的公开有利于提升您站点的SEO。因此,我们默认不对这些静态资源开启爬虫防护。但是,针对一些特殊的场景,我们仍然在边缘逻辑(Edge Logic)中定义了一些爬虫防护规则,以保护我们认为不适合爬虫程序获取的静态资源。

  • 对于不可缓存的动态资源,我们认为:①这些动态内容是您非常关键的资产,需要重点保护;②即使CDN Pro上可以做短时缓存,但是绝大部分动态资源都是需要回源获取的,爬虫获取动态资源会对您的源站服务器造成不必要的负担;③爬虫程序请求动态资源,会具备各种各样的特征,自行进行特征分析并编写代码可能并不能防护所有的非法爬虫程序。因此,我们创建了BOT应用,对这些动态资源请求进行识别,以保护源站。

本文将为您介绍如何在CDN Pro上集成BOT应用。

集成示例:CDN Pro+网宿BOT

假设您的业务具备如下特性:

  • 域名botpro.8686c.com源站服务器 IP 地址为 1.1.1.1,当前域名设置了 DNS A记录解析到这个服务器 IP 地址。
  • 从源站服务器获取资源,需要在请求Host头中携带该域名,以访问指定的内容。
  • BOT应用程序需要CDN Pro通过 Cdn-Src-Ip 头部传递客户端原始IP,BOT再从该头部提取客户端原始IP写到X-Forward-For头部传递给源站。
  • BOT应用程序内置了一些防护策略,当触发策略执行规则时,BOT应用会在响应中插入一些信息供用户校验,只有校验通过后才允许向后端资源发起请求。

使用 CDN Pro 集成BOT服务:

  • 业务流量会先经过CDN Pro边缘的ES服务器进行基础的检测与拦截(如下图“Bot Edge Logic”),然后由CDN Pro将动态资源请求引入到BOT应用进行高级的检测与拦截(如下图“Bot Application”),确保非法爬虫请求不会轻易访问您的后端源站应用(除非您配置放行了这些爬虫)。

  • 以下我们将以网宿BOT应用为例,为您介绍如何在CDN Pro上配置BOT应用。

如何打造云课堂智慧教学平台

步骤1:创建并配置BOT应用

  • 进入BOT控制台。在CDN Pro控制台上点击左侧菜单【BotGuard爬虫管理】,进入网宿BOT控制台。

如何打造云课堂智慧教学平台

  • 创建BOT应用。进入BOT控制台【域名管理】菜单页,点击“新增域名”按钮,为需要进行爬虫防护的域名创建BOT应用。这里我们创建了BOT应用 botpro.8686c.com ,并配置其回源地址指向源站服务器 IP 地址: 1.1.1.1,此时,系统生成这个应用的BOT CNAME:botpro.8686c.com.wscdns.com 。稍后我们会将经过CDN Pro的流量指向这个BOT CNAME地址。

如何打造云课堂智慧教学平台

  • 进入配置页。当合法流量经过BOT后,需要配置回源HOST来区分从源站获取的内容。在域名管理页面下,勾选刚刚创建的BOT应用,点击“配置修改”,开始进行BOT配置。

如何打造云课堂智慧教学平台

  • 配置回源HOST。在配置修改页面下,我们在【回源配置】页签下进行【回源协议改写】和【回源替换】配置。此处,我们配置了BOT回源HOST为 botpro.8686c.com,并指定了回源的端口为8443。同时,我们认为HTTP传输是不安全的,因此配置了回源请求的协议统一走HTTPS。

如何打造云课堂智慧教学平台

  • 配置获取客户端IP。在配置修改页面下,我们在【获取客户端IP】页签下配置了BOT应用从Cdn-Src-Ip头部获取客户端真实IP并通过X-Fordwarded-For将其传递回源(实际上这也是BOT的默认配置)。此处需要注意的是,这里的前提条件是Cdn-Src-Ip头部值已经写入客户端真实IP并由CDN Pro传递给BOT应用,稍后我们会在CDN Pro上新增这个配置。

如何打造云课堂智慧教学平台

步骤2:为BOT应用配置证书

  • 为BOT配置证书。进入【证书管理】控制台,分别上传授权域名包含 botpro.8686c.com 的SSL证书,并进行证书关联域名操作,以开启HTTPS。若您没有证书,可通过“申请一键证书”来申请免费的DV SSL证书。

如何打造云课堂智慧教学平台

步骤3:创建加速项目并为其开启BOT应用

  • 为域名创建加速项目。在CDN Pro控制台【边缘配置】【加速项目】页面下,点击“新建加速项目”,为域名 botpro.8686c.com 创建一个加速项目。

如何打造云课堂智慧教学平台

  • 配置BOT应用信息。此处我们将BOT应用作为CDN Pro的源站应用,并将BOT CNAME作为回源地址,以确保未命中缓存的动态流量在发到源站之前会经过BOT应用做检测中。其中:①服务器:源站服务器配置的是我们刚刚新创建的BOT CNAME botpro.8686c.com.wscdns.com。CDN Pro回源访问BOT CNAME,BOT检测完成后,合法流量才会访问源站IP 1.1.1.1;②支持协议:我们配置了回源强制转 HTTPS 协议,以确保数据传输安全;③Host请求头:我们配置了HOST请求头为 botpro.8686c.com。在此场景下,我们实际上也可以不配置这个HOST值,因为该值默认为空的时候,CDN Pro将直接把客户端携带的 Host请求标头值传递给BOT应用服务器;④直接连接:我们还选择了“自动匹配”的方式,提升缓存命中率。

如何打造云课堂智慧教学平台

  • 在边缘逻辑中配置引入BOT应用。①选BOT源策略:我们通过 origin_pass 指令来配置CDN Pro在回源阶段引入BOT应用 BOTAPP 。在这个配置示例中,我们定义CDN Pro默认把源站设置为我们创建的BOT应用。②传递真实客户端IP回源:在本配置示例场景中,BOT需要从 Cdn-Src-Ip 头部提取用户真实客户端IP并写入X-Forward-For头部中并携带给源站,前面我们已经在BOT上做了回源X-Forward-For头部配置,此处,我们需要在CDN Pro上配置通过头部 Cdn-Src-Ip 传递客户端IP回BOT应用。这里我们通过指令 origin_set_header 将变量 $client_real_ip 写入 Cdn-Src-Ip 头部中并携带回BOT应用。
location / { #This is the default location.
proxy_cache_valid 1440m; #200, 301, and 302 responses will be cached for 1440m
set $cache_misc $cache_misc$sorted_querystring_args; #Add sorted query string to the cache key
origin_pass BOTAPP;
origin_set_header Cdn-Src-Ip $client_real_ip;
}
location ~* \.(php|aspx|asp|jsp|do|dwr|cgi|fcgi|action|ashx|axd|json)$ {
proxy_cache_bypass 1; #Do not cache the common dynamic objects mentioned above
proxy_no_cache 1;
origin_pass BOTAPP;
origin_set_header Cdn-Src-Ip $client_real_ip;
}

如何打造云课堂智慧教学平台

注意事项

  • BOT应用在对请求进行检测后,若发现疑似或者非法请求,经常会在响应中添加一些信息来采集客户端身份或搜集用户行为,以此对客户端进行身份验证(详见:BOT指南)。
  • BOT应用修改的响应一般有如下特征:①添加响应头部 Set-Coookie;②添加响应头部Cache-Control:no-store & 在HTML响应体插入JavaScript。
  • 因此,在CDN Pro上集成BOT应用时,需要特别注意不能配置忽略来自源站(此处即BOT应用)的响应头Set-CoookieCache-Control:no-store,否则可能会由于响应被缓存注而导致BOT检测失效。为杜绝这种场景,您需要检查边缘逻辑Edge Logic中未使用 proxy_ignore_headersproxy_ignore_cache_control这两个指令来配置忽略这两个响应头Set-CoookieCache-Control:no-store

步骤4:为加速项目配置证书

  • 为加速项目配置TLS证书。您可以根据您的安全要求配置 TLS 最低协议版本、TLS 最高协议版本以及TLS加密套件:

如何打造云课堂智慧教学平台

步骤5:测试部署并引流生效

  • 在演练环境中测试加速项目后,可以部署到生产环境。
  • 如果您还没有边缘调度域名,您可以根据您的流量管理需求创建一个CDN Pro边缘调度域名,然后针对 botpro.8686c.com 添加一条CNAME 的 DNS 记录指向CDN Pro边缘调度域名。

现在,任何访问botpro.8686c.com域名的请求都将被路由到 CDN Pro 平台。CDN Pro收到请求后,会先执行边缘逻辑下的自定义防护策略代码,检测合法的请求才能获取到缓存并响应给客户端。同时,每个动态回源请求均会经过BOT应用进行更高级的BOT检测及防护,确保恶意爬虫请求不会访问到源站。

集成其他第三方BOT

除了在CDN Pro上集成网宿BOT之外,您也可以采用同样的方式集成第三方BOT应用。

本篇文档内容对您是否有帮助?
有帮助
没帮助
提交成功!非常感谢您的反馈,我们会继续努力做到更好!