古语有云:工欲善其事,必先利其器。

作为逆向的开始,这个自然是无法避免的,毕竟js逆向的环境是浏览器,而浏览器自然为开发做了很多工具,方便再开发的时候检测开发过程中是否有问题,就像开发过程中debug。而本篇就是简单聊一下浏览器的这些功能,不过侧重于逆向使用。

浏览器

说浏览器其实本质是聊Devtools这个工具,现在所有的浏览器几乎都有这个功能了,而国产的一些也有 大同小异,可以快捷键F12或者鼠标右键(chrome选择查看 ,360极速版是审查元素)然后根据自己的浏览器选择不同的选项即可。

看一下chrome和360两者的对比图:

当然也有一些区别,不过说实话,有些不同也没有关系,目前用不到。现在依次聊一下在逆向中常用的一些功能:

  • 控制台

    这个地方可以输入一些JavaScript,也可以打印某个变量的内容是什么。也可以通过立即执行函数来一个hookjs(当然也是有使用条件的后面聊)。

  • 元素

    这个可以查看页面的元素结构,然后后面又一个其功能框,其中在逆向中可能使用最多的就是对事件的监控,比如查看点击事件有哪些,以及具体在页面中写在哪里。

  • 网络

    这个地方显示所有的网络请求,其中有两个选项 保留日志停用缓存。前者可以保留有些重定向的请求,所以一般的时候勾选上,停用缓存:这个涉及到是否页面缓存数据,然后下次请求时候从本地取出不需要从页面再次缓存,这个看需求吧,有的网站需要勾选上,有的不需要。后面具体演示再说。

    可以过滤请求,以及选择不同请求,比如xhr,图片等。还可以搜索页面请求的中包含的某内容的请求。

然后点击某个请求会出现下面窗口:

这个最重要的是标头,也就是请求头,里面包含请求时候带的数据,以及请求的方式。(这个下面单独说不再这里说了。)还可以看见响应的数据,以及启动器,这个可以显示这个数据是通过哪些js调用的,有时候逆向的时候也是重要的获取加密所在js文件的简单方式:

  • 源代码

    这个位置我们打断点,以及debug的时候用的界面,也可以选择debug中网络请求,以及事件等操作。

在开发的时候,这个用来查看代码逻辑,来检查每执行依次JavaScript得到的结果是否有问题,而在逆向中,这个本用来查看源数据加密过程在哪里,方便我们扣取,上面的有进入方法,跳出方法等。

  • 应用程序

    这个可以一般我们用来手动清除cookie等缓存信息的,因为有些数据请求缓存下面就无法再触发,我们进行删除。

不过有时候我们更习惯用浏览器的其它模式请求比如chrome中无痕模式

或者360浏览器中的隐身窗口

不同的浏览器有不同的叫法,其都是一种各自页面缓存不影响其它缓存。方便我们观察页面的完成加载过程。

  • 浏览器模式切换

点击这个会让pc浏览器模拟成手机浏览器。

  • 搜索内容

    在网络的过滤是过滤请求,其搜索是搜搜请求头以及请求连接中包含的内容。而这个搜索可以搜索js等文件中包含的内容,这个也是逆向常用的一个功能。

当然这个搜索也有一些小技巧后面聊。然后搜到的目的点击出现的文件,就到文件的源码了,然后可以打上断点进行调试了。

fiddler

这个又是一个神奇工具,也是对网络数据包进行抓取的工具,不过其只能抓取http或者https的请求,也就是网络经典的七层模型中的应用层数据包,还有一个传输层的UDP,TCP就无能为力了,这个可能需要另一个神奇的软件Wireshark.Wireshark可以抓取几乎所有的请求,因此其不好的地方,那就是数据请求的包也会多很多,其中筛选准确的请求包也难。如果需要后面再来,本篇暂时不提。

fiddler在逆向中可以看到网站去请求更多,比如浏览器中忘了点击保存日志等。还有两个重要的作用

  • **作为代理:**这个在pc网站逆向时候用的较少,而是在移动端通过代理,通过设置代理,让其走fiddler然后抓取其数据包,不过目前大多数的手机app都开始走传输层协议了比如TCP或者UDP,所以有点困难,当然也有app支持应用层协议和传输层协议但是优先传输层协议,需要通过hook关闭传输层协议才可以抓取到,如果有机会就演示一下。

    这个我就不再演示了,毕竟网上有很多教程,我就不再重复了,大家自行百度一下。

  • **js本地调试:**这个在网站逆向的时候常用的一种方式,那就是因为有些加密js是动态生成的,每次生成一次,但是不会变,因此就算打断点在调试的时候也不会有效果,而通过fiddler带有的工具,进行替换,让其某个调用加密js的请求被隔离,每次调用本地那js。

补充

请标头的一些信息,找一个例子解释一下:

标头一般在浏览器中显示3部分:

  • 常规 :这里显示请求方式,以及路径,状态码还有服务器地址

  • 响应头: 这个是请求数据后,返回出内容以外,包含响应头的信息。一般逆向的时候我们不太关心这个,当然也有不是绝对不关心:比如第一个请求响应数据中的某个数据作为了下一个请求的请求头数据。

  • **请求头 **: 如果响应头是服务器请求后带有的信息,那么请求头就是请求数据带有的参数信息,其中包含着如果得到一个正确响应必须带有的参数,不然不会返回数据。用来举例说明的话:请求路径相当于到达保险箱的路径,而这个请求头就是保险箱的密码。所以这一部分,是重点查看的部分。

简单了解参数的意义

有些请求信息上面图片中没有,但是下面会简单的补充说一下。

  • METHOD 请求方法

    请求方法有多种,但是一般常用的是GET和POST,当然还有很多OPTION,PUT等几种方式。主要了解GET和POST即可;

    • GET 在请求地址上回暴露请求参数,比如这样 https://www.mm.com?name1=value1&name2=value2.

      这样直接暴露在眼中,当然其长度也是有限制,不可能无限多的参数。

    • POST 其参数发送给服务器,但是不会在网络看出来:https://www.mm.com。其参数信息可以很大

  • 响应码 请求服务器,返回请求的状态。一般表示请求成功是200,但是多嘴说一下这个是默认成功的响应码,服务器可以返回比如900为成功。一般可以相信但是不要全信。

    常见的有:200 – 服务器成功返回网页,302—请求的地址被重定向,404----请求的网页不存在,503—服务器不可用。

  • Accept 浏览器可接受的数据类型。

  • Accept-Charset 浏览器可以接受网页的编码格式

  • Accept-Encoding 浏览器能够进行解码的数据编码方式,gzip表示页面内容是压缩的。

  • Accept-Language 浏览器所希望的语言种类,不过国内一般都是中文了,所以意义不大

  • Authorization 授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。

  • Connection 是用于 HTTP持久连接 的字段,是HTTP 1.0版本定义的,在HTTP 2.0版本没有这个请求字段,用的是用的是更先进的直接基于TCP层次的连接管理。如果是Keep-Alive,表示开始永久连接,在 HTTP 1.1 中 所有的连接默认都是持续连接,除非特殊声明不支持。目前服务器端默认为 5-15 秒,可以设置。请求都走这个通道,而这个通道的数据可以共享,减少下载数据所用的时间。

  • Content-Length 表示请求消息正文的长度。用来指明发送给接受方的消息主体的大小。Content-Length如果存在并且有效地话,则必须和消息内容的传输长度完全一致。否则就会导致异常 (特别地, HTTP1.0中这个字段可有可无);

    • Content-Length首部指示出报文中实体主体的字节大小。这个大小是包含了所有内容编码的, 比如,对文本文件进行了gzip压缩的话
    • Content-Length首部指的就是压缩后的大小而不是原始大小。
  • Cookie 是逆向中比较重要的请求头字段,其一般是请求的时候会生成,也有的是通过服务器响应生成(Set-Cookie),也可能是两者相结合,具体看情况如何了,这里面会含有很多信息。如果想要仔细了解可以看一下传送阵

  • Host 初始URL中的主机和端口。一般显示为一个域名地址。

  • Referer 包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。简单的说就是当你向一个服务器发起请求的时候,因此你需要通过http请求头中的referer字段告诉该服务器,这个访问是从哪里来的,一般逆向中都是请求数据的xhr中的请求头参数,意思是来自这个页面的一个请求数据。

  • Pragma 指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。

  • User-Agent 浏览器类型,说明这个请求时用的什么浏览器请求的,在爬虫中一般必带的请求字段之一。

在逆向中为什么要了解请求头的信息,因为很多事时候这些字段不带其中一个就无法得到想要的数据,虽然我们不需要将其理解的透彻无比,但是还是需要了解的。

js逆向调试工具

这个就很多了比如pycharm中配好nodejs环境,或者第三方的调试工具,其中集成了很多常用的加密方式等很好用

  • 乐易编程助手

  • 鬼鬼js调试工具

这些都是第三方的,看个人习惯用什么进行调试,还有一种调试那就是在浏览器控制台中,进行调试,虽然不方便,但是有有时候面对js调试不成功的时候不知道是浏览器指纹(这个概念后面聊)导致还是语法蜜罐(本来是易编程中的一对代码优化的名字,但是在逆向中就恶心了,去其还会包装一个方法来查询是否被调试而导致格式等变化而进入死循环)

本篇就是简单了解工具,如果有些不太熟悉,就查询一下资料。或者后面有用到的时候再具体展开聊。

爬虫逆向 js逆向常用工具简单介绍相关推荐

  1. Python爬虫之Js逆向案例(8)-某乎x-zst-81之webpack

    声明:某乎加密逆向分析仅用于研究和学习,如有侵权,可联系删除 大家好,相信各位童鞋通过上期<Python爬虫之Js逆向案例(7)-知hu最新x-zse-96之rpc方案>这篇文章了解了什么 ...

  2. Python爬虫之Js逆向案例(6)-某道翻译

    Python爬虫之Js逆向案例(6)-有道翻译 声明:某道翻译加密逆向分析仅用于研究和学习,如有侵权,可联系删除 大家好,距离上次分享js逆向案例已经有一个月了,在这期间每次在快要揭秘出来时.整理文章 ...

  3. Python爬虫之Js逆向案例(2)-某乎搜索

    Python爬虫之Js逆向案例(2)-知乎搜索 声明:某乎加密逆向分析仅用于研究和学习 大家好,今天继续分享关于某乎关键词搜索接口为案例的Js逆向实战.如果你是一名新手,而且还没有来得及看上一篇< ...

  4. python3爬虫进阶JS逆向学习(十一)

    目的 目的:JS逆向的学习与交流 目标:分析咪咕音乐参数 目标网址:https://music.migu.cn/v3 // 若有侵权,请联系作者删除,谢谢! 思路分析 一.内容概览 二.请求参数分析 ...

  5. Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接

    Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接 1. 前言 2. 实现过程 3. 运行结果 1. 前言 文章内容可能存在版权问题,为此,小编不提供相关实现代码,只是从js逆向说一说到 ...

  6. 文本处理工具简单介绍

    文本处理工具简单介绍 1.文本文件查看 分页查看more,less 显示文本前面或后面的行内容 head 显示文件或标准输入的前面行 tail 与 head 相反 抽取文本cut 合并文件 2.分析文 ...

  7. Linux网络常用工具分类介绍

    Linux网络命令较多,单纯的介绍网络命令的用法也没什么意思.本文将常见的网络命令进行分类,并做出思维导图,对每个分类的命令选择性的介绍其作用.常见选项和用法举例.BTW,不建议记住所有命令,了解一下 ...

  8. ifle网页服务器,iFile怎么使用 iFile常用功能简单介绍【详解】

    iFile怎么使用? iFile是一款强大的文件管理器.拥有包括移动.粘贴.复制.建立文件夹链接.解压.压缩.上传下载.搜索.编辑文件.播放影音文件等等;基本可以媲美 Mac 上类似的文件管理功能. ...

  9. 做爬虫,JS 逆向了解一下

    爬虫是大数据时代不可或缺的数据获取手段,它是综合技术的应用体现. 有取就有失,有攻就有防. 开发者为了保护数据,不得已想出了很多办法来限制爬虫对数据的获取. WEB 网站的构成使得 JavaScrip ...

最新文章

  1. 一加7t人脸识别_一加7T系列国行版开启预约 谷歌Pixel 4系列高清图曝光
  2. Binder相关面试总结(四):一次Binder通信的基本流程是什么样?
  3. DGA短域名(360样本) mark下 下次分析可以参考
  4. m3u8 video ios h5_【H5】iOS系统下的video视频播放完后重新刷新视频
  5. Ado.Net实现简易(省、市、县)三级联动查询,还附加Access数据
  6. android manifest简介
  7. 【直播回放】150分钟详解模型压缩理论和实践
  8. 背景透明的 Dialog
  9. 安卓新发布机制----app bundle
  10. 聊聊浏览器(webkit)资源加载机制
  11. 8.卷2(进程间通信)---读写锁
  12. javascript高级程序设计---document节点
  13. 关于Session过期和失效
  14. 无主之地1代人物和故事背景…
  15. 如何解决Access denied for user ''@'localhost' (using password: NO)错误
  16. 【P04】运放全差分放大器实现单端与平衡的相互转换
  17. 【重识云原生】计算第2.4节——主流虚拟化技术之KVM
  18. 同事的你--写给那些离职的同事们
  19. bitbucket和git的使用
  20. tensorflow.python.framework.errors_impl.InvalidArgumentError 0 successful operations.0 derived erro

热门文章

  1. 参考文献格式字号字体_关于论文格式要求及字体大小
  2. opencv 识别长方形_opencv识别正方形(矩形)代码(转)
  3. 厉害!6 岁学编程,19 岁收月薪 2 万 的 Offer | 程序人生 2020
  4. php操作redis命令
  5. 2018中文EI收录情况
  6. 华为 、锐捷、新华三、睿易网络设备怎么选
  7. 微信小程序的简单登录
  8. UCOSIII实时操作系统------软件定时器
  9. 基于百度云主机的USDP 2.x 安装详细教程
  10. 跑分超小米10,“性能旗舰”iQOO 3 5G未发先火!