文档首页/ 边缘安全 EdgeSec/ 用户指南/ 安全防护/ 防护策略/ 配置防护策略/ 配置网站反爬虫防护规则防御爬虫攻击
更新时间:2024-10-31 GMT+08:00
分享

配置网站反爬虫防护规则防御爬虫攻击

您可以通过配置网站反爬虫防护规则,防护搜索引擎、扫描器、脚本工具、其它爬虫等爬虫,以及自定义JS脚本反爬虫防护规则。

前提条件

已添加防护网站,详情操作请参见添加防护网站

约束条件

  • 本功能依赖浏览器的Cookie机制、JavaScript解析能力,如果客户端浏览器不支持Cookie,此功能无法使用。
  • 添加或修改防护规则后,规则生效需要等待几分钟。规则生效后,您可以在“防护事件”页面查看防护效果。
  • 如果您的业务接入了CDN服务,请谨慎使用此功能。

    由于CDN缓存机制的影响,网站反爬虫特性将无法达到预期效果,并且有可能造成页面访问异常。

JS脚本反爬虫检测机制

JS脚本检测流程如图1所示,其中,①和②称为“js挑战”,③称为“js验证”。

图1 JS脚本检测流程说明

开启JS脚本反爬虫后,当客户端发送请求时,会返回一段JavaScript代码到客户端。

  • 如果客户端是正常浏览器访问,就可以触发这段JavaScript代码再发送一次请求,即边缘安全完成js验证,并将该请求转发给源站。
  • 如果客户端是爬虫访问,就无法触发这段JavaScript代码再发送一次请求,即边缘安全无法完成js验证。
  • 如果客户端爬虫伪造了认证请求,发送到边缘安全时,会拦截该请求,js验证失败。

通过统计“js挑战”和“js验证”,就可以汇总出JS脚本反爬虫防御的请求次数。例如,图2中JS脚本反爬虫共记录了18次事件,其中,“js挑战”(EdgeSec返回JS代码)为16次,“js验证”(EdgeSec完成JS验证)为2次,“其他”(即爬虫伪造EdgeSec认证请求)为0次。

图2 JS脚本反爬虫防护数据

“js挑战”和“js验证”的防护动作为仅记录,EdgeSec不支持配置“js挑战”和“js验证”的防护动作。

操作步骤

  1. 登录管理控制台
  2. 单击页面左上方的,选择CDN与智能边缘 > CDN与安全防护
  3. 在左侧导航栏选择安全防护 > 域名接入,进入“安全防护”“域名接入”页面。
  4. 在目标域名所在行的“防护策略”栏中,单击“已开启N项防护”,进入“防护策略”页面。

    图3 网站列表

  5. “网站反爬虫”配置框中,用户可根据自己的需要参照图4更改网站反爬虫的“状态”,单击“BOT设置”,进入网站反爬虫规则配置页面。

    图4 网站反爬虫配置框

  6. “特征反爬虫”页签,根据您的业务场景,开启合适的防护功能,如图5所示,检测项说明如表1所示。

    特征反爬虫规则提供了两种防护动作:
    • 拦截

      发现攻击行为后立即阻断并记录。

    • 仅记录

      默认防护动作,发现攻击行为后只记录不阻断攻击。

    默认开启“扫描器”防护检测,用户可根据业务需要,配置防护动作并开启其他需要防护的检测类型。
    图5 特征反爬虫防护
    表1 特征反爬虫检测项说明

    检测项

    说明

    功能说明

    搜索引擎

    搜索引擎执行页面内容爬取任务,如Googlebot、Baiduspider。

    开启后,EdgeSec将检测并阻断搜索引擎爬虫。

    说明:

    如果不开启“搜索引擎”,EdgeSec针对谷歌和百度爬虫不会拦截,如果您希望拦截百度爬虫的POST请求,可参照配置示例-搜索引擎进行配置。

    扫描器

    执行漏洞扫描、病毒扫描等Web扫描任务,如OpenVAS、Nmap。

    开启后,EdgeSec将检测并阻断扫描器爬虫。

    脚本工具

    用于执行自动化任务、程序脚本等,如httpclient、okhttp、python程序等。

    开启后,EdgeSec将检测并阻断执行自动化任务、程序脚本等。

    说明:

    如果您的应用程序中使用了httpclient、okhttp、python程序等脚本工具,建议您关闭“脚本工具”,否则,EdgeSec会将使用了httpclient、okhttp、python程序等脚本工具当成恶意爬虫,拦截该应用程序。

    其他爬虫

    各类用途的爬虫程序,如站点监控、访问代理、网页分析等。

    说明:

    “访问代理”是指当网站接入EdgeSec后,为避免爬虫被EdgeSec拦截,爬虫者使用大量IP代理实现爬虫的一种技术手段。

    开启后,EdgeSec将检测并阻断各类用途的爬虫程序。

  7. 选择“JS脚本反爬虫”页签,用户可根据业务需求更改JS脚本反爬虫的“状态”“防护模式”

    默认关闭JS脚本反爬虫,单击,在弹出的“警告”提示框中,单击“确定”,开启JS脚本反爬虫

    • JS脚本反爬虫依赖浏览器的Cookie机制、JavaScript解析能力,如果客户端浏览器不支持Cookie,此功能无法使用,开启后会造成永远无法访问源站。
    • 如果您的业务接入了CDN服务,请谨慎使用JS脚本反爬虫。

      由于CDN缓存机制的影响,JS脚本反爬虫特性将无法达到预期效果,并且有可能造成页面访问异常。

  8. 根据业务配置JS脚本反爬虫规则,相关参数说明如表2所示。

    JS脚本反爬虫规则提供了“防护所有请求”“防护指定请求”两种防护动作。

    • 除了指定请求规则以外,防护其他所有请求
      “防护模式”选择“防护所有请求”,单击“添加排除请求规则”,配置排除请求规则后,单击“确认”
      图6 添加排除防护路径
    • 只防护指定请求时

      “防护模式”选择“防护指定请求”,单击“添加请求规则”,配置请求规则后,单击“确认”

      图7 添加请求规则
    表2 JS脚本反爬虫参数说明

    参数

    参数说明

    示例

    规则名称

    自定义规则名称。

    EdgeSec

    规则描述

    可选参数,设置该规则的备注信息。

    -

    生效时间

    立即生效。

    立即生效

    条件列表

    条件设置参数说明如下:

    • 字段:在下拉列表中选择需要防护的字段,当前仅支持“路径”“User Agent”
    • 子字段
    • 逻辑:在“逻辑”下拉列表中选择需要的逻辑关系。
      说明:

      选择“包含任意一个”、“不包含所有”、“等于任意一个”、“不等于所有”、“前缀为任意一个”、“前缀不为所有”、“后缀为任意一个”或者“后缀不为所有”时,“内容”需要选择引用表名称,创建引用表的详细操作请参见创建引用表

    • 内容:输入或者选择条件匹配的内容。

    “路径”包含“/admin/”

    优先级

    设置该条件规则检测的顺序值。如果您设置了多条规则,则多条规则间有先后匹配顺序,即访问请求将根据您设定的优先级依次进行匹配,优先级较小的规则优先匹配。

    5

相关操作

  • 若需要修改添加的JS脚本反爬虫规则,可单击待修改的路径规则所在行的“修改”,修改该规则。
  • 若需要删除添加的JS脚本反爬虫规则时,可单击待删除的路径规则所在行的“删除”,删除该规则。

配置示例-仅记录脚本工具爬虫

假如防护域名“www.example.com”已接入EdgeSec,您可以参照以下操作步骤验证反爬虫防护效果。

  1. 执行JS脚本工具,爬取网页内容。
  2. “特征反爬虫”页签,开启“脚本工具”“防护动作”设置为“仅记录”(EdgeSec检测为攻击行为后,只记录不阻断)。

    图8 开启“脚本工具”

  3. 开启网站反爬虫。

    图9 网站反爬虫配置框

  4. 在左侧导航树中,单击“防护事件”,进入“防护事件”页面,您可以查看该防护事件。

    图10 查看防护事件-脚本爬虫

配置示例-搜索引擎

放行百度或者谷歌的搜索引擎,同时拦截百度的POST请求。

  1. 参照步骤 5“搜索引擎”设置为放行,即将“搜索引擎”“状态”设置为
  2. 参照配置精准访问防护规则配置如图11的规则。

    图11 拦截POST请求

相关文档