文档首页/ Web应用防火墙 WAF/ 用户指南/ 配置防护策略/ 配置防护规则/ 配置网站反爬虫防护规则防御爬虫攻击
更新时间:2025-08-19 GMT+08:00
分享

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

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

前提条件

约束条件

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

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

  • 云模式入门版和标准版本不支持该功能。
  • 防护网站部署模式为“云模式-ELB接入”时,不支持JS脚本反爬虫功能。
  • 开启JS脚本反爬虫后,如果不能查看拦截记录,请参见开启JS脚本反爬虫后,为什么有些请求被WAF拦截但查不到拦截记录
  • 网站反爬虫“JS挑战”的防护动作为“仅记录”,“JS验证”的防护动作为人机验证(即JS验证失败后,弹出验证码提示,输入正确的验证码,请求将不受访问限制)。
  • WAF的JS脚本反爬虫功能只支持get请求,不支持post请求。

配置网站反爬虫防护规则

  1. 登录Web应用防火墙控制台
  2. 在控制台左上角,单击图标,选择区域或项目。
  3. (可选) 如果您已开通企业项目,在左侧导航栏上方,单击“按企业项目筛选”下拉框,选择您所在的企业项目。完成后,页面将为您展示该企业项目下的相关数据。
  4. 在左侧导航栏,单击“防护策略”
  5. 单击目标策略名称,进入目标策略的防护规则配置页面。

    在配置防护规则前,请确认目标防护策略已绑定防护域名,即绑定策略生效目标。一条防护策略可以适用于多个防护域名,但一个防护域名只能绑定一个防护策略。

  6. 单击“网站反爬虫”配置框,确认已开启网站反爬虫防护规则。

    :开启状态。

  7. “特征反爬虫”页签,根据您的业务场景,配置命中特征反爬虫规则的防护动作、要执行检测的类型,如图3所示,检测项说明如表1所示。

    图3 特征反爬虫防护
    • 防护动作:设置请求命中规则时要执行的处置动作:
      • 拦截:发现攻击行为后立即阻断并记录。

        开启拦截后,可能会有以下影响 :

        • 拦截搜索引擎请求,可能影响网站的搜索引擎优化。
        • 拦截脚本工具,可能会影响部分APP访问(部分APP的User-Agent未做修改,会匹配脚本工具类爬虫规则)。
      • 仅记录(默认):发现攻击行为后只记录不阻断攻击。
    • 检测类型:WAF默认开启“扫描器”防护检测,您可以根据业务需要,配置要防护的检测类型。
      表1 特征反爬虫检测项说明

      检测项

      说明

      功能说明

      搜索引擎

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

      • 开启后,WAF将检测并阻断搜索引擎爬虫。
      • 关闭后,WAF针对谷歌和百度爬虫不会拦截,如果您希望拦截百度爬虫的POST请求,可参照配置示例:搜索引擎进行配置。

      扫描器

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

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

      脚本工具

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

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

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

      其他爬虫

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

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

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

  8. “JS脚本反爬虫”页签,配置JS脚本反爬虫规则。

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

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

    图4 JavaScript
    • 状态:配置“JS脚本反爬虫”启用状态。
      • :开启状态。
      • (默认):关闭状态。
    • 防护动作:设置请求命中规则时要执行的处置动作。
      • 拦截:表示拦截命中规则的请求,并向发起请求的客户端返回拦截响应页面。
      • 仅记录:表示不拦截命中规则的请求,只通过日志记录防护信息。
      • 人机验证:表示JavaScript挑战失败,弹出验证码提示,输入正确的验证码,请求将不受访问限制。
    • 防护模式:选择“JS脚本反爬虫”的防护模式。
      • 防护所有请求:除了指定请求规则以外,防护其他所有请求,即规则状态为开启的防护规则不在防护范围内。单击“添加排除请求规则”,添加要排除的规则,相关参数说明如表2所示。
      • 防护指定请求:只防护指定请求,即没有添加指定防护路径“/”请求或规则状态为关闭的,则表示所有路径“/”请求不在防护范围内。单击“防护指定请求”,添加要防护的规则,相关参数说明如表2所示。
      表2 JS脚本反爬虫参数说明

      参数

      参数说明

      示例

      规则名称

      自定义规则名称。

      waf

      规则描述(可选)

      设置该规则的备注信息。

      -

      条件列表

      配置要匹配的请求特征。请求一旦命中该特征,WAF则按照配置的规则处置该请求。

      • 至少需要配置一项,本条规则才能生效。配置多个条件时,需同时满足,本条规则才生效。
      • 单击“添加条件”增加新的条件,最多可添加30个条件。

      条件设置参数说明如下:

      • 字段:在下拉列表中选择需要检测的字段,当前仅支持“路径”“User Agent”
      • 子字段“路径”“User Agent”字段无需设置子字段。
      • 逻辑:在“逻辑”下拉列表中选择需要的逻辑关系。
      • 内容:输入或者选择条件匹配的内容。

        “逻辑”关系选择“包含任意一个”“不包含任意一个”“等于任意一个”“不等于任意一个”“前缀为任意一个”“前缀不为任意一个”“后缀为任意一个”或者“后缀不为任意一个”时,需要选择引用表

      • 大小写敏感“字段”选择“路径”时,可配置该参数。开启后,系统在检测配置的路径时,将区分大小写。能够帮助系统更准确地识别和处理各种爬虫请求,从而有效提升反爬虫策略的精确度和有效性。

      “路径”包含“/admin/”

      生效时间

      规则添加后,立即生效。

      立即生效

      优先级

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

      5

      完成以上配置后,您还可以执行以下操作:

      • 查看规则状态:在防护规则列表,查看已添加的规则。此时,“规则状态”默认为“已开启”
      • 关闭规则:如果您暂时不想使该规则生效,可在目标规则“操作”列,单击“关闭”
      • 删除或修改规则:您也可以在目标规则“操作”列,单击“删除”“修改”,删除或修改已添加的防护规则。

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

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

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

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

      图6 配置请求规则
    表3 JS脚本反爬虫参数说明

    参数

    参数说明

    示例

    规则名称

    自定义规则名称。

    waf

    规则描述

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

    -

    生效时间

    立即生效。

    立即生效

    条件列表

    条件设置参数说明如下:

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

      “逻辑”关系选择“包含任意一个”“不包含任意一个”“等于任意一个”“不等于任意一个”“前缀为任意一个”“前缀不为任意一个”“后缀为任意一个”或者“后缀不为任意一个”时,需要选择引用表。

    • 内容:输入或者选择条件匹配的内容。
    • 大小写敏感:“字段”选择“路径”时,可配置该参数。开启后,系统在检测配置的路径时,将区分大小写。能够帮助系统更准确地识别和处理各种爬虫请求,从而有效提升反爬虫策略的精确度和有效性。

    “路径”包含“/admin/”

    优先级

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

    5

    完成以上配置后,您还可以执行以下操作:

    • 查看规则状态:在防护规则列表,查看已添加的规则。此时,“规则状态”默认为“已开启”
    • 关闭规则:如果您暂时不想使该规则生效,可在目标规则“操作”列,单击“关闭”
    • 删除或修改规则:您也可以在目标规则“操作”列,单击“删除”“修改”,删除或修改已添加的防护规则。

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

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

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

    图7 开启“脚本工具”

  3. 开启网站反爬虫。

    图8 网站反爬虫配置

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

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

配置示例:搜索引擎

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

  1. 参照6“搜索引擎”设置为放行,即将“搜索引擎”“状态”设置为
  2. 参照配置精准访问防护规则定制化防护策略配置如图10的规则。

    图10 拦截POST请求

相关文档