618京东到家APP-门详页反爬实战

2023-11-08

一、背景与系统安全需求分析

1. 系统的重要性

上图所示是接口所属位置、对电商平台或在线商店而言,分类查商品都是很重要的,通过为用户提供清晰的商品分类,帮助他们快速找到所需产品,节省浏览时间,提升购物效率,是购物结算产生GMV的核心环节。那么电商平台为什么都很看重商品信息的爬取?

a. 数据收集和分析:这些数据对于市场研究、竞争分析、价格比较等方面非常有价值。可获得有关产品趋势、消费者偏好、价格波动等信息,有助于企业进行决策和制定营销策略。

b. 价格监控和动态调整:可以实时跟踪和监控竞争对手的价格变化。企业可以根据市场情况及时调整自己的产品定价,保持竞争力,并更好地满足消费者需求等。

2. 风险评估

a. 系统安全、以及触发各种报警

b. 数据安全

c. 带宽和服务器资源消耗

d. 不良竞争等;

3. 618期间的爬虫问题

由于这个接口还比较特殊,我们在3个版本前刚迁移color网关,其他低版本使用的是另一个物理网关我们暂且称: B网关,另外在B网关还由于一些历史原因区分了Get 和 Post 两个接口对客户端提供。所以一共是3个接口。

客户端有多平台:h5, 微信小程序、支付宝小程序、android、ios、rn.

a. 爬虫曲线明显从监控上看得出规律,另外性能也随之报警,并且不太确定是登陆爬虫还是不登陆爬虫。

b. 后台服务监控这3个接口过来的流量监控未区分color网关和B网关,还需要确定爬虫来源是从哪儿来

c. 各个平台的客户端都有爬虫,android的性能受影响更大,

d. 另外各端迁移color网关的情况不太一致,有个别端有问题降级为B网关,另外h5和rn不存在版本的问题,一切全切,而ios、android、小程序还存在老版本调老接口的问题。

二、反爬策略选择

1. 可选择的反爬策略

B网关可使用的策略

a. 登录态-未登录拦截

b. 反人类策略-频控用户pin维度频控

c. 安全人员进行行为分析,将pin到加黑名单

color网关可使用的神盾策略

a. 登录态-未登录拦截

b. 神盾防刷能力之一—加固

c. 神盾防刷能力之一—反爬

d. 神盾防刷能力之一—小号

e. 神盾防刷能力之一—风控

2. 如何选择?结合系统现状–在用户体验和反爬虫之间平衡

a. 由于历史没开登陆态,优先选择不开登陆态的

b. 看下版本占比,先处置老版本看看效果也就是老的B平台

c. 如果发现ab执行完效果不太明显,考虑老版本开启登陆态比如开登陆态

d. 如果开完登陆态还不OK,考虑下是爬虫有登陆态在爬,做下频控

e. 如果还不OK,考虑是爬虫爬的高版本,需要在color上发力了

f. 联系成熟的color团队沟通看下爬虫问题,然后他们给出建议和可以做的操作,评估申请执行

g. 最终不行再考虑下登陆态

h. 反爬虫过程中双方是一直在对抗,比如某些策略生效,对方想办法破解,持续加严,持续想办法破

三、实施反爬措施

备注:下面所涉及的监控有几类

a. 服务器后台的监控分客户端:全来源(包含B网关的GET和POST和Color的)监控

b. B网关自己的监控key分客户端:只包含B网关(GET和POST的接口各有单独的)监控

c. Color网关的监控分客户端:只包含Color网关的

1. 找B网关的安全人员分析,识别到一些黑名单,加完之后效果不太明显,建议我们看下版本占比开启登陆态

2. 找埋点分析人员取数拿到数据isColor=1是color网关, 0是B网关;isLogin=1是登陆,0是未登陆

3. 单独看B网关和color网关的监控,发现都有爬虫,跟产品确认后开启老平台的登陆态校验-先用andorid端尝试看效果,某些竞品这类接口其实也开着登陆态拦截。

服务端针对andorid端监控

4. 开启后效果显著,就也开启了B网关接口各端登陆态,发现H5、小程序没啥效果,怀疑是有登陆态的爬虫,安全人员继续分析

服务端针对H5端的监控

5. 怀疑是登陆态的爬虫,安全人员想办法获取风险pin,方案是通过埋点通过行为分析取数,限制以下条件获取到35个pin,通晒后加黑名单

提数策略一

a.接口埋点时间范围:2023.05.30 2:00 - 2023.05.30 4:00

b.platcode = H5

c.单pin 访问 无 经纬度参数

d.单pin 访问 不同门店id 数量大于5个

提数策略二

a.接口埋点时间范围:2023.05.30 2:00 - 2023.05.30 4:00

b.platcode = H5

c.单pin 访问 >100 次

d.单pin 访问 中 不同门店id 数量大于10个

B网关的POST接口的H5端的监控

6. 同时意识到为什么B网关的GET接口还有量?是正常用户,还是全是爬虫?找各端确认接口调用情况。确定各端都没有在调老的GET接口,再严谨一点想确定下到底是哪个平台过来的,找B网关人看了下日志是H5端来的,再次确认H5也不存在版本这个概念,那么就认定都是爬虫,决定直接下掉。

B网关针对GET接口的监控

7. 小程序看着没啥效果,确定了下流量是从Color过来的,此时B网关能做的都做了,转战Color平台,联系神盾

先不考虑开启登陆态,看看神盾能做些什么策略调整,是否有效果。

8. 神盾人员分析验数结果之后:

a. 神盾识别到一些没传uuid的情况,我们客户端各端确定uuid都必传,那么这部分就是刷子, 配置uuid为空就拦截的策略,来逼迫黑产传uuid来让反爬跟uuid相关的模型生效

b. 加固开启加严规则灰度10%,

c. 反爬开启增加识别策略

color网关的安全监控效果

9. 到此这个阶段就相对比较OK了, 但是爬虫那边也在对抗破解改变策略继续爬,安生了几天,直到6月6号凌晨android平台有大量异常流量,再之后就开始慢慢的有规律的异常流量曲线,说明对方已经破解了开始继续爬了。并且android端性能监控比日常tp99翻倍,触发报警,怀疑可能在爬商品数据量大的商家

color网关android端6月6号激增异常流量

服务端android端监控6月7号开始了日常爬虫,说明已破解

反馈之后,补充识别策略,继续加严,另外小号有识别无拦截,是之前申请开启小号没通过,再次沟通开启,开启之后有效果。效果如下:

color网关安全监控的小号监控效果

10. 但android还是有爬虫,性能没恢复,那么考虑开启频控,按单pin10次,无效果,单pin5次无效果,最终在夜里决定尝试开启下color网关的登陆态,效果立竿见影,性能恢复,说明是未登陆的用户来的爬虫,这也是为什么按pin限频效果不明显的原因,挑性能受影响最大的jddjAPP(android和ios)应用开启,由于神盾的操作都是基于接口+应用维度,所以一开全开。

服务端android端监控

11. 但有个问题是客户端各端迁移到color网关的时候都没有去处理兼容color网关的拦截默认返回结果所以各端显示异常,好在color网关可以mock出参,想到按B网关开启登陆态拦截的出参去mock来适配客户端,找B网关要出参json如下:

{
  "type": "1",
  "code": "201",
  "msg": "为了您的账号安全,请重新登录"
}

按上述出参mock后各端可以正常识别,但又发现新的问题是各个端的逻辑处理不一致, 登录态开启ios端用户体验不好,并无法跳转登陆 , 由于在color网关中android和ios是用的同一个应用名,而开启登陆态的维度是应用维度,所以不得不关闭登陆态。

12. 测试和客户端去确认前端各端是否有问题,以及后续对于登陆态的处理。 我们后端则跟前端一起思考下有没有别的方案,经过讨论有一种方案是mock反爬的出参code 605,但客户端接入color的3个版本中最老的那个版本没有接入反爬的sdk, 而网关开启登陆态又没法控制版本。

由于以上问题可行的方案是:ios端未接入反爬sdk的版本 降级调用B网关, 这样color可以开启登陆态。

但没采用这个可行的方案,因为降级为B网关需要层层审批,这个时候也临近大促结束,担心审批流程太慢,或者有别的未知问题,所以没采用。

13. 继续咨询color平台的神盾侧方案,给出的方案是反爬、加固、小号都继续上加严,观察有无客诉。加严到差不多的影响的情况下暂时告一段落。

14. 服务端兜底的反爬措施,我们具备的针对各端单独设置限流阀值的能力,解决单端有问题不影响其他端,将影响降至最低。以及快速扩容的能力。

四、color网关反爬效果

总体来说color的神盾相关的反爬还是很强大的,效果显著,在攻防之间一直有策略可以应对,点个赞,在此感谢相关人员,以及一起应对反爬的小伙伴们。

五、总结

在这次反爬经历中也有很多需要反思总结和提高的地方,下面列了几点给大家参考,希望本篇文章对大家有所帮助。

1.要尽量防患于未然,核心系统接口提前做好反爬的一些基础工作,避免被临时杀个措手不及。

2.涉及多网关的时候,要梳理爬虫的来源及特征,借助各物理网关的反爬能力,针对性的处理。

3.登录态开启需要提前测试确定影响,各端是否支持,用户体验是否受损,其它反爬措施同理。

4.微信小程序不能开启强登陆,会被认为违规进行处罚。

5.之前对于color的反爬能力知之甚少,低估了反爬能力以为开启了还有爬虫就没办法了,但事实上color还有很多策略是没有对外暴露的。

6.也不能认为爬虫就一定要反爬干净,因为规则越严格,越有可能误杀,需要再用户体验和反爬之间取个平衡,在保证用户体验的基础上尽量提高爬虫成本,减少爬虫对系统的影响。

7. 后端需要具备的能力针对各端单独设置限流阀值。解决单端有问题不影响其他端,将影响降至最低。

作者:京东零售 连迎迎
来源:京东云开发者社区 转载请注明来源

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

618京东到家APP-门详页反爬实战 的相关文章

  • Airtest图像识别测试工具原理解读&最佳实践

    1 Airtest简介 Airtest是一个跨平台的 基于图像识别的UI自动化测试框架 适用于游戏和App 支持平台有Windows Android和iOS Airtest框架基于一种图形脚本语言Sikuli 引用该框架后 不再需要一行行的
  • 大数据实时链路备战 —— 数据双流高保真压测

    一 大数据双流建设 1 1 数据双流 大数据时代 越来越多的业务依赖实时数据用于决策 比如促销调整 点击率预估 广告分佣等 为了保障业务的顺利开展 也为了保证整体大数据链路的高可用性 越来越多的0级系统建设双流 以保证日常及大促期间数据流的
  • 技术赋能-混流编排功能,助力京东618直播重保

    每每到618 双11这样的大型活动的时候 每天都有几个重要的大v或者品牌直播需要保障 以往的重点场次监播方式是这么造的 对每路直播的源流 各档转码流分别起一个ffplay播放窗口 再手动调整尺寸在显示器桌面进行布局 排到一屏里来监播 这样做
  • 文盘Rust -- 给程序加个日志

    日志是应用程序的重要组成部分 无论是服务端程序还是客户端程序都需要日志做为错误输出或者业务记录 在这篇文章中 我们结合log4rs聊聊rust 程序中如何使用日志 log4rs类似java生态中的log4j 使用方式也很相似 log4rs中
  • 【实践篇】DDD脚手架及编码规范

    一 背景介绍 我们团队一直在持续推进业务系统的体系化治理工作 在这个过程中我们沉淀了自己的DDD脚手架项目 脚手架项目是体系化治理过程中比较重要的一环 它的作用有两点 1 可以对新建的项目进行统一的规范 2 对于指导老项目进行DDD的改造提
  • 一种通用的业务监控触发方案设计

    一 背景 业务监控是指通过技术手段监控业务代码执行的最终结果或者状态是否符合预期 实现业务监控主要分成两步 一 在业务系统中选择节点发送消息触发业务监控 二 系统在接收到mq消息或者定时任务调度时 根据消息中或者任务中的业务数据查询业务执行
  • 【OpenAI】私有框架代码生成实践

    作者 京东零售 牛晓光 根据现有调研和实践 由OpenAI提供的ChatGPT GPT 4模型和CodeX模型能够很好的理解和生成业界大多数编程语言的逻辑和代码 其中尤其擅长Python JavaScript TypeScript Ruby
  • Git 代码分支管理

    作者 京东科技 周新智 一 引言 近日 IoT 研发团队加入了不少新同学 对 git 分支的命名和管理方式有些许的模糊 分支的命名规范以及管理方式对项目的版本发布至关重要 为了解决实际开发过程中版本发布时代码管理混乱 冲突等比较头疼的问题
  • 对话力码科技:保险科技应用有待深入,价值落地更重要

    保险行业的数字化时机已来 更加专业化的企业才能立于不败之地 数科星球原创 作者丨苑晶 编辑丨大兔 对于国内的大多数企业来说 2023年是个极为重要的年份 在软件行业 随着人工智能等新技术的日益成熟和普及 软件行业迎来黄金时代 在这种趋势下
  • 文盘Rust -- tonic-Rust grpc初体验

    gRPC 是开发中常用的开源高性能远程过程调用 RPC 框架 tonic 是基于 HTTP 2 的 gRPC 实现 专注于高性能 互操作性和灵活性 该库的创建是为了对 async await 提供一流的支持 并充当用 Rust 编写的生产系
  • 618京东到家APP-门详页反爬实战

    一 背景与系统安全需求分析 1 系统的重要性 上图所示是接口所属位置 对电商平台或在线商店而言 分类查商品都是很重要的 通过为用户提供清晰的商品分类 帮助他们快速找到所需产品 节省浏览时间 提升购物效率 是购物结算产生GMV的核心环节 那么
  • 京东云高可用业务架构建设

    本文以 2022 年一个实际项目为基础 来演示在京东云上构建高可用业务的整个过程 公有云及私有云客户可通过使用京东云的弹性 IAAS PAAS 服务 创建高可用 高弹性 高可扩展 高安全的云上业务环境 提升业务 SLA 提升运维自动化水平
  • Velocity不用愁!Velocity系统的前端工程化之路

    Velocity是一个基于Java的Web页面模版引擎 十多年前 Velocity将Java代码从Web页面中分离出来 使得开发者能够并行网页开发和Java开发 随着十年前后端分离的浪潮涌动 回首再面对这些基于Velocity的旧系统 无论
  • 源码解析Collections.sort ——从一个逃过单测的 bug 说起

    本文从一个小明写的bug 开始 讲bug的发现 排查定位 并由此展开对涉及的算法进行图解分析和源码分析 事情挺曲折的 因为小明的代码是有单测的 让小明更加笃定自己写的没问题 所以在排查的时候 也经历了前世的500年 去排查排序后的list改
  • 百亿补贴通用H5导航栏方案

    背景 在移动端页面中 由于屏幕空间有限 导航条扮演着非常重要的角色 提供了快速导航到不同页面或功能的方式 用户也通常会在导航条中寻找他们感兴趣的内容 因此导航条的曝光率较高 在这样的背景下 提供一个动态灵活的导航条 为产品赋能 变得尤其重要
  • 楠姐技术漫话:接着唠唠社区发现

    halo 大家好很开心又和大家见面了 在第一篇 楠姐技术漫画 图计算的那些事 发布之后 楠姐收到了很多建议 鼓励和支持 非常感谢大家的喜欢 所以楠姐尽自己所能马不停蹄开始第二篇的创作 虽迟但到 本篇依然是风控算法分享 其实也依然算是图算法系
  • 文盘Rust -- FFI 浅尝

    rust FFI 是rust与其他语言互调的桥梁 通过FFI rust 可以有效继承 C 语言的历史资产 本期通过几个例子来聊聊rust与C 语言交互的具体步骤 场景一 调用C代码 创建工程 cargo new bin ffi sample
  • 最佳实践:基于vite3的monorepo前端工程搭建

    一 技术栈选择 1 代码库管理方式 Monorepo 将多个项目存放在同一个代码库中 选择理由1 多个应用 可以按业务线产品粒度划分 在同一个repo管理 便于统一管理代码规范 共享工作流 选择理由2 解决跨项目 应用之间物理层面的代码复用
  • 从0到1搭建自己的脚手架(java后端)

    一 脚手架是什么 脚手架是一种基础设施工具 用于快速生成项目的框架代码和文件结构 它是一种标准化的开发工具 使开发人员能够在项目的早期阶段快速搭建出一个具备基本功能和结构的系统 二 脚手架的意义 主流的微服务架构体系下很多公司会将原有的单体
  • 【实践篇】领域驱动设计:DDD工程参考架构

    背景 为什么要制定参考工程架构 不同团队落地DDD所采取的应用架构风格可能不同 并没有统一的 标准的DDD工程架构 有些团队可能遵循经典的DDD四层架构 或改进的DDD四层架构 有些团队可能综合考虑分层架构 整洁架构 六边形架构等多种架构风

随机推荐

  • 基于CCG算法的IEEE33配电网两阶段鲁棒优化调度matlab

    目录 1 前言 2基本内容 2 1 配网两阶段鲁棒模型 2 2 求解步骤 3部分程序 4程序结果 5程序链接 1 前言 鲁棒优化是电力系统研究的热点 而两阶段鲁棒和分布鲁棒研究就成为各类期刊 sci ei 核心 的宠儿 最简单的思路是通过改
  • unity3D塔防游戏-虚拟现实大作业-包含源程序、导出exe文件,游戏设计报告

    unity3d塔防游戏 下载链接在文末 点我下载资源 https download csdn net download weixin 43474701 35073702
  • franchisor and franchisee

    What is the difference between a franchisor and a franchisee The franchisor is the person or corporation that owns the t
  • SpringCloud(四)注册中心之Eureka

    SpringCloud 四 注册中心之Eureka 第一代 Spring Cloud 核心组件 从形式上来说 Feign一个顶三 Feign RestTemplate Ribbon Hystrix 常用的服务注册中心 Eureka Naco
  • 【ahk】映射按键到执行函数

    global zFuncCallPattern w IsFuncCallStr callFuncStr Return RegExMatch callFuncStr O zFuncCallPattern matchObj EvalStrArg
  • STM32 基础系列教程 33 - Lwip_tcp_client

    前言 学习stm32 以太网接口使用 及LWIP使用 用LWIP快速实现一个TCP client网络通信功能 学会基本LWIP的网络数据接收与发送功能 让初学者了解lwip 关于Lwip更多的功能介绍将会在后期的STM32 中级教程中介绍
  • 前端开发利器VSCODE推荐

    VSCODE 一个运行于 Mac OS X Windows和 Linux 之上的 针对于编写现代 Web 和云应用的跨平台源代码编辑器 注意 VSCODE适用于前端开发 仅仅是一个编辑器 并不是类似于Visual Studio 2015一样
  • 情人节送玫瑰花Java实现

    RoseException java package cn campsg java experiment exception public class RoseException extends Exception public RoseE
  • Spring面试题

    推荐博客 https blog csdn net a745233700 article details 80959716 1 Spring是什么 Spring是一个轻量级的IoC和AOP容器框架 是为Java应用程序提供基础性服务的一套框架
  • 在电子行业已经做了6年了

    从12年5月份到现在 已经快8年了 感觉时间过得好快 在从学校毕业后电子行业也做了6年了 从来没有想过要换行业 因为我也是在是很喜欢电子这一行 喜欢电路图 喜欢PCB 每到看到PCB总有一种亲切感 只可惜自己学艺不精 目前还是没有开窍 但还
  • ceph安装记录总结

    1 环境准备 准备三台虚机 每个虚机配合三块数据盘 2块网卡 一个网卡设置外网 一个网卡设置成内网 配置文件设置 根据实际情况配置每一个节点 编辑 letc sysconfig network scripts ifcfg ethO 文件 外
  • socket.io设置websocket优先使用

    查看https github com socketio engine io client blob master lib socket js L91 this transports opts transports polling webso
  • 国内领先的十大API接口排行

    应用程序编程接口API即 Application Programming Interface 现在众多企业的应用系统中常用的开放接口 对接相应的系统 软件功能 简化专业化的程序开发 一 百度API 百度API超市开通1136个数据服务接口
  • 浮点数的近似保存与计算

    这里写目录标题 负数的补码存储 十进制浮点数与二进制的转换 有限循环的二进制 无限循环的二进制 计算机对浮点数的保存 无限循环二进制数的保存 浮点数的近似 参考文献 负数的补码存储 首先我们回忆一下负数的补码表示 我们都知道 有符号数的负数
  • 三年前,故事这样开始;三年后,故事这样延续---2015年终总结

    含苞待放的蕊 开出尘埃落定的美 人生的路途 自从小编学了计算机之后 喜欢这样来描述 人生就好像是一个开发软件的一个流程 从需求分析到运行维护 需求一次又一次的变更 人生的经历一次又一次在过程中丰富 人生的路又像季节的更迭 有微风也有细雨 花
  • 非递归方式实现二叉树的前、中、后序遍历

    各位朋友们 大家五一快乐 今天我为大家分享的是不用递归的方式实现二叉树的前 中 后序遍历 一起来看看吧 文章目录 二叉树的前序遍历 二叉树的中序遍历 二叉树的后序遍历 二叉树的前序遍历 虽然我们说的是不用递归的方式实现 但是我们的思路还是模
  • Qt基础之三十五:Qt中文乱码探索

    先说个小技巧 Qt Creator支持显示源文件编码格式 右上角点UTF 8 会弹出 文件编码 对话框 我的开发环境是Win10 Qt5 12 6 VS2017 IDE是Qt Creator Qt中乱码为何总显示为问号呢 要彻底理解乱码问题
  • how to debug webkit

    1 编译带debug 信息的webkit 库 删除qt everywhere opensource src 4 7 0 src 3rdparty webkit WebCore WebCore pro 中的红色两行代码 还有JavaScrip
  • JVM常见命令之jmap

    一 jmap是一个很重要的命令 可以查看JVM内存使用情况 1 jmap help 帮助文档 参数解释 option 选项参数 pid 需要打印配置信息的进程ID executable 产生核心dump的Java可执行文件 core 需要打
  • 618京东到家APP-门详页反爬实战

    一 背景与系统安全需求分析 1 系统的重要性 上图所示是接口所属位置 对电商平台或在线商店而言 分类查商品都是很重要的 通过为用户提供清晰的商品分类 帮助他们快速找到所需产品 节省浏览时间 提升购物效率 是购物结算产生GMV的核心环节 那么