知识笔记 - 爬虫必须了解的风控基础知识

一、什么是风控

风控全称是风险控制,是一种用于检测、评估和防止不规范行为的技术。

它通过多种技术手段和数据分析,识别潜在的风险和异常行为,特别是针对不规范的爬虫行为。

爬虫通过模拟人类用户的行为来访问网站并获取数据,不规范的爬虫行为可能会对网站造成危害,例如爬取大量数据导致服务器宕机,或者窃取敏感信息等。风控技术可以帮助互联网厂家来检测和限制这些不良行为。

二、常见风控后果

风控技术广泛应用于各类厂商的网站和应用中。它通过获取用户特征和行为信息,在后端进行分析判定用户的风险等级,并根据不同的风险等级,做出相应的反应。

风险等级通常分为三种:无风险、中低风险和高风险。

  1. 无风险的用户,他们可以正常访问和使用数据。
  2. 中低风险的用户,系统可能会进行一些简单的验证或限制。例如要求用户完成点选、滑动、旋转、逻辑等验证码,或者引导用户登录,甚至返回蜜罐数据(假数据)。
  3. 高风险的用户,系统会实施更严格的验证和限制措施。例如要求用户进行短信验证或语音验证,严重的话会导致IP封禁、设备封禁、账号封禁。

三、常见风控检测手段

1. 终端检测

终端检测指在APP中或代码逻辑中,直接进行检测和判断风险。

1.1 APK签名

APK签名检测是一种常见的安全措施,用于验证应用程序的完整性和来源。

检测对比签名证书哈希值与预期的签名证书哈希值是否一致,以验证APK的签名是否正确。当检测出来签名不正确时,可以被认定为重打包,直接标记高风险,限制APP的功能或强杀APP。

1.2 模拟器

模拟器检测,通常包括检查设备操作系统属性(系统指纹和制造商信息)、内核版本信息(模拟器的内核版本信息可能包含“generic”或“x86”等标识)、文件系统特征(例如“/dev/socket/qemud”和“/system/bin/qemu-props”等文件)、传感器信息等。

1.3 设备环境

1.3.1 ROOT环境

检测设备上是否存在特定的ROOT相关文件和目录,如/system/xbin/su/system/bin/su等;或者通过端口、包名、maps等方式检测是否安装了Magisk、LSPosed等应用。

1.3.2 HOOK框架

Frida

检查frida包名类名、frida-server进程、maps检测(frida-agent.so的内存信息)、路径检测、端口检测(27043)等。

Xposed

检查Xposed的包名类名、maps检测(XPosed字符串)等,亦或者是构造异常报错,读取异常堆栈中是否包含Xposed字符串等等。

2. 后台检测

后台检测指通过在APP上收集用户行为信息,通过网络发送到后端,进行分析和判断风险。

2.1 lP

IP 检测通常包括:

  1. IP代理检测

    识别用户是否使用了代理服务器进行访问,防止恶意用户隐藏真实IP地址进行攻击。

  2. IP行为分析

    通过对IP地址的历史访问行为进行分析,识别异常行为模式,如频繁请求、异常访问路径等,以便及时发现和阻止恶意攻击。

  3. IP地理位置识别

    通过IP地址的地理位置信息,对用户的访问进行识别和验证,判断是否存在异常或风险,比如说北京的用户ip不太可能每天都访问许多上海的POI。

系统根据历史数据和风险评估模型,将高风险的IP地址列入黑名单,限制其访问或进行其他安全措施。

2.2 用户行为

大厂会在app中对用户的行为进行埋点上报,收集统计不同纬度的行为信息,比如说点击频率和点击间隔规律性、操作路径合理性等。

当用户在页面某个位置进行点击时,这些点击操作会被实时上报到后台,后台能够清晰地监控当前用户的行为信息。后台将用户的操作模式、指纹信息、地理位置、登录行为等数据进行综合分析,通过AI算法去识别判断异常行为。

2.3 心跳包

心跳包通常以TCP长连接的方式覆盖App整个生命周期,固定时间间隔从客户端发送到服务器,用于维持连接状态和检测连接的有效性。

如果攻击者通过RPC或算法还原协议请求方式调用接口,可能会导致心跳包遗漏。当出现心跳包缺失、频率异常、包内容篡改时,可能就会触发验证码、ip封禁、重新登录等手段。

2.4 指纹信息

2.4.1 请求指纹

每个请求都有其独特的特征和属性,例如请求参数中的USERAGENT、USERID、DEVICESID等参数。
一些非登的接口往往会通过这些请求指纹,检测请求频率、总数等维度,来判断请求的合法性和风险程度。

2.4.2 设备指纹

每个设备都有其独特的硬件和软件配置,这些特征可以用于识别和区分不同设备。

  1. 设备属性识别
    检测操作系统版本、浏览器类型、屏幕分辨率、设备型号等,来判断设备的类型和性能。
  2. 设备行为分析
    检测设备的使用聚集性、操作方式、网络环境等,来判断设备的合法性和风险程度。
  3. 设备历史记录
    检测设备的历史访问记录,包括登录历史、操作记录等,来判断设备的信任度和风险情况。
  4. 设备关联分析
    检测设备之间的关联关系,如多个设备使用同一个账号、多个设备在同一时间段内进行操作等,来判断设备的真实性和风险程度。

目前市面上各大厂商对设备指纹检测都不尽相同,且常会检测一些更为隐秘的字段。

四、总结

总的来看,风控技术大体分两部分,直接在客户端上检测分析风险,又或者是将用户行为信息发送到后端分析风险,进而决定是否正常响应。
在一些大厂的风控系统中,一般不会单凭某一种异常行为进行反应,而是通过对多种手段分权重检测,综合应用到风险评估中,并且通常还借助AI技术不断提升检测的精准度和效率。特别是在用户行为分析和设备指纹识别方面,AI的应用使得风控系统具备自动化和精细化的能力。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
验证码是为了保证用户是真实有效的,并且可以防止恶意攻击等不良行为而设计的一种验证手段。在Java中,我们可以使用一些常用的验证码生成算法来实现验证码的生成。 一种常见的验证码生成算法是使用随机数结合字体、颜色和线条等图形效果生成验证码图片。首先,我们可以创建一个指定长度的随机字符串,该字符串由数字和字母等组成。然后,我们使用Java的Graphics2D类创建一个空白的验证码图片,并设置好图片的尺寸和背景颜色。接下来,我们可以选择一个字体和颜色,并将随机字符串按照指定的字体和颜色画在图片上。同时,我们还可以在图片上添加一些干扰线条,以增加验证码的复杂度和可读性。最后,我们将生成的验证码图片返回或输出到前端供用户验证。 另一种常用的验证码生成算法是使用数学运算来生成验证码。例如,我们可以生成一个简单的数学算式,如两个数字的加法或乘法,并将结果作为验证码。用户需要计算该算式的结果,并在表单中填写正确的答案才能通过验证。 除了以上提到的常用算法,还有很多其他的验证码生成算法,如基于滑块验证、拼图验证、语音验证码等等。根据实际需求,我们可以选择合适的算法来生成验证码。 综上所述,Java中的验证码生成算法可以通过随机数和图形效果或数学运算的方式来生成验证码,以提高系统的安全性和用户验证的可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追风暴的人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值