爬虫逆向 js逆向常用工具简单介绍

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

作为逆向的开始,这个自然是无法避免的,毕竟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调试不成功的时候不知道是浏览器指纹(这个概念后面聊)导致还是语法蜜罐(本来是易编程中的一对代码优化的名字,但是在逆向中就恶心了,去其还会包装一个方法来查询是否被调试而导致格式等变化而进入死循环)

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

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值