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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/163114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为何设计师都在用这个原型样机资源网站?

谈论原型样机素材模板&#xff0c;这个话题对设计师来说如同老朋友一般熟悉。设计师们在创作完毕后&#xff0c;为了更淋漓尽致地展示他们的设计成果&#xff0c;通常会将其放置在真实的样机素材模板中。这种原型样机素材可以让设计作品迅速且清晰地呈现在真实环境中。找到一个…

(5秒解决)ImportError: attempted relative import with no known parent package

寻找了很多方法&#xff0c;发现大家把事情讲的复杂了。我这里用最简单的办法来解决父包引用找不到的问题。 报错提示&#xff1a;ImportError: attempted relative import with no known parent package 先给大家看看我的目录结构&#xff0c;model.py和test目录在同一级。tra…

前端数组方法汇总集锦

前言 数组主要使用场景有&#xff1a; 存储和处理数据&#xff1a;数组是一种有序的数据结构&#xff0c;可以用来存储和处理多个相关的数据。在前端开发中&#xff0c;我们经常使用数组来存储和处理列表、表格、选项等数据。 循环和遍历&#xff1a;数组提供了循环和遍历的功能…

smartsofthelp 7.0 最简单的代码生成器

这是一款值得开发人员认真研究的软件 https://pan.baidu.com/s/1xjDL5QypcRJ5neulUPFmWQ?pwdgedx 1.查询数据库死锁相关信息 2.查看数据库的链接情况 3.当前实例上的所有用户 4.创建数据库独立密码 5.查看数据库使用的端口号 6.当前数据库设置的最大连接数 7.当前数据库最大的…

淡入淡出transition: right 1s

transition: right 1s; //重点直接改变right值 操作过快 这里用该方法实现1s内淡入淡出 达到效果目标

JS PromiseLike 的判定与使用

目录 一. $.ajax()返回值遇到的问题二. Promise A 规范三. 判断是否为PromiseLike3.1 判断ES6的new Promise()3.2 判断包含then方法的对象3.3 判断$.ajax()返回的对象 一. $.ajax()返回值遇到的问题 当我们执行如下js代码时&#xff0c;可以看到$.ajax()执行后&#xff0c;得到…

Linux python安装 虚拟环境 virtualenv

根目录创建 venvs 文件夹 sudo mkdir /venvs 进入 /venvs 目录 cd /venvsp 创建虚拟环境&#xff0c;前提要按照 python3 安装 的 命令 sudo apt install python3 sudo python3 -m venv 虚拟环境名 激活虚拟环境 sourcepippip /venvs/zen-venv/bin/activatepinpi 安装flask pip…

【C语言】深入解开指针(四)

&#x1f308;write in front :&#x1f50d;个人主页 &#xff1a; 啊森要自信的主页 ✏️真正相信奇迹的家伙&#xff0c;本身和奇迹一样了不起啊&#xff01; 欢迎大家关注&#x1f50d;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;>希望看完我的文章对你有小小的帮助&am…

ubuntu借助overlay方案实现重启自动还原

配置重启还原OS 首先&#xff1a;sudo apt install overlayroot 安装一下软件 然后编辑配置文件&#xff1a;/etc/overlayroot.conf * overlayroottmpfs or overlayroottmpfs:PARAMETERS write all changes to a temporary (ram only) backing device A tmpfs mount will …

ubuntu22.04安装wvp-gb28181-pro 2023-11-23最新版本(一键安装)

下载程序 输入下面命令&#xff0c;输入普通用户密码&#xff0c;切换到 root用户 sudo su git clone -b ubuntu_wvp_online_install_2023_0425 https://gitcode.net/zenglg/ubuntu_wvp_online_install.git 等待下载完成 安装 进入到克隆下来的路径中 cd /home/tuners/ub…

让国内AI模型解题:滑动窗口中找出最大值,文心一言,通义千问错误率100%,讯飞星火略胜一筹

最近&#xff0c;一些大厂陆续放出了自己的AI模型&#xff0c;处于日常的使用和准确度&#xff0c;我通过一道试题来看一下文心一言、讯飞星火和通义千万的回答结果 本道题是一道很经典的算法题&#xff0c;请在滑动窗口中找出最大值 文心一言 第一次给出答案 package main…

vue中v-if与v-for的优先级?

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue中v-if与v-for的优先级? 目录 v-if和v-for的优先级是什么&#xff1f; 一、作用 二、优先级…

移动机器人,开启智能柔性制造新篇章

智能制造是当今工业发展的必然趋势&#xff0c;而柔性制造则是智能制造的重要组成部分。在这个快速变革的时代&#xff0c;如何提高生产效率、降低成本、增强灵活性成为了制造业的关键挑战。富唯智能移动机器人应运而生&#xff0c;为柔性制造注入了新的活力。 基于富唯智能AI-…

凸问题与非凸问题

凸函数&#xff1a;曲线上任意两点连线上的点对应的函数值不大于该两点对应的函数值得连线上的值&#xff0c;例如yx^2&#xff1b; 非凸函数&#xff1a;曲线上任意两点连线上的点对应的函数值既有大于该两点对应的函数值得连线上的值的部分也有小于的部分&#xff0c;例如&am…

Re51:读论文 Language Models as Knowledge Bases?

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称&#xff1a;Language Models as Knowledge Bases? ArXiv网址&#xff1a;https://arxiv.org/abs/1909.01066 官方GitHub项目&#xff1a;https://github.com/facebookresearch/LAMA 本文是2019年…

软件测试个人求职简历该怎么写,模板在这里

1、个人资料 姓名&#xff1a;xxx性别&#xff1a;x 手机号码&#xff1a;138888888xx邮箱&#xff1a;xxx 学历&#xff1a;本科专业&#xff1a;电子商务 英语&#xff1a;四级当前工作&#xff1a;测试工程师 从业时间&#xff1a;4年期望薪资&#xff1a;面议 求职意向软件…

FIB表与快速转发表实验

实验名称&#xff1a;FIB表与快速转发表实验 网络拓扑图&#xff1a; 实验步骤&#xff1a; 1、配置接口的IP地址 R1&#xff1a; R2&#xff1a; 2、配置OSPF路由协议 在R1宣告网段 在R2宣告网段 3、查看邻居状态&#xff0c;一直处于2-way状态&#xff0c;要等待30秒&…

SAP 权限设置维护

权限设置维护 su21 点击创建自己的 对象类&#xff08;OBJECT CLASS &#xff09; Z... 在点击创建授权对象 输入对象名 z... 对象名文本 字段名&#xff1a;ACTVT 点击允的许活 按钮 里面增删改查等权限.... 保存 .权限对象 保存后需要 pfcg 配置权限对象 分…

如何将音频添加到视频并替换视频中的音轨

随着视频流媒体网站的流行和便携式设备的发展&#xff0c;你可能越来越倾向于自己制作视频并在互联网上分享。有时&#xff0c;你可能还需要编辑视频并为其添加背景音乐&#xff0c;因为音乐总是对视频的感知起着神奇的作用。 那如何给视频添加音频呢&#xff1f;或者如何用新…

阿里云跨账号建立局域网

最近有活动&#xff0c;和好友一并薅了下阿里云的羊毛。琢磨着两台机器组一个局域网&#xff0c;于是有了这个需求&#xff0c;把步骤记录一下&#xff1a; 假设两台机器叫A和B&#xff0c;我们开始进行建立和组网 1. 建立ECS 把A机器公共环境装好&#xff0c;然后使用《实例与…