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

【爬虫实战】使用Python和JS逆向基于webpack的游戏平台

使用Python和JS逆向基于webpack的游戏平台

  • 网站分析
    • JS代码分析
      • 开始进行F12之路
      • 用Python Pyexejs库来动态加载js

网站分析

最近在找游戏,发现一个不错的分享平台,资源下载需要点击下载后扫二维码,进行网盘转存,如果想要20个游戏要扫20次,身为程序员怎么可能这样机械式呢.
在这里插入图片描述在这里插入图片描述

JS代码分析

开始进行F12之路

先找到button [下载] 触发的函数,全局search 下载
在这里插入图片描述
不出意外在这个js文件里面搜索到了
page-4782b9a12c0c8e4a.js
然后开始调试打断点, F5 刷新断住进行跟栈

这里可以看出这地址是加密的
Kcv3H5Y+q+P7BNEPFwrcSlRuRvA1BMnTTTlvTtsCD/7h6HUeY+VtdffUiumxo5MX
在这里插入图片描述

这是解密后的
在这里插入图片描述
来看下w.p(xx)这个是什么东西,点击看下
在这里插入图片描述
毫不意外的可以看出这里就是解密的方法了… 那就开始扣了…
在这里插入图片描述
先把加载器给扣下,然后跟栈,报缺什么方法就补什么方法,这种方式有个缺点…
你永远不知道需要补多少个函数…
我的做法是居然这个函数只有引用到,那我就整个js给扣下来
在这里插入图片描述
然后关注被调用的函数,然后随机删几个,看会不会被依赖到,如果随便删几个跑不动,就保留整个js吧,不要费时间去调了…

然后开始补环境变量

运行后会提示ReferenceError: self is not defined,这里的self只出现了这一行,只是全局性的变量。添加window = global;,并用window替换self。然后再运行,就不会有报错了。但是要记得待会再补代码的时候如果有self也要同样使用window

接下来提示TypeError: Cannot read property ‘call’ of undefined
其实也有两种方式找函数,一个是全选o()然后点击,或者全选n(xx)然后点击,两种方式都可以找到
这里我是全扣…不想去看上下文了…

在这里插入图片描述

在这里插入图片描述
ok 到这里就解密完成了 …

用Python Pyexejs库来动态加载js

import requests
import execjswith open('game.js', encoding='utf8') as f:js_code = f.read()js_compile = execjs.compile(js_code)
code = js_compile.call("decrypt", panUrl)
print(code) # https://pan.quark.cn/s/34d6802ab604

把逻辑完善就是以下的效果了
搜索3A大作的游戏都抓下来, 在用夸克网盘批量转存的工具,保存到自己的云盘就okok
结束撒花~~~~~~~~~
在这里插入图片描述

本文主要介绍了对于使用webpack打包技术的这一类网站的逆向方法和思路。当然对于逆向JS有很多种方式,根据webpack的规则来定位函数只是其中一条路,也不是非走不可。

免责声明

教育和研究用途:本文章提供的信息和示例代码仅供教育和研究用途。它们的目的是帮助读者了解爬虫技术的原理和应用。
合法合规性:请注意,网络爬虫可能会侵犯网站的服务条款或法律法规。在实际应用中,你必须确保你的爬虫活动合法、合规,并遵守所有相关法律。
责任限制:作者对于读者使用文章中提供的信息和代码所导致的任何问题或法律纠纷概不负责。读者应自行承担风险并谨慎操作。
合理使用:请在使用网络爬虫时保持谨慎和礼貌。不要对目标网站造成不必要的干扰或侵害他人利益。请在遵守法律的前提下使用爬虫技术。
变动和更新:作者保留随时更改文章内容的权利,以反映新的法规、技术和最佳实践。
资源和参考文献:本文章中的示例代码和信息可能依赖于第三方资源,作者会尽力提供相关参考文献和资源链接。作者不对这些资源的可用性或准确性负责。
协商:如果您有任何关于本文内容或责任声明的疑虑或疑问,请在使用之前与专业法律顾问协商。

http://www.xdnf.cn/news/16690.html

相关文章:

  • 【Java安全】CC1链
  • 计算机网络:什么是光猫
  • 安卓脱壳指南
  • 5G毫米波射频前端设计:从GaN功放到混合信号集成方案
  • TDengine 中 TDgp 中添加算法模型(预测分析)
  • 通过 Docker Compose 快速部署RocketMQ 服务
  • openKylin 2.0 SP2揭秘 - 磐石架构:不变的核心,更好的体验
  • 从 MySQL 迁移到 TiDB:使用 SQL-Replay 工具进行真实线上流量回放测试 SOP
  • Video_1920×1080i 1920_1080p
  • 基于 BiLSTM+自注意力机制(改进双塔神经网络) 的短文本语义匹配
  • Kafka Streams性能优化实践指南:实时流处理与状态管理
  • ode with me是idea中用来干嘛的插件
  • 如何系统性了解程序
  • Mysql索引失效问题及其原因
  • 借助于llm将pdf转化为md文本
  • 深度解析领域特定语言(DSL)第七章:语法分析器组合子 - 用乐高思维构建解析器
  • Linux 计划任务管理
  • 【n8n】如何跟着AI学习n8n【03】:HTTPRequest节点、Webhook节点、SMTP节点、mysql节点
  • AI IDE+AI 辅助编程-生成的大纲-一般般
  • Visual Studio调试技巧与函数递归详解
  • mac环境配置rust
  • rabbitmq的安装和使用-windows版本
  • python基础语法3,组合数据类型(简单易上手的python语法教学)(课后习题)
  • 前端 vue 第三方工具包详解-小白版
  • 云原生环境 DDoS 防护:容器化架构下的流量管控与弹性应对
  • C++语言的发展历程、核心特性与学习指南
  • #C语言——刷题攻略:牛客编程入门训练(一):简单输出、基本类型
  • 量子安全:微算法科技(MLGO)基于比特币的非对称共识链算法引领数字经济未来
  • XPATH选择器常用语法
  • 磁盘坏道检测工具在美国服务器硬件维护中的使用规范