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

爬虫逆向实战(二十五)--某矿采购公告

一、数据接口分析

主页地址:某矿

1、抓包

通过抓包可以发现数据接口是cgxj/by-lx-page
在这里插入图片描述

2、判断是否有加密参数

  1. 请求参数是否加密?
    通过查看“载荷”模块可以发现有一个param的加密参数
    在这里插入图片描述
  2. 请求头是否加密?
  3. 响应是否加密?
  4. cookie是否加密?

二、加密位置定位

1、看启动器

查看启动器发现里面有一个index.js中的匿名调用堆栈,点进去查看
在这里插入图片描述
点进去后发现,网站确实是在此处发送的请求,而且参数param也是在此处赋值。但是param的值来自于A.sent,此处找不到A.sent赋值的位置,所以此处只是发包位置,并不是加密位置。
在这里插入图片描述

2、搜索关键字

通过搜索sent相关的关键字,不能有效的定位到加密位置

3、hook

因为请求参数中只有一个param密文参数,所以网站大概率会使用JSON.stringify将数据转换为json字符串再进行加密,所以我们可以hookJSON.stringify,hook代码:

var my_stringify = JSON.stringify;
JSON.stringify = function (params) {debuggerconsole.log("json_stringify params:",params);return my_stringify(params);
};

运行hook代码,再次获取数据,发现可以断住
在这里插入图片描述
接着调试执行,就可以发现加密位置
在这里插入图片描述
但是,此时我们并不能确定此处的加密结果是否就是发包时使用的A.sent,所以我们可以在发包位置再打上断点,并将此处断点放开,通过对比,我们可以发现,此处的加密结果就是发包时使用的。
在这里插入图片描述

三、扣js代码

将加密位置的代码扣出,缺啥补啥即可。
注意,加密时使用的RSA加密以及md5加密,均可使用标准模块,但是RSA加密时,要补一下网站的encryptLong方法,同时RSA加密所使用的公钥,通过观察发包可以看出,网站每次获取数据前,都会先发一个包获取公钥。
在这里插入图片描述
所以先请求public接口获取到公钥,再进行加密即可。
JavaScript源码:

const JSEncrypt = require('jsencrypt');
const CryptoJS = require("crypto-js");function w(A) {var e, t, n = "", r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", a = "=";for (e = 0; e + 3 <= A.length; e += 3)t = parseInt(A.substring(e, e + 3), 16),n += r.charAt(t >> 6) + r.charAt(63 & t);e + 1 == A.length ? (t = parseInt(A.substring(e, e + 1), 16),n += r.charAt(t << 2)) : e + 2 == A.length && (t = parseInt(A.substring(e, e + 2), 16),n += r.charAt(t >> 2) + r.charAt((3 & t) << 4));while ((3 & n.length) > 0)n += a;return n
}JSEncrypt.prototype.encryptLong = function (A) {var e = this.getKey(), t = (e.n.bitLength() + 7 >> 3) - 11;var n = "", r = "";if (A.length > t)return n = A.match(/.{1,50}/g),n.forEach((function (A) {var t = e.encrypt(A);r += t})),w(r);var a = e.encrypt(A), s = w(a);return s
}function b(A, e, t) {return e in A ? Object.defineProperty(A, e, {value: t,enumerable: !0,configurable: !0,writable: !0}) : A[e] = t,A
}function d(A, e) {var t = Object.keys(A);if (Object.getOwnPropertySymbols) {var n = Object.getOwnPropertySymbols(A);e && (n = n.filter((function (e) {return Object.getOwnPropertyDescriptor(A, e).enumerable}))),t.push.apply(t, n)}return t
}function m(A) {for (var e = 1; e < arguments.length; e++) {var t = null != arguments[e] ? arguments[e] : {};e % 2 ? d(Object(t), !0).forEach((function (e) {b(A, e, t[e])})) : Object.getOwnPropertyDescriptors ? Object.defineProperties(A, Object.getOwnPropertyDescriptors(t)) : d(Object(t)).forEach((function (e) {Object.defineProperty(A, e, Object.getOwnPropertyDescriptor(t, e))}))}return A
}function get_param(pub_key) {var e = {"inviteMethod": "","businessClassfication": "","mc": "","lx": "CGGG","dwmc": "","pageIndex": 1}var t = new JSEncrypt();t.setPublicKey(pub_key)a = m(m({}, e), {}, {sign: CryptoJS.MD5(JSON.stringify(e)).toString(),timeStamp: +new Date})return t.encryptLong(JSON.stringify(a))
}

相关文章:

爬虫逆向实战(二十五)--某矿采购公告

一、数据接口分析 主页地址&#xff1a;某矿 1、抓包 通过抓包可以发现数据接口是cgxj/by-lx-page 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现有一个param的加密参数 请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 无c…...

DPLL 算法之分裂策略

前言 DPLL算法确实是基于树&#xff08;或二叉树&#xff09;的回溯搜索算法&#xff0c;它用于解决布尔可满足性问题&#xff08;SAT问题&#xff09;。下面我会分析您提到的DPLL算法中的分裂策略&#xff0c;以及它是如何在搜索过程中起作用的。 DPLL算法中的分裂策略是用于在…...

Jmeter+ServerAgent

一、Jmeter 下载 https://jmeter.apache.org/download_jmeter.cgi选择Binaries二进制下载 apache-jmeter-5.6.2.tgz 修改配置文件 jmeter下的bin目录&#xff0c;打开jmeter.properties 文件 languagezh_CN启动命令 cd apache-jmeter-5.6/bin sh jmeter二、ServerAgent 监…...

打破数据孤岛!时序数据库 TDengine 与创意物联感知平台完成兼容性互认

新型物联网实现良好建设的第一要务就是打破信息孤岛&#xff0c;将数据汇聚在平台统一处理&#xff0c;实现数据共享&#xff0c;放大物联终端的行业价值&#xff0c;实现系统开放性&#xff0c;以此营造丰富的行业应用环境。在此背景下&#xff0c;物联感知平台应运而生&#…...

ubuntu22安装和部署Kettle8.2

前提 kettle是纯java编写的etl开源工具&#xff0c;目前kettle7和kettle8都需要java8或者以上才能正常运行。所以运行kettle前先检查java环境是否正确配置&#xff0c;java版本是否是8或者以上。 kettle安装 1、创建kettle目录&#xff0c;并将kettle的zip包解压到kettle目…...

修复 Ubuntu Linux 中的“找不到命令‘python’”错误

在ubuntu 22.04版本中使用 callstack backtrace.txt 回溯错误点是碰到了该问题。 参考文章&#xff1a;链接 ubuntu22.04版本中默认只安装了python3版本 查看python各个版本安装情况&#xff0c;在终端输入命令&#xff1a; type python python2 python3如果安装了对应的版本…...

【业务功能篇86】微服务-springcloud-系统性能压力测试-jmeter-性能优化-JVM参数调优

系统性能压力测试 一、压力测试 压力测试是给软件不断加压&#xff0c;强制其在极限的情况下运行&#xff0c;观察它可以运行到何种程度&#xff0c;从而发现性能缺陷&#xff0c;是通过搭建与实际环境相似的测试环境&#xff0c;通过测试程序在同一时间内或某一段时间内&…...

mysql的登录与退出

mysql是c/s架构&#xff0c;意味着同时要有客户端和服务端 1 找到客户端。mysql.exe的安装目录 打开命令行 2 输入对应的服务器的ip&#xff0c;如果是本地&#xff0c;就是Localhost&#xff0c;如果是远程服务器&#xff0c;那就输入对应ip/域名。并且指定mysql监听的端口 …...

SOLIDWORKS工程图转DWG图层映射技巧

DWG格式的图纸在工程制图中有着非常重要的地位&#xff0c;工程实践中常常就需要将SOLIDWORKS工程图进行转换。对于两者之间数据衔接的妥善处理&#xff0c;是提升工作效率的有效手段。基于此目的&#xff0c;本次我们将介绍数据衔接的一个有效解决方案&#xff1a;图层数据的映…...

PMAC与Modbus主站进行Modbus Tcp通讯

PMAC与Modbus主站进行Modbus Tcp通讯 创建modbus通讯参数 在项目的PMAC Script Language\Global Includes下创建一个名为00_Modbus_Para.pmh的pmh文件。 Modbus[0].Config.ServerPort 0 Modbus[0].Config.ConnectTimeOut 6000 Modbus[0].Config.SendRecvTimeOut 0 Modbu…...

MyBatis分页插件PageHelper的使用及MyBatis的特殊符号---详细介绍

一&#xff0c;分页的概念 分页是一种将大量数据或内容分割成多个页面以便逐页显示的方式。在分页中&#xff0c;数据被分割成一定数量的页&#xff0c;每页显示一部分数据或内容&#xff0c;用户可以通过翻页或跳分页是一种将大量数据或内容分割成多个页面以便逐页显示的方式。…...

Qt(C++)计算一段程序执行经过的时间

一、前言 在许多应用程序和系统中,需要对经过的时间进行计算和记录。例如 可能想要测量某个操作的执行时间,或者记录一个过程中经过的时间以进行性能分析。在这些场景下,准确地计时是非常重要的。 Qt提供了一个功能强大的计时器类QElapsedTimer,可以方便地记录经过的时间…...

UnionTech OS(统信桌面操作系统)安装 g++ 和 cmake

文章目录 前言一、debian 10简介二、安装 g三、安装cmake参考资料 前言 统信桌面操作系统支持x86、龙芯、申威、鲲鹏、飞腾、兆芯等国产CPU平台&#xff0c;基于debian 10.x 的稳定版本&#xff0c;长期维护的统一内核版本(4.19)。 一、debian 10简介 Debian 10 是一款广泛使…...

php_webshell免杀--从0改造你的AntSword

0x00 前言&#xff1a; 为什么会有改造蚁剑的想法&#xff0c;之前看到有做冰蝎的流量加密&#xff0c;来看到绕过waf&#xff0c;改造一些弱特征&#xff0c;通过流量转换&#xff0c;跳过密钥交互。 但是&#xff0c;冰蝎需要反编译去改造源码&#xff0c;再进行修复bug&am…...

RocketMQ mqadmin java springboot python 调用笔记

命令 mqadmin命令列表 yeqiangyeqiang-MS-7B23:/opt/rocketmq-all-5.1.3-bin-release$ sh bin/mqadmin The most commonly used mqadmin commands are:updateTopic Update or create topicdeleteTopic Delete topic from broker and NameServer.…...

Java aspose 将HTML导出成Excel文件

1.需求 有一批表格的html文件&#xff0c;需要将这些表格导出成excel文件 2.代码 使用第三方库 aspose ByteArrayInputStream htmlIs new ByteArrayInputStream(htmlBuilder.toString().getBytes()); // 将html字符串构建成输入流 LoadOptions lo new LoadOptions(LoadFo…...

原生微信小程序 动态(横向,纵向)公告(广告)栏

先看一下动态效果 Y轴滚动公告的原理是swiper组件在页面中的Y轴滚动&#xff0c;属性vertical&#xff0c;其余属性也设置一下autoplay circular interval"3000" X轴滚动的原理是&#xff0c;利用动画效果&#xff0c;将内容从右往左过渡过去 wxml&#xff1a; &l…...

pandas和polars简单的对比分析

pandas pandas是基于python写的&#xff0c;底层的数据结构是Numpy数据(ndarray)。pandas自身有两个核心的数据结构&#xff1a;DataFrame和Series&#xff0c;前者是二维的表格数据结构&#xff0c;后者是一维标签化数组。 polars polars是用Rust&#xff08;一种系统级编程…...

Feign远程调用的使用

假设已配好nacos服务&#xff1a;并且已配好userservice、orderservice&#xff0c;点击跳转 Feign是一个声明式的http客户端&#xff0c;官方地址&#xff1a;https://github.com/OpenFeign/feign&#xff0c;其作用就是在程序中帮助我们优雅的实现http请求的发送&#xff0c…...

Postman API测试之道:不止于点击,更在于策略

引言&#xff1a;API测试的重要性 在当今的软件开发中&#xff0c;API已经成为了一个不可或缺的部分。它们是软件组件之间交互的桥梁&#xff0c;确保数据的流动和功能的实现。因此&#xff0c;对API的测试显得尤为重要&#xff0c;它不仅关乎功能的正确性&#xff0c;还涉及到…...

Chord - Ink Shadow 跨模态应用探索:连接文本与MATLAB科学计算

Chord - Ink & Shadow 跨模态应用探索&#xff1a;连接文本与MATLAB科学计算 你有没有过这样的经历&#xff1f;面对一堆实验数据&#xff0c;脑子里已经想好了要画个什么样的图来分析&#xff0c;但打开MATLAB&#xff0c;却卡在了写代码这一步。复杂的函数名、繁琐的语法…...

找不到api-ms-win-core-path-l1-1-0.dll的官方解决方法(2026更新)

我是一名企业的IT桌面支持&#xff0c;平时处理得最多的就是员工电脑上五花八门的软件报错。最近&#xff0c;api-ms-win-core-path-l1-1-0.dll缺失的工单量激增&#xff0c;尤其在Windows 7系统的电脑上。很多同事第一反应是去网上搜这个文件下载&#xff0c;但这恰恰是IT运维…...

工业能量:04.选型小Tips:预算2000元玩转工厂电源

04.选型小Tips:预算2000元玩转工厂电源(新手也能选对不踩坑,PLC机器人稳稳的)** 在工厂里,最昂贵的不是设备,而是“停机一秒的代价”。 哎,师傅们,槐树底下风儿吹得正凉快,今天咱不拆原理、不讲高端配置,就聊最接地气的——2000块钱怎么给车间PLC和机器人挑个靠谱心脏…...

结合卷积神经网络思想优化BERT文本分割边界判定

结合卷积神经网络思想优化BERT文本分割边界判定 文本分割&#xff0c;简单来说&#xff0c;就是把一大段连续的文字&#xff0c;按照意思或者结构&#xff0c;切成一个个有意义的片段。这听起来简单&#xff0c;但在实际应用中&#xff0c;比如处理会议记录、客服对话或者网络…...

Youtu-VL-4B-Instruct步骤详解:Supervisor日志查看、错误定位与常见启动失败修复

Youtu-VL-4B-Instruct步骤详解&#xff1a;Supervisor日志查看、错误定位与常见启动失败修复 部署一个强大的多模态AI模型&#xff0c;最让人头疼的往往不是使用&#xff0c;而是启动。你满怀期待地拉取镜像、启动服务&#xff0c;结果浏览器里只显示一个冰冷的“无法访问此网…...

mPLUG视觉问答效果展示:交通标志识别、菜单文字理解、图表数据问答

mPLUG视觉问答效果展示&#xff1a;交通标志识别、菜单文字理解、图表数据问答 获取更多AI镜像 想探索更多AI镜像和应用场景&#xff1f;访问 CSDN星图镜像广场&#xff0c;提供丰富的预置镜像&#xff0c;覆盖大模型推理、图像生成、视频生成、模型微调等多个领域&#xff0c;…...

【Unity 贪吃蛇大作战模板】高并发IO游戏怎么做?拆解Snake Warz核心架构

Snake Warz IO 是一个基于 Photon Fusion v2 构建的多人在线贪吃蛇游戏完整模板。它不仅提供了可直接上线的游戏内容&#xff0c;还涵盖了完整的多人联机框架、AI系统、UI流程以及跨平台适配能力。该插件支持最多 10 名真实玩家与 30 个 AI 同场竞技&#xff0c;并提供多种游戏…...

Janus-Pro-7B在SolidWorks设计中的应用:工程问题智能答疑

Janus-Pro-7B在SolidWorks设计中的应用&#xff1a;工程问题智能答疑 1. 引言 想象一下这个场景&#xff1a;你正在用SolidWorks赶一个复杂的装配体设计&#xff0c;突然卡在了一个配合关系上&#xff0c;或者对某个特征的生成顺序拿不准。这时候&#xff0c;你是去翻几百页的…...

Windows下OpenClaw安装详解:GLM-4.7-Flash模型联调全流程

Windows下OpenClaw安装详解&#xff1a;GLM-4.7-Flash模型联调全流程 1. 为什么选择OpenClawGLM-4.7-Flash组合 去年我在处理个人知识管理时&#xff0c;发现每天要重复执行大量机械操作&#xff1a;整理网页摘录、归类PDF文档、生成日报摘要。尝试过各种自动化工具后&#x…...

乙巳马年春联生成终端部署教程:Docker镜像构建+GPU算力适配详解

乙巳马年春联生成终端部署教程&#xff1a;Docker镜像构建GPU算力适配详解 1. 引言&#xff1a;从创意到部署&#xff0c;开启你的AI春联创作之旅 想象一下&#xff0c;你只需要输入几个简单的愿望词&#xff0c;比如“如意”或“飞跃”&#xff0c;一扇威严的皇家红门就在屏…...