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

三、JS逆向

一、JS逆向

解释:在我们爬虫的过程中经常会遇到参数被加密的情况,这样只有先在前端搞清楚加密参数是怎么生成的才能继续我们的爬虫,而且此时我们还需要用python去执行这个加密的过程。本文主要讲怎么在浏览器调试JS,以及Python执行JS

1.浏览器调试JS

1.1 全局搜索

解释:我们想要找到被加密的内容,肯定先从参数入手,比如页面提交字段{"passwd":"5d114e4f6bdf59e7b9ca20704f1032ef54753c1969b452ba03fea1773c1a49ed6c1e72fb811bd3baccdd29e975e32d4d82f7f215a42ad4b56d561eb6eeb4c3f069936bd58a2c4dadac05fb107c2c94bfbc8efad9cb3649f6581c3d9b228ee1482e7bf39a349eed16dc0fdbb979294c5f73e2c37e489c3fde630ea35dcbe7979b"}这种一看就是加密了,此时我们打开F12开发者工具,选择选项卡网络刷新Ctrl-F搜索关键词passwd,之后就要靠自己了,点开文件依次查找,找到有用的信息,再卡断点
在这里插入图片描述

1.2 断点

解释:假设只是你找到了被加密内容调用的位置,此时需要通过加断点运行去验证自己的设想,此时如下图1,先跳去来源面板,之后我们通过图二示例就可以加断点了,图三是(刷新页面或触发该代码)程序运行到断点处时我们要选择的模式其为一行一行运行代码(这个比较常用),图四标准了我们断点运行后,我们能看到的一些局部变量的值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.Python执行JS

安装:pip install pyexecjs

注意:这个库可能你电脑上有node或者其它js环境,而且执行的js代码,不能包含浏览器里面特有的一些元素,比如window,document等等(我们用python运行js一般也就是计算,遇到这些浏览器元素删除即可)

解释:这个库能够让python执行js代码,下面为简单演示

简单例子:

import execjs# compile里面写js代码
c = execjs.compile('''function hello(str){return "hello" + str;}''')
# call第一个参数是函数名,后面的参数对应函数里面的参数,比如这里hello(str)的参数str
d = c.call('hello','jack')
print(d) # hellojack

读取多个js文件:

import execjsprint(execjs.get().name)
with open('./js/test.js', 'r') as f:jscontent = f.read()with open('./js/password.js', 'r') as f:jscontent += f.read()# jscontent = jscontent + jscontent1
ctx = execjs.compile(jscontent)d = ctx.call('fuction', 'run')
print(d)
http://www.lryc.cn/news/261594.html

相关文章:

  • HBase 高可用集群详细图文安装部署
  • 现代雷达车载应用——第2章 汽车雷达系统原理 2.6节 雷达设计考虑
  • 【JVM从入门到实战】(五)类加载器
  • 计算机毕业设计 基于Web的城市旅游网站的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 【人工智能革命】:AIGC时代的到来 | 探索AI生成内容的未来
  • spring-boot-data-jpa、JPA实现分页
  • 云原生之深入解析如何在Kubernetes中快速启用Cgroup V2支持
  • QT实现四则运算计算器
  • mysql的redolog、undo、binlog的作用
  • 京东大数据-10月京东咖啡机市场销售数据分析-销售额增长41%,德龙等海外头部品牌店铺数据分析
  • 【Android12】WindowManagerService架构分析
  • 部署LVS的NET模式
  • 如何在Facebook Business Manager进行企业认证
  • 推荐一款好用的包含表格识别的OCR网站
  • linux 块设备驱动程序介绍
  • 知识付费小程序开发:构建个性化学习平台的技术实践
  • OpenCV极坐标变换函数warpPolar的使用
  • 类与接口常见面试题
  • Windows mysql5.7 执行查询/开启/测试binlog---简易记录
  • 文档安全加固:零容忍盗窃,如何有效预防重要信息外泄
  • 前端如何设置模板参数
  • 06 使用v-model实现双向数据绑定
  • 【C++11特性篇】C++11中新增的initializer_list——初始化的小利器(2)
  • 计算机网络传输层(期末、考研)
  • 【STM32入门】4.1中断基本知识
  • HCIA-H12-811题目解析(3)
  • 【异步绘制】UIView刷新原理 与 异步绘制
  • [ERROR] ocp-server-ce-py_script_start_check-4.2.1 RuntimeError: ‘tenant_name‘
  • 模拟实验中经常遇到的问题和常用技巧
  • 微信小程序(二) ——模版语法1