高阶防御爬虫策略分析

高阶防御爬虫策略分析

PluginsKers
2021-01-11 / 0 评论 / 237 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年04月27日,已超过53天没有更新,若内容或图片失效,请留言反馈。

0x01爬虫

防爬虫,就是在尽量减少对正常用户的干扰的情况下尽可能的加大爬虫的成本。
为何是尽可能加大爬虫成本?

举个例子:
在网络安全下,只有相对安全,一个服务器(组织)不论如何严防死守,在技术更新迭代快速的环境下,漏洞总是无穷无尽,攻击更是防不胜防。

在互联网与用户数据交互的过程中,有了一个新的成员,爬虫。
除非产品不是面向用户,否则,就无法阻挡爬虫(无限接近真实用户行为的程序)。Emmm本质很是相似。 表情

所以,防爬与爬取之间的战斗,比较的是技术门槛!

0x02防御爬虫

一些不再实用的操作,这里就不多赘述了,网上有很多。

0x001特征

一些关于User-Agent的检测逻辑判断在1202年可能已经不太实用。当然,这里不包含一些浏览器特性(特征) 表情 这个就让爬虫很难受了。
比如:

var dstr = "";

if (navigator.__driver_evaluate) {
    dstr += "1"
} else {
    dstr += "0"
}

if (navigator.__webdriver_evaluate) {
    dstr += "1"
} else {
    dstr += "0"
}

if (navigator.__selenium_evaluate) {
    dstr += "1"
} else {
    dstr += "0"
}

if (navigator.__fxdriver_evaluate) {
    dstr += "1"
} else {
    dstr += "0"
}

if (navigator.__driver_unwrapped) {
    dstr += "1"
} else {
    dstr += "0"
}

if (navigator.__webdriver_unwrapped) {
    dstr += "1"
} else {
    dstr += "0"
}

if (navigator.__selenium_unwrapped) {
    dstr += "1"
} else {
    dstr += "0"
}

if (navigator.__fxdriver_unwrapped) {
    dstr += "1"
} else {
    dstr += "0"
}

if (navigator.__webdriver_script_func) {
    dstr += "1"
} else {
    dstr += "0"
}

if (navigator.__webdriver_script_fn) {
    dstr += "1"
} else {
    dstr += "0"
}

if (navigator.webdriver) {
    dstr += "1"
} else {
    dstr += "0"
}

另外,如果使用的是Token即时验证,还可以加上鼠标点击事件进行异步二次验证。

// 判断是否在frame框架内
if (window.self != window.top) {
    return false;
} else {
    return true;
}

为什么要强调特征? 表情
谁用谁知道,真香。

0x002偷梁换柱

这里可以说是一些骚操作了,首先我们知道:

  1. 在爬取的过程中,是对原始的数据进行抓取分析。
  2. 爬虫没有眼睛。 表情
  3. 程序的等待和人类的等待是有本质区别的(确信)

那么,如何使自己的程序,不满足以上条件?

  1. 原始数据 不等于 最后数据
  2. 原始数据 不等于 最后数据(进阶)只有有屏幕才可以看到 表情
  3. 伪造等待?

表情 终于要开始了吗?

我们知道,每一个字符都有一个二进制的Unicode,如果我们将字符的Unicode替换新建,但是字,还是那样。

图-1

由此我们知道“我”的Unicode为 6211 u6211

让字在页面中显示依旧,但是改变其Unicode需要借助字体。
如何更好地理解这个概念?就好像图标一样。

图-2

或者这么想,将“我”与“你”的Unicode调换,那么,用户看到的是“我爱你”。
而爬虫爬取的源字符串是“你爱我”,从而使其进行错误的下一步。
通过博主调查折腾得知,要完成这样的操作,通过现有的JS接口和继承关系无法做到
只能使用“字体文件”来进行修改。
这里有 百度字体编辑

0x003暗渡陈仓

我们知道:

  1. CSS有伪元素,它有一个必要的“content”的属性
  2. 爬虫对于Style的有着不敏感的接口(这里基本上可以理解为,很难去抓取标签的Style,更何况是伪元素的)

那么:

使用伪元素(真)来遮盖源(假)数据使用户看到的是真数据
就能够达到防爬虫的目的

图-3
图-4

66

评论 (0)

取消