当前位置: 首页 > news >正文

Hook+jsdom 解决cookie逆向

前言

记录下如何破cookie逆向

目标

目标网址:https://q.10jqka.com.cn/
目标接口:http://q.10jqka.com.cn/index/index/board/all/field/zdf/order/desc/page/2/ajax/1/
对抗:cookie反爬虫处理,关键字v,如图
在这里插入图片描述

解决步骤

1、JS中关键字查找

如上,我们找到了关键字 v,那么接下来就用hook搜查
点击F12,打开 开发者工具,选择Console直接输入hook代码

(function () {Object.defineProperty(document, 'cookie', {set: function (val) {if (val.indexOf('v') != -1) {debugger;}console.log('Hook捕获到cookie设置->', val);return val;}});
})();# val.indexOf('v') 中输入你要的关键字,回车
# 注意需要等待一会,因为程序加载需要时间
# 回车后,程序执行到v处自动断点,并打印,可一步步向下看js推理

运行后如图,n产出刚好是v的数值
在这里插入图片描述

接着点击右上角的箭头,会一步步执行接下来的js
连续点一遍下来发现n值最后由 function D() 产出
在这里插入图片描述
全局搜索 function D(),最后输出在这,后面可以创建个空值去接收
在这里插入图片描述

2. JS调试技巧

从这里可以发现就是整个的文件只有千多行代码,可以采用全复制方式处理cookie

2.1、扣出所有代码,放入自建js文件中,我这例如: cookie.js

2.2、利用execjs执行

import execjswith open('qq.js', encoding='utf-8') as f:x = f.read()v = execjs.compile(x).call('get_cookie')
print(v)

这时会报错一堆错,而且还要挨个补环境,例如下:

execjs._exceptions.ProgramError: ReferenceError: document is not defined
execjs._exceptions.ProgramError: ReferenceError: window is not defined
execjs._exceptions.ProgramError: ReferenceError: navigator is not defined

这时可以使用 jsdom 这个技术,在 js 文件最上方加入运行js所缺补的环境,例如下(所有通用)

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`);window = dom.window
document = window.document
navigator = window.navigator

官方文档:https://github.com/jsdom/jsdom/wiki/jsdom

然后python代码需要调用其中的函数,获取到产出的v值

1、在 js上面创建 ==》 var _v = {};
2、在 function D() 后面加入.xialuo 接收 ==》 _v.xialuo = D, 如图
在这里插入图片描述
3、末尾创建个函数好被python调用

function getCookie() {return _v.xialuo()
}

最后,cookie.js 代码如下:

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`);
window=dom.window;
document=window.document;
navigator=window.navigator;var _v = {}var TOKEN_SERVER_TIME = 1656072000.984;
!function(n, t) {!function() {var r, e, a;r = e = a = n;var u, c, s;u = c = s = t;function v() {var n = arguments[s[0]];if (!n)return r[0];for (var t = u[1], o = a[1], i = c[2]; i < n.length; i++) {var v = n.charCodeAt(i), f = v ^ o;o = v,t += e[2].fromCharCode(f)}return t}var f = c[3], l = s[4], p = Wn(e[3], r[4], s[5]), d = a[5], h = Wn(c[6], s[7]), g = c[8], w = c[9], m = r[6], I = u[10], y = a[7], _ = (s[11],c[12],s[13]), C = e[8], E = u[14], A = ot(e[9], e[10]), b = a[11], T = u[15], B = c[16], R = r[12], k = r[13], S = s[17], P = u[18], M = Wn(s[19], s[20], u[21]), O = v(s[22], e[14]), D = s[23], x = s[24], N = u[25], L = u[26], W = Wn(s[27], r[15]), F = u[28], Y = r[16], j = a[17], H = e[18], $ = e[19], U = r[20], V = v(c[29], e[21], e[22]), X = s[30], G = s[31], K = s[32], Q = s[33], Z = r[23], q = r[24], z = v(u[12], u[34], s[35]), J = u[36], nn = a[25], tn = s[37], rn = c[38], en = r[26], an = c[39], on = s[40], un = a[27], cn = u[41], sn = ot(s[42], c[43]), vn = r[28], fn = u[8], ln = s[44], pn = a[29], dn = s[45], hn = a[30], gn = c[46], wn = a[31], mn = a[32], In = s[47], yn = r[33], _n = a[34], Cn = c[48], En = a[8], An = v(a[35], s[49]), bn = c[50], Tn = c[51], Bn = at(r[36], s[52]), Rn = ot(r[37], e[38]), kn = e[39], Sn = u[53], Pn = r[40], Mn = s[54], On = s[55], Dn = Wn(u[56], r[41], r[42]), xn = r[43], Nn = u[57], Ln = e[44];function Wn() {return arguments[u[0]].split(e[0]).reverse().join(c[1])}var Fn = r[45], Yn = Wn(c[58], e[46]), jn = v(s[59], u[60]), Hn = Wn(r[47], s[61]), $n = s[62], Un = s[63], Vn = u[2], Xn = [new u[27](r[48]), new u[27](c[64])], Gn = [new e[47](ot(a[49])), new u[27](ot(a[50], u[65]))], Kn = c[66][f + l] || r[51].getElementsByTagName(p + d)[r[52]], Qn;!function(n) {n[e[53]] = s[67];function t(n) {var t = r[51][u[68]], o = u[69] + n + s[70], i = t.indexOf(o);if (i == -e[54]) {if (o = n + c[70],t.substr(r[52], o.length) != o)return;i = a[52]}var f = i + o[v(u[71], s[72])], l = t.indexOf(r[55], f);return l == -a[54] && (l = t[a[56]]),t.substring(f, l)}n[a[57]] = f;function o(n, t, a, o, i) {var c = n + r[58] + t;o && (c += e[59] + o),i && (c += v(Jn, u[73], s[74]) + i),a && (c += u[75] + a),u[66][u[68]] = c}n[s[76]] = t;function i(n, t, r) {this.setCookie(n, u[1], u[77], t, r)}n[s[78]] = o;function f() {var t = a[60];this.setCookie(t, u[67]),this.getCookie(t) || (n[r[53]] = e[61]),this.delCookie(t)}n[Wn(N, r[62], c[79])] = i}(Qn || (Qn = {}));var Zn;!function(n) {var t = u[80], o = v(nn, s[81], u[82]), i = s[67], f, l = u[83][Wn(u[84], e[63])], p, d;function g(n) {var t = j;return t = dn,i ? y(n) : f ? w(n) : void u[2]}function w(n) {E(function() {return n = R(n),f.getAttribute(n)})()}function m() {try {return !!(o in s[83] && s[83][o])} catch (n) {return void u[2]}}function I(n) {try {f.removeItem(n)} catch (t) {}}n[c[85]] = C;function y(n) {try {return f.getItem(n)} catch (t) {return u[86]}}n[c[87]] = B;function _(n, t) {try {f.setItem(n, t)} catch (r) {}}function C() {var n = e[64], r = u[88];if (i = m(),i)f = a[65][o];else if (l[at(e[66])][at(e[67], a[68])])try {p = new ActiveXObject(Wn(a[69], s[89], l)),p.open(),p.write(s[90]),p.close(),d = p.w[e[70]][s[2]][e[71]],f = d.createElement(n + t + r)} catch (c) {f = l.createElement(o),d = l[Wn(u[91], a[72])] || l.getElementsByTagName(s[92])[s[2]] || l[a[73]]}}function E(n) {return function() {d.appendChild(f),f.addBehavior(s[93]),f.load(o);var t = n();return d.removeChild(f),t}}n[c[94]] = g;function A(n) {var t, r, e;if (t = r = e = a,i)I(n);else {if (!f)return void e[52];b(n)}}function b(n) {E(function() {n = R(n),f.removeAttribute(n),f.save(o)})()}function T(n, t) {E(function() {n = R(n),f.setAttribute(n, t),f.save(o)})()}n[a[74]] = A;function B(n, t) {if (void 0 === t)return A(n);if (i)_(n, t);else {if (!f)return void u[2];T(n, t)}}function R(n) {var t = s[95], e = r[75], a = new r[47](t + h + e,c[96]);return n.replace(new c[27](u[97]), v(s[98], s[99], s[100])).replace(a, c[101])}}(Zn || (Zn = {}));var qn = function() {var n, t, r;n = t = r = a;var e, o, i;e = o = i = s;var u = o[15], c = o[102], f = e[103];function l(r) {var a = o[102], i = e[103];this[n[76]] = r;for (var u = t[52], c = r[a + g + i]; u < c; u++)this[u] = t[52]}return l[e[104]][w + m + I + u] = function() {for (var a = e[105], u = this[a + y], c = [], s = -e[0], v = o[2], f = u[r[56]]; v < f; v++)for (var l = this[v], p = u[v], d = s += p; c[d] = l & parseInt(t[77], n[78

相关文章:

Hook+jsdom 解决cookie逆向

前言 记录下如何破cookie逆向 目标 目标网址:https://q.10jqka.com.cn/ 目标接口:http://q.10jqka.com.cn/index/index/board/all/field/zdf/order/desc/page/2/ajax/1/ 对抗:cookie反爬虫处理,关键字v,如图 解决步骤 1、JS中关键字查找 如上,我们找到了关键字 v,…...

【封装UI组件库系列】封装Icon图标组件

封装UI组件库系列第三篇封装Icon图标组件 &#x1f31f;前言 &#x1f31f;封装Icon 1.创建Icon组件 2.引用svg图标库 第一步 第二步 第三步 3.二次封装 4.封装自定义属性 &#x1f31f;总结 &#x1f31f;前言 在前端开发中&#xff0c;大家可能已经用过各种各样的UI组…...

STM32:基本定时器原理和定时程序

一、初识定时器TIM 定时器就是计数器&#xff0c;定时器的作用就是设置一个时间&#xff0c;然后时间到后就会通过中断等方式通知STM32执行某些程序。定时器除了可以实现普通的定时功能&#xff0c;还可以实现捕获脉冲宽度&#xff0c;计算PWM占空比&#xff0c;输出PWM波形&am…...

EntityFramework 批量删除操作

刚刚开始使用Entityframwork 来操作数据库。遇到了批量删除数据。 EF内部用的方法是&#xff1a;dbcontext.Datas.RemoveRange(list); 这总方法&#xff0c;少量数据是可行的。 但遇到大数据量的时候&#xff0c;这个方法完全不能用。 所以找了另一种方法&#xff1a; stri…...

springboot使用的设计模式

设计模式是在软件设计中常用的一些通用解决方案。在开发商城编码时&#xff0c;以下设计模式可能会有用&#xff1a; 工厂模式&#xff08;Factory Pattern&#xff09;&#xff1a; 用于创建对象的模式。在商城中&#xff0c;可能会涉及到创建不同类型的商品、订单等对象&…...

IP地址定位技术发展与未来趋势

随着互联网的快速发展&#xff0c;人们对网络的需求和依赖程度越来越高。在海量的网络数据传输中&#xff0c;IP地址定位技术作为网络安全与信息追踪的重要手段&#xff0c;其精准度一直备受关注。近年来&#xff0c;随着技术的不断进步&#xff0c;IP地址定位的精准度得到了显…...

AI与交通运输

人工智能&#xff08;AI&#xff09;正在改变几乎所有行业&#xff0c;交通运输也不例外。 虽然与某些行业相比&#xff0c;我们运输货物和乘客的方式在过去 50 年里变化相对较小&#xff0c;但人工智能有望引发一场运输革命—如果你正在寻找人工智能的机会&#xff0c;不要错过…...

window.requestAnimationFrame+localStorage+canvas实现跨窗口小球连线效果

文章目录 前言效果代码后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;前端系列文章 &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&#xff0c;感谢大家…...

使用AndResGuard报错:copy res file not in resources.arsc file:Ezi.xml

Android使用AndResGuard进行资源混淆&#xff0c;压缩。 源码地址&#xff1a;GitHub - shwenzhang/AndResGuard: proguard resource for Android by wechat team 集成完成后编译过程中出现如下错误&#xff1a; 14:57:05 copy res file not in resources.arsc file:IUk.xml…...

插入排序(形象类比)

最近在看riscv手册的时候&#xff0c;里面有一段代码是插入排序&#xff0c;但是单看代码的时候有点迷&#xff0c;没看懂咋操作的&#xff0c;后来又查资料复习了一下&#xff0c;最终才把代码看明白&#xff0c;所以写篇博客记录一下。 插入排序像打扑克牌 这是我听到过比较形…...

ElasticSearch 同步的方式

ElasticSearch 同步的方式 ElasticSearch是一款强大的分布式搜索和分析引擎&#xff0c;支持多种方式同步数据和日志。下面介绍几种常见的同步方式&#xff1a; 1. Logstash Logstash 是 ElasticStack 的一部分&#xff0c;用于收集、处理和转发日志和事件数据。通过配置 Lo…...

easyExcel实现分批导入,动态表头分批导出,以及导出表格样式设置

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version></dependency> 一&#xff0c;分批导入 1.首先配置表格头映射类 Getter Setter EqualsAndHashCode public class …...

Android BottomNavigationView底部菜单栏文字显示问题

1. BottomNavigationView 如果tab栏数据小于等于3个&#xff0c;那么图标和文字都是展示出来&#xff1b; 2. BottomNavigationView 如果tab栏数据大于3个&#xff0c;那么图标会显示出来&#xff0c;但是文字会隐藏&#xff1b; 3. 解决方式&#xff1a; &#xff08;当底部…...

从零开始学习typescript——运算符(条件运算法、逻辑运算符、类型运算符、位运算)

条件运算符 条件运算符是一个根据条件返回不同运算结果的运算符 关键字&#xff1a;?: 三元运算符 它可以换成if …else 判断 ? true &#xff1a; false 判断为true&#xff0c;返回&#xff1f;号后面的&#xff0c;判断为false ,返回&#xff1a; 号后面的 逻辑运算符 用…...

【开源】基于Vue.js的康复中心管理系统

项目编号&#xff1a; S 056 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S056&#xff0c;文末获取源码。} 项目编号&#xff1a;S056&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员…...

抢先看|第二届世界直播电商大会邀您共话时代“新电商”

党的二十大报告指出&#xff0c;要加快发展数字经济&#xff0c;促进数字经济和实体经济深度融合。要深化国家数字经济创新发展试验区建设&#xff0c;打造一批具有国际竞争力的战略性新兴产业集群和数字产业集群。电子商务作为数字经济中规模最大、表现最活跃、发展势头最好的…...

火爆火爆!影响超250万读者,Python入门圣经全新升级!

人生苦短&#xff0c;快学Python&#xff01; 什么&#xff1f;你没用过&#xff0c;也没开始学习&#xff0c;甚至没有认真了解过这门语言&#xff1f;那你一定这一秒就开始发力——下面让我们先简单看看 Python 有多火。权威编程语言排行榜 TIOBE&#xff0c;2022 和 2023 都…...

大数据学习(23)-hive on mapreduce对比hive on spark

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大门 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博主哦&#x1f91…...

通过这个简单的技巧让我们的 JavaScript 代码变得异常快

通过这个简单的技巧让我们的 JavaScript 代码变得异常快 秘诀&#xff1a;了解JavaScript 虚拟机(VM)的内部工作原理。 首先&#xff0c;我们来谈谈像 V8 这样的JavaScript 虚拟机(VM)。可以把它想象成我们的操作的大脑 —— 它将我们简洁的代码变成计算机可以理解和执行的东…...

vue怎么实现国际化? vue-i18n 插件实现国际化,支持切换不同语言

依赖的文档开始 | Vue I18n 一、安装 npm install vue-i18n 如果在一个模块系统中使用它&#xff0c;你必须通过 Vue.use() 明确地安装 vue-i18n&#xff1a; import Vue from vue import VueI18n from vue-i18nVue.use(VueI18n)二、使用 在 src 下创建 lang 文件夹 1.准…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...