Python爬虫:js逆向调式操作及调式中遇到debugger问题

这篇具有很好参考价值的文章主要介绍了Python爬虫:js逆向调式操作及调式中遇到debugger问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 前言

本篇博客主要讲解js逆向调式操作及调式中遇到debugger问题,内容参考自网上的一些视频讲解结合自己所做过的爬虫测试,觉得小编总结的还不错的读者记得点赞支持一下(内容仅供学习使用)。
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript

2. js逆向调式操作
2.1 DOM事件断点

比如虎牙直播登录操作,想快速找到找到执行登录操作的那一段js代码,可以找到登录按钮对应的事件监听器,可以这下面刚好有一个点击事件(如果有多个无法判断的事件,那么依次把这些事件进行移除,如果移除之后,在没有输入任何数据时点击登录按钮没有提示,那么这个事件就是我们要找的那个了)。如下:
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript

Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript

2.2 XHR/提取断点(用于请求接口参数加密处理)

比如某云音乐,我搜索了一首歌曲,网址下面会给出搜索内容。这是一个ajax请求,请求方式为post请求,请求参数进行了加密操作,如果想用Python模拟js加密,那么首先需要找到加密的地方。这个是那个post请求链接: https://music.163.com/weapi/cloudsearch/get/web?csrf_token=,把域名后面的内容copy,即weapi/cloudsearch/get/web?csrf_token,然后在XHR/t提取断点中添加上述copy的内容,刷新一下当前网址,即可找到发起请求那段js代码。(如果是get请求,那么需要copy的则是域名后到?之前的字符内容)
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
然后点击堆栈中调用点,可以找到加密处处理在这里。
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
这样我们简简单单就可以找到js加密处,然后用Python(调用一些可以执行js代码的模块[如果复杂的话])模仿加密过程即可。(当然也可以使用请求参数的关键词 encSecKey params进行查找,不过如果关键词简单,比如单个字符,那么这种方式不适用(js代码中可能有多个这样字符))

2.3 请求返回的数据是加密的

这种情况比如西瓜视频,在西瓜视频这个平台上你点击某个视频进行观看,如果想把这个视频下载下来。按F12键来到开发者工具,可以很快地在一个script标签内找到视频的相关数据,但是下载链接进行了加密处理。
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
找到解密函数,然后用Python模仿js解密即可(如果不懂,直接调用Python可以执行js代码的模块)。

2.4 hook定位参数

1. 覆盖原函数

var xxx = function(){
    console.log('java')
}
// xxx() 执行结果为 java
xxx = function(){
    console.log('javascript');
}
// xxx() 执行结果为 javascript

2. 覆盖浏览器环境的方法

window.alert('哈哈')
// 弹出一个提示框 内容为 哈哈
window.alert = function(){console.log('哈哈')}
window.alert('哈哈')
// 在控制台上输出 哈哈

可以使用Object.defineProperty替换一个对象的属性,属性可能是方法,有可能是值。
比如现在想知道百度网址上那些cookie中那些值的来源生成,如下:
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
我们可以点击网络下的第一个js接口,然后鼠标右键点击在“来源“面板中打开,然后在第一段js代码处下一个断点,之后把cookie中值清空,然后刷新一下网页。
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
然后在控制台上输入下述代码

(function(){
    let a = '';
    Object.defineProperty(document,'cookie',{
        set:function(val){
            console.log(val);
            a = val;
            return val;
        },get:function(){
            return a;
        }
    });
})();

然后把断点解开,可以发现此时控制台会打印出一些还没有生成的cookie中值,如下。
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
然后把上述我们自己写的代码也下一个断点,如下:
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
之后把cookie值清空,然后再刷新界面,然后再在控制台上输入上述代码,然后解开断点,可以发现如下:
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
点击堆栈中项,可以找到cookie中的值生成来源。
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
由于下断点的js文件可能不是第一个执行的js代码,而且在html界面也有js代码,所以即使断住,cookie中的值也生成了一部分。

Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
如果觉得这样比较繁琐(毕竟需要刷新两次,那么用下述代码,多加个debugger)

(function(){
    let a = '';
    Object.defineProperty(document,'cookie',{
        set:function(val){
            debugger;
            console.log(val);
            a = val;
            return val;
        },get:function(){
            return a;
        }
    });
})();

然后解开断点,依旧可以在堆栈中获取到cookie中值生成的断点。

3. 调式中遇到debugger问题

就是打开开发者工具下,我们自己没有下断点,然后浏览器开发者工具会在源代码下某个文件下自动断住(使用debugger),防止你进行调试操作。

3.1 解决方式(一律不在此处暂停)

在debugger这一行左边鼠标右键点击一律不在此处暂停选项,然后再刷新当前界面,可以正常进行调试操作(如果有多个这样的,执行上述重复操作[一律不在此处暂停])。
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript

3.2 问题:点击一律不在此处暂停之后解开断点,出现卡死(页面卡死)

Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
就是按照上述3.1那种方式进行处理,浏览器出现卡死现象(原因:前端js 构造器 构造debugger函数,还在继续写入,从而导致内存溢出)。对这个debugger的堆栈下某一项进行断点操作,然后刷新当前界面,可以发现界面构造了一个debugger操作,如下:
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
解决方式,在源代码下->显示导航栏->更多标签页->代码段->添加新代码段,随便起个名称,然后输入如下代码:

aa = Function.prototype.constructor;
Function.prototype.constructor = function(name) {
    if(name == 'debugger'){
        return function(){};
    }

    return aa(name);
}

然后点击右下角Ctrl+Enter进行注入,然后解开断点,此时页面不会出现卡死现象。
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
[注]:需要注意是要等页面完全加载之后才进行注入操作。

3.3 问题:无法打开开发者工具(网站检测)

就是无论用那种方式(按电脑键盘F12、鼠标右键点击检查),在界面上都无法打开开发者工具进行调试(即使打开开发者工具下,刷新网页,又会出现其他检测,防止我们进行调试操作或者其他操作)。
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
此时选择浏览器选项->更多工具->开发者工具,强制打开开发者工具。
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
出现debugger,进入debugger,发现 检测我们操作的js如下:
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript
发现它对浏览器宽度进行的检测(除开发者工具之外的地方的宽度),可以通过把开发者工具停靠在单独的窗口,这样我们可以继续我们自己的调试或者其他操作。
Python爬虫:js逆向调式操作及调式中遇到debugger问题,爬虫,js逆向,python,爬虫,javascript文章来源地址https://www.toymoban.com/news/detail-645425.html

到了这里,关于Python爬虫:js逆向调式操作及调式中遇到debugger问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python爬虫之JS逆向基础小案例:网抑云数据获取

    嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 所用软件 解释器: python 3.8 编辑器: pycharm 2022.3 使用的模块 第三方模块: requests 数据请求 execjs pip install pyexecjs 内置模块(无需安装): nodejs 模块安装: win + R 输入cmd 输入安

    2024年01月20日
    浏览(37)
  • Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接

    1. 前言 文章内容可能存在版权问题,为此,小编不提供相关实现代码,只是从js逆向说一说到底怎样实现这个的过程,希望能够帮助到那些正在做js逆向相关操作的读者,需要代码的读者单独私信我吧!不过,需要注意的是: 代码仅供学习,不能用于商业活动,望读者切记。

    2024年02月15日
    浏览(51)
  • 【Python爬虫案例】抖音下载视频+X-Bogus参数JS逆向分析

    选择自己感兴趣的抖音博主,本次以“经典老歌【车载U盘】”为例 每次请求的页面会有很多接口,需要对接口进行筛选: 第一步筛选XHR筛选 第二步筛选URL中带有post 通过筛选play_add值找到视频的地址 通过对比两次请求发现只有X-Bogus数值会有变化,max_cursor是用翻页,后文再

    2024年03月15日
    浏览(82)
  • Python爬虫:通过js逆向获取某视频平台上的视频的m3u8链接

    1. 前言 现在我们在网页端看的视频,其前端实现原理就小编目前知道的而言,总的有两点:其一,直接就是一个mp4(或其他类似的)视频链接,如果我们能得到这个视频链接,直接用这个链接就能下载到这个视频;其二,和第一点差不多吧!但是直接用链接下载,获取不到视频文

    2024年02月08日
    浏览(36)
  • 什么是Python爬虫分布式架构,可能遇到哪些问题,如何解决

    目录 什么是Python爬虫分布式架构 1. 调度中心(Scheduler): 2. 爬虫节点(Crawler Node): 3. 数据存储(Data Storage): 4. 反爬虫处理(Anti-Scraping): 5. 分布式通信和协调(Communication and Coordination): Python爬虫分布式架构代码示例 1. 调度中心(scheduler.py): 2. 爬虫节点(crawl

    2024年02月10日
    浏览(33)
  • 【爬虫逆向案例】某道翻译js逆向—— sign解密

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 相信各位小伙伴在写爬虫的时候经常会遇到这样的情况,一些需要携带的参数一直在变化,今天逆向的这个网站某道翻译也如此: 可以发现变的就两个参数,一个 sign,一个是 m

    2024年02月15日
    浏览(34)
  • WebSocket爬虫与JS逆向实战

    声明:本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!由于本人水平有限,如有理解或者描述不准确的地方,还望各位大佬指教!! 练习网站: Q3JhenkgUHJvTW9ua2V5IGh0dHBzOi8vd3d3LnBhbnpob3UuZ292LmNuL3p3Z2tfMTU4NjEve

    2024年02月07日
    浏览(33)
  • 【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 今天逆向的这个网站 某易云音乐 歌曲的评论列表 而要拿到评论列表爬虫发送的表单需要两个参数 params 和 encSecKey。这两个玩意是加密的,所以重点就是怎么搞定这两个参数。 话

    2024年02月14日
    浏览(32)
  • 爬虫+RPC+js逆向---直接获取加密值

    免责声明:本文仅做技术交流与学习,请勿用于其它违法行为;如果造成不便,请及时联系... 目录 爬虫+RPC+js逆向---直接获取加密值 target网址: 抓包 下断点 找到加密函数 分析参数 RPC流程 一坨: 二坨: 运行py,拿到加密值 优志愿_2024高考志愿填报系统-新高考志愿填报选科指南 数据往

    2024年04月14日
    浏览(23)
  • 21.网络爬虫—js逆向详讲与实战

    前言 : 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️: Python领域新星创作者,CSDN实力新星认证,阿里云社区专家博主 📝​📝第一篇文章《1.认识网络爬虫》获得 全站热榜第一,python领域热榜第一 。 🧾 🧾第四篇文章《4.网络爬虫—Post请求(实战演示)》 全站热榜第八 。

    2024年02月02日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包