js 定时网页点击_反爬 JS 逆向,扣代码解密分析

2023-11-11

挺久没发爬虫相关的教程啦,今天给大伙分享一下关于网站反爬对请求参数值的加密分析例子,主要还是看看思路。

定位加密点

在某网站中进行登录请求:

简单抓下包,点击登录按钮之后,可以在浏览器的控制台中看到相关的请求:

接着往下拉,可以看到 POST 请求的参数信息:

从中可以看出,除了 username 中的值比较明显之外,其它的参数值看的都是一脸懵逼...

其中比较关键的几个参数是:

1、pwdencrypt2、oauth_token3、vv

那么这时候是不是应该立刻去代码中搜索上面这几个字段呢?

不不不,这会增加我们的工作量,因为这些参数值有时候是加密的结果,也有时候是页面返回的值。如果你一开始就去全局搜索字段, 分析到最后发现是取网页的某个值,那岂不是浪费许多时间?

为了避免这种事情发生,我们可以直接拿刚刚 POST 请求中已经被加密的参数值搜一下,使用快捷键 CTRL + SHIFT + F 全局搜索 JS :

搜搜 vv 字段

搜搜 oauth_token 字段

搜搜 pwdencrypt 字段

从搜索结果中可以发现, oauth_token 和 vv 为网页返回的值,而 pwdencrypt 全局搜索不到,大概率是加密的密文了,这样一下子就干掉了两个参数啦,接下来只需要分析 pwdencrypt 即可。

全局搜索一下 pwdencrypt 字段:

可以看到,这里 pwdencrypt出现在 Login.auth_v2.js 中,我们点进去看看:

可以看到:

pwdencrypt 在此使用了 RSAUtils.encryptedString 进行加密。

当然,你也可以在这里打个断点,然后重新点击登录按钮,来确定参数的加密位置:

扣取加密代码函数

先把鼠标悬浮在函数名称那,然后会弹出一个窗口来,你点一下就可以进入相关的函数了:

接着,你可能会一脸懵逼的看到一堆js代码,不知道这么扣?不要慌,只要你遇到不是套娃的写法以及一个Js文件多种方法实现的,简单粗暴的全部复制粘贴就行了,这个就网站就是如此。

首先全选我们定位到的 JS 代码,然后复制粘贴一波:

接着在 node 环境中运行这段 JS:

咦~报错了,提示我们找不到 window 对象。

没有window 那我们就在 JS 头部定义一个 Window=this,定义完后再运行,如果这时候啥事没发生,那就证明 JS 基本扣下来能用了。

那这么调用呢?

当然是他们怎么调我们就怎么调就行啦:

如果提示UDB不存在咋办?

那就改为:

window.UDB.SDK.rsa.RSAUtils.encryptedString(password)

来测试一下吧:

运行一波:

你看,加密的结果是不是就得到了呀?

ok,以上!

ps: 本文思路由 {小帅b的朋友:lin 哥哥} 提供,小帅b希望今天的分享能给你带来一点帮助,那么我们下回见啦,peace!

关注我

学习 Python 没烦恼

你多点“赞”

我多点更新...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js 定时网页点击_反爬 JS 逆向,扣代码解密分析 的相关文章

  • 设计模式的七大原则

    七大原则 开闭原则 Open Close Principle OCP 一个软件实体如类 模块和函数应该对扩展开放 对修改关闭 目的就是保证程序的扩展性好 易于维护和升级 开闭原则被称为面向对象设计的基石 实际上 其他原则都可以看作是实现开闭
  • ICML 2012 推荐系统部分文章小结及下载

    ICML2012 paper下载地址 感谢丹柯提供 http icml cc 2012 papers 个人比较感兴趣的 跟推荐系统相关的几篇文章 1 在有query的场景下 向用户推荐item Latent Collaborative Re
  • 解决视频在钉钉播放出现转码或闪烁

    问题 用录屏软件 如傲软录屏 录制的视频通过钉钉发送给对方后 接收方直接点开视频播放时会提示转码或出现画面闪烁 原因 钉钉要求的视频的像素格式为yuv420p 而录屏软件的像素格式不符 例如 傲软录屏使用h264编码时视频的像素格式是yuv
  • 什么是spark机器学习

    Spark机器学习 Spark ML 是Apache Spark的一个模块 用于进行大规模数据处理和机器学习任务 它提供了一组丰富的工具和算法 用于构建和训练机器学习模型 以及进行数据预处理和特征工程 Spark ML的设计目标是高效处理大
  • Java把V3音频文件转化为wav文件的算法的代码

    将写内容过程经常用到的内容段做个备份 如下内容内容是关于Java把V3音频文件转化为wav文件的算法的内容 import java io BufferedInputStream import java io BufferedOutputSt
  • C语言解决猴子分桃问题的代码

    研发闲暇时间 把做工程过程中经常用的代码片段做个记录 如下的资料是关于C语言解决猴子分桃问题的代码 希望能对大家有较大帮助 main int i m j k count for i 4 i lt 10000 i 4 count 0 m i
  • Q_UNUSED ( name ) 的用法

    一 用法 Q UNUSED 没有实质性的作用 用来避免编译器警告 for example int transition getSTL int type Q UNUSED type return 123 二 相关问题处理 如果编译中出现以下警
  • MySQL之窗口函数

    目录 1 窗口函数基本概念 2 窗口函数和普通聚合函数的区别 3 常见的窗口函数 4 窗口函数的使用 5 示例代码 聚合函数也可以作为窗口函数 聚合函数VS窗口函数 常见窗口函数的使用 编辑给窗口指定别名 怎么样得到各部门工资排名前N名员工
  • C++的noexcept

    在C 中 noexcept是一个异常说明符 用于告知编译器一个函数是否会抛出异常 使用noexcept可以提供编译器有关函数异常处理的信息 从而优化代码 noexcept有两种形式 noexcept和noexcept expression
  • 10种流行的Java框架

    任何框架都是有助于更快更好地开发软件解决方案的工具之一 框架的基本原理不必重新发明轮子 框架使开发人员的工作变得更轻松 并帮助他们专注于业务逻辑 而不必担心通用的代码段 而且由于Java并不是最简单的编程语言之一 因此框架在这里绝对是有用的
  • Apache Doris 快速入门

    1 基本概念 FE Frontend 前端节点 接收用户查询请求 SQL解析 执行计划生成 元数据管理 节点管理等 BE Backend 后端节点 数据存储 执行查询计划 前端节点FE 和 后端节点BE 各自独立运行 互不影响 broker
  • Huggingface Transformers简约教程(二)

    写在前面 致敬所有前辈 知乎上的transformers 教程 博客园上的Colab 使用教程 huggingface 官网 6 设计思想 The library was designed with two strong goals in
  • 【Java并发】生产者消费者模型 - 两线程交替打印1-100

    生产者消费者模型 以下是其中一种通过synchronize的实现 import java util Queue import java util LinkedList public class ProducerAndConsumer pri
  • ppa:jonathonf/python-3.6 报错解决办法

    ubuntu16 04 python3 6 入 ppa jonathonf python 3 6 ppa 使 非公開 困 変更前 sudo add apt repository ppa jonathonf python 3 6 sudo a
  • 单目双目标定

    本文用QT调用OpenCV4 5 1进行相机标定 头文件如下 include
  • 搭建NFS使多个服务器中的web项目共享图片资源

    我的个人博客 逐步前行STEP 有一个使用laravel框架的项目 采用laravel自带的文件管理系统 还有一个使用laravel admin扩展的管理端 更是依赖于自带的文件管理系统 因部署了多台服务器 需要打通数据 考虑了各种方案 比
  • c++设计函数查找数组中的最大和最小元素,并计算去除最大和最小后元素的平均值

    第一串代码为精简版 include
  • 进程的四大分段

    在一个终端 ubuntu 上 在运行一个进程时 如 a out 此时他会开辟一个空间 此空间被粗略的分为四个段 如下图所示 注意 常量属于代码段 将代码编译成二进制流文件 存放在代码段 在一个进程中 他的全局变量 静态变量以及常量全部存放在
  • 【系列 3】vue依赖收集原理与nextTick实现

    一 vue响应式数据依赖收集原理 vue收集依赖的步骤 Watcher监听 一个组件一个Watcher 每次执行 updateComponent 更新当前组件时创建一个 Watcher 监听者 gt Dep target 用来监听该组件执行

随机推荐