建设产品网站,网站幻灯通栏代码,wordpress 按钮美化,免费网站建设案例概述#xff1a;本文将用于了解爬虫中localStorage的检测原理以及讲述一个用于检测localStorage的反爬虫案例#xff0c;最后对该参数进行Hook断点定位
目录#xff1a;
一、LocalStorage
二、爬虫中localStorage的案例#xff08;以某盾滑块为例#xff09;
三、如何…概述本文将用于了解爬虫中localStorage的检测原理以及讲述一个用于检测localStorage的反爬虫案例最后对该参数进行Hook断点定位
目录
一、LocalStorage
二、爬虫中localStorage的案例以某盾滑块为例
三、如何破解Hook如何断点定位到localStorage 目标网站-某盾滑块链接aHR0cHM6Ly9kdW4uMTYzLmNvbS90cmlhbC9qaWdzYXc
一、LocalStorage
LocalStorage 是一种 web 端的存储机制主要用于在本地上存储一些用户的信息
从反爬的角度上看在一些网站中他会将一些指纹数据如设备信息版本号鼠标用户行为等等存储在LocalStorage中用于反爬的计算通过分析这些参数是否异常来判断是否为爬虫。 LocalStorage的特性: 1、localStorage可以将请求的数据直接存储到本地这个相当于一个5M大小的前端页面数据库相比于cookie可以节约带宽。 2、目前所有的浏览器中都会把localStorage的值类型限定为string类型要使用JSON对象类型则需要一些转换。 3、localStorage在浏览器的隐私模式下面是不可读取的。 4、localStorage不能被爬虫抓取到。 也是由于最后一个特性在爬虫中会被经常用于指纹的验证
二、爬虫中localStorage的案例以某盾滑块为例
在某盾网站中的 xxxxxxxxNjc50Q:c 便是藏在了 LocalStorage 的参数里面而这个Njc50Q:c是其指纹校验的一个重要生成的参数 三、如何破解Hook如何断点定位到localStorage
下面我们将Hook定位到这个参数的位置
在Hook之前首先要了解这个参数的赋值原理
要在 web 应用中使用 localStorage首先要熟悉它提供的属性和方法 length返回 localStorage 中的键值对的数目 setItem()增加一个键值对到 localStorage 中 getItem()从 localStorage 中查询指定 key 的值 removeItem()从 localStorage 中删除指定的键值对 clear()清空 localStorage 中所有键值对 key() 传入一个数字 n用于返回指定第 n 个键的名字 根据localStorage在赋值时需要使用到.setItem方法这个特性
使用Hook来改写setItem方法定位到 key即arguments[0] 的最后一位数为 :d 的赋值位置
let s Storage.prototype.setItemStorage.prototype.setItem function() {if (arguments[0].endsWith(:d)) {debugger}return s.apply(this, arguments)
}
在浏览器的控制台中实验一下 当出现localStorage.setItem(xxxxxxxxxxx:d,2) 赋值2时会进行断点 由于每次刷新控制台中的Hook都会被刷新掉此时需要借用 油猴 来写一个Hook脚本
油猴网址https://www.tampermonkey.net/
某盾滑块网站aHR0cHM6Ly9kdW4uMTYzLmNvbS90cmlhbC9qaWdzYXc
在油猴上编写脚本保存并启动
注意match 为此脚本针对的目标网站接口这个不能随意改动
// UserScript
// name yidun
// namespace http://tampermonkey.net/
// version 2023-12-27
// description try to take over the world!
// author You
// match https://dun.163.com/trial/*
// icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw
// grant none
// /UserScript(function() {use strict;let s Storage.prototype.setItemStorage.prototype.setItem function() {if (arguments[0].endsWith(:d)) {debugger}return s.apply(this, arguments)}
})(); 保存之后记得点击启动即可接着打开某盾滑块的链接
打开控制台调试一下确认是否能Hook到,还是输入localStorage.setItem(xxxxxxxxxxx:d,2)来测试一下 此时这里能被断住说明是正常先在控制台输入localStorage输出一下 发现是值是已经生成好了我们目标是还原他生成的过程因为我们要先将localStorage清空输入 : localStorage.clear() 在清空之后刷新一下该网站发现已经成功被断住剩下的就是如何扣代码的问题了