你想逆向我的 js 代码?呵呵,先过了我的反 debug 再说吧!

有时候我们在爬取

某个用 js 渲染的网站

需要去分析一下

别人网站的数据展示规则

这个时候就不得不用 Chrome 的 DevTools 进行分析了

对于一般的网站
我们在具体的位置
打个断点就可以进行调试了
不过有一些网站
当你打开 DevTools 的时候
你都还没打断点
他妈的直接就这样了
一直 debug
只要一按 F2 就一直 debug
就算你运行过去
还是一直 debug
一直调用
卡死你
卡死你
卡死你
就是不让你进行调试
你奈我何
哇靠啊
怎么解决呢
接下来就是
学习反反 debug 的正确姿势

来来来
莫慌
小帅b先跟你说说
在 Chrome 的开发者工具中
怎么样在代码里面打断点
我们最常用的操作
就是在想要打断点的代码行左侧
用鼠标轻轻点一下
就可以生成一个图标
然后就可以对这行代码
开始进行调试了
这样的操作
也可以直接在代码中操作
使用 debugger 这个
关键字就可以了
比如这样的 js
console.log('a');

console.log('b');

debugger;

console.log('c');

当 Chrome 在运行的时候
发现了 debugger
就会停下来
进入调试模式
其实在代码中
声明 debugger
就和我们点击代码行
左侧进行调试是一样的
也正是因为这个关键字
所以就可以从它入手
只要在首页的 js 中
写一个方法
不断的循环执行 debugger
比如
while true{    debugger;}
那么当我们打开这个网页
的调试面板的时候
就会不停的处于 debug 模式
即使你疯狂的点击运行按钮
也无济于事
其实 Chrome 有一个忽略断点的功能
只要在代码行左侧
点击右键
选择 Never pause here  即可
然后就会有个黄色的标识
当下次运行到这里的时候
就会忽略这个断点
这对于一些简单的很有效
但是
有些比较变态的就没那么容易了
比如这个
就算我忽略了
它还是会疯狂进入 debug 模式
看看右边的 Call stack
一直疯狂的调用 _0xa3e3cc
吃你的内存
把你搞的不要不要的
那怎么办好呢?
只能看看它的源码了
可以看到
2949 行
一直在递归调用_0xa3e3cc 函数
所以
我们才会一直处于 debug 模式
既然已经问题出现在哪里了
那就想办法把这个给搞掉
还记不记得我们
之前说的 mitmproxy
没错
这次走它的代理
然后拦截这个网页
把 js 中的 debugger 代码去掉
然后我们不用受这个罪了呀
快点开启我们的 mitmweb
设置地址拦截
浏览器设置好代理
打开代理之后访问一波
这时候被我们拦截下来了
请求我们直接让它过去
因为我们只要拦截返回的数据
然后对它进行修改
ok
现在我们就拦截到返回的数据了
修改一下代码
点击这支笔
可以看到现在的代码难看
复制出来用编辑器打开吧
把调用递归的代码去掉
把 debugger 关键字换成 return
复制到 mitmweb 替换
右上角的勾给打上
然后运行
此时此刻
浏览器得到的就是修改过的文件
打开 F12
可以看到
不会在一直 debug 恶心我们了
可能不同的网站
反 debug 的实现不同
思路就是这么个思路
以不变应万变
下回见了哦
peace
猜你还想看

扫一扫

学习 Python 没烦恼

(0)

相关推荐

  • 如何通过vscode运行调试javascript代码

    方法一: 在 js 后缀文件中写 javascript 代码. 1. 环境配置: (1). 需要安装 nodejs (在Bing搜索中输入 nodejs, 找到nodejs官网,然后找到适合你电脑配置 ...

  • 你不知道的16条JavaScript调试技巧

    JavaScript调试是业内公认的难题.但一旦你掌握技巧,了解了工具本身,便能节省一大把时间.以下16条调试技巧,可供您在下次调试JavaScript代码时使用! 这些技巧大多数都适用于Chrome ...

  • 写 Node.js 代码,从学会调试开始

    张挺 前端试炼 1周前 在纷繁复杂的代码世界中,出错是难免的,也许在传统的前端代码中,你习惯于 console 来排查问题,这是不合理的,在现代的社会下,调试代码是你最快找到问题的方法. 这篇文章就是 ...

  • 使用 VS Code 调试 Node.js 的超简单方法

    前端技术优选 以下文章来源于掘金开发者社区 ,作者iceytea 掘金开发者社区掘金,一个帮助开发者成长的技术社区 原文地址:The Absolute Easiest Way to Debug Nod ...

  • 破解前端定时debugger反调试

    前言今天在某群里,有伙计抛出了一个页面求助大家,说是get不到前端源码.本着强烈的好奇心,我就点开页面一探究竟,发现页面每100ms断点一次,严重影响代码分析.本篇我们就来一步一步破解,这里先附上网站 ...

  • 如何使用 Python 执行 js 代码?

    为什么要引出Python执行js这个问题? 都说术业有专攻,每个语言也都有自己的长处和短处.在爬虫方向,Python绝对是扛把子,近几年随着AI的火爆,需要各种各样的数据,所以,爬虫需求也跟着水涨船高 ...

  • 用原生JS代码实现的一个图文并茂的随机点名小应用

    用原生JS代码实现的一个图文并茂的随机点名小应用

  • 想让我放弃考研?呵呵

    每年的此刻,一部分同学就进入了不断的自我怀疑期:各种原因学不进去!专业课书好多,这么久了,还没过完第一遍!努力学了很久,但感觉进入了学习的高原期-- 于是,有一个声音慢慢地响起,我到底行不行吗?这种折 ...

  • 译文:优化JS代码的34种方法(下)

    原文链接:https://medium.com/javascript-in-plain-english/34-javascript-optimization-techniques-to-know-in ...

  • 优化高性能JS代码的几个要点,以及背后的原理

    WEB前端开发社区 昨天 写在前面 作为一个前端开发人员,我一直难以理解学习计算基础知识的重要性,这是因为我难以想象这些知识会以何种方式应用到前端开发的工作上. 然而在csapp 优化程序性能 这一节 ...

  • 译文:优化JS代码的34种方法(上)

    原文链接: https://medium.com/javascript-in-plain-english/34-javascript-optimization-techniques-to-know-i ...

  • 00后小男孩不想写作业,敲代码黑掉校园网,如今21岁的他咋样了?

    学生的本分是学习,在这个年龄阶段,正是积累知识的关键时候.然而,老师布置的作业必不可少.作业在每一个人的学生时代来说都是一种不小的烦恼,有时候,偶尔也会产生不想写作业的想法.看来完成作业已经成为青少年 ...

  • 快递天天“被签收”,我真的想对这种操作说句呵呵

    真的忍不住要吐槽了.今天收到短信后立刻去拿快递,还是被迫给了钱,我很不爽.我说我没有同意快递小哥签收,顺丰阿姨说,放在这里都是签收了的,你要讲道理.我真的只能说呵呵. 虽然签收一次不过一块钱,但谁的钱 ...