爬虫(js逆向)网络基础协议与抓包原理-chrome开发工具-fiddler抓包-重放攻击(1)

创作不易,希望点个赞!
如果本文有任何问题错误,欢迎评论指正!

(点个赞!点个赞!点个赞!点个赞!点个赞!点个赞!)

在这里插入图片描述

一、网络协议

OSI模型与TCP/IP五层模型

一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

OSI模型有7层,TCP/IP为五层
爬虫的处理,只需要关注应用层:

  1. 应用层
  2. 表示层
  3. 会话层

2、HTTP发起请求的典型场景

在这里插入图片描述

3、HTTPS

HTTPS是身披SSL外壳的HTTP。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。

PS:TLS是传输层加密协议,前身是SSL协议,TLS由网景( Netscape )公司1995年发布,有时候两者不区分。

SSL是Netscape开发的专门用户保护Web通讯的,目前版本为3.0。TLS 1.0是IETF(工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。两者差别极小,可以理解为SSL 3.1。

4、TCP协议的“三次握手”与“四次挥手”

在这里插入图片描述

在这里插入图片描述

归根结底,开始,停止都是由客户端决定

详解(转载):
https://www.cnblogs.com/AhuntSun-blog/p/12028636.html
https://www.cnblogs.com/AhuntSun-blog/p/12037852.html

5、报文在抓包的时候是如何产生的

在这里插入图片描述

报文,通过headers每次经过层级,都会在层级前后加入首位

二、抓包原理

1、爬虫常见抓包工具

Fiddler Windows平台专用抓包软件(课程演示工具)

Charles macOS 平台下最好用的抓包分析工具之一

AnyProxy 阿里巴巴开源的 HTTP 抓包工具,基于 NodeJS 实现,可以进行二次开发

Mitmproxy 基于 Python,支持 SSL 的抓包工具。可以使用python代码控制(爬虫的一些 很骚的操作都是用该软件实现)

Wireshark 相对更加底层,更加古老的抓包工具,可以直接从网卡角度抓到包。这个工 具不适合于PC爬虫领域。(PC 99.999%都是http协议【也就是应用层】)

2、fiddler抓包工具原理

在这里插入图片描述

结论:

在TCP/IP模型中,Fiddler只能抓到应用层的包。如果想要看到 TCP/UDP、IP 甚至于 mac地址相关的报文,则需要更换抓包工具。这也就是为什么有很多数据包无法被Fiddler/Charles 捕获到的原因

3、HTTP协议工作原理

HTTP并不严格限制在 TCP/IP框架中,事实上HTTP可以在任何互联网协议上,或其他网络上实现。但是目前几乎都是在这个框架下进行实现的。

4、HTTP协议工作原理-浏览器地址栏键入URL后发生了什么?

  1. 浏览器构建请求行:GET / HTTP/1.1

  2. 查找强缓存(若命中则直接使用) HTTP/1.1中使用的是Cache-Control

  3. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;

  4. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;

  5. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;

  6. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;

  7. 释放 TCP连接(如果 keep-alive为关闭状态);

  8. 浏览器将该 html 文本并显示内容;

5、配置fiddler工具

非常棒的文章

https://blog.csdn.net/qq_22803691/article/details/104243501

6、利用fiddler工具autoresponder

6.1 编写规则

丁香人才招聘网
https://www.jobmd.cn/

fiddler抓到的包
在这里插入图片描述
添加规则(规则正确匹配到url,那么显示绿色,否则条目显示红色,比如我加了XXX)
在这里插入图片描述
将该url,报文响应保存到本地txt文件改名为html,添加规则指向文件
在这里插入图片描述
crtl+x快速清理fiddler抓包工具包,然后刷新丁香网
在这里插入图片描述
可以看到丁香网下面没有显示数据
在这里插入图片描述
并且抓包工具,出现紫色条目
在这里插入图片描述
这是因为,本地写了规则,规则是精确,其它非相关的接口并没有执行
在这里插入图片描述
更改为EXACT,记得保存,然后重新刷新丁香
在这里插入图片描述
显示了数据

在这里插入图片描述

6.2 本地修改映射html文件

pycharm打开规则指向的html文件,添加alert语句

在这里插入图片描述

刷新丁香网页,会看到先执行这个语句
在这里插入图片描述

6.3 结论

可以利用这一特性,进行调试,魔改!!!等等!一系列操作,debugger啥的

三、chrome开发者工具(DevTool)

DevTool官方文档:https://developers.google.cn/web/tools/chrome-devtools/

非常详细的文章(使用,面板说明都有,此处讲述常用的

https://blog.csdn.net/kissazhu/article/details/80865819

1、调试面板说明

下图摘自上述连接博客
在这里插入图片描述

2、逐步调试功能

在这里插入图片描述
1(Resume):恢复执行,直到下一个断点。如果没有遇到断点,则恢复正常执行
2(Step Over):执行下一行中发生的任何操作,并跳转到下一行
3(Step Into):如果下一行包含一个函数调用,Step Into将跳转到该函数并在该函数的第一行暂停
4(Step Out):执行当前函数的剩余部分,然后在函数调用后的下一个语句处暂停
5(Deactivate Breakpoints):暂时禁用所有断点。用于恢复完整的执行,而不实际删除已有的断点。再次单击可以重新激活断点

3、作用域

当脚本中断的时候,Scope(作用域)窗格将显示当前时刻所有当前定义的属性
在这里插入图片描述

4、调用堆栈

当js文件执行的时候,输出执行顺序
在这里插入图片描述

5、watch监控特定

实例监听a的值
在这里插入图片描述

6、DevTool –Workspaces-Overrides

在这里插入图片描述
将文件添加到本地
在这里插入图片描述
pycharm打开本地的html,在末尾修改,新增 alert 信息,刷新网页可以看到输出结果
在这里插入图片描述

四、运用fiddler工具-重放攻击

以下两个案例网址,私聊回复!!!
以下两个案例网址,私聊回复!!!
以下两个案例网址,私聊回复!!!

1、准备工作

过滤掉图片请求,连接请求
在这里插入图片描述

2、post请求规律案例

这是一个网址,分别点击了3次页数,分别返回不同的值,通过fiddler工具能看到
在这里插入图片描述
通过重放攻击还原请求
在这里插入图片描述
这里只请求一次,可以看到返回的数据并不是原先想要的

在这里插入图片描述

跟前面对比,发现,重放一次攻击,前成功返回数据,都是先请求了cityjson然后再请求api接口
在这里插入图片描述
试着先重放攻击cityjson,然后再试api
在这里插入图片描述
成功得到值

结论:

可以通过session,保持请求第一次后请求第二个api接口

3、headers顺序规律案例

同样的点了4页,都能返回数据,但是相较上面的,是通过一次请求后session再请求API,
而这个API是抓包工具,仅仅一个条目,那么说明只有这一个API
在这里插入图片描述

于是pycharm写代码
在这里插入图片描述
打开curl 工具 https://curl.trillworks.com/,直接生成python代码
在这里插入图片描述
此时通过代码请求API,发现返回的是js文件

  • 这里如果开启了fiddler,在pycharm会报错,因此采用fiddler代理,并且证书验证设置false

在这里插入图片描述
在这里插入图片描述
观察抓包工具,成功捕获的API,和失败的API,经过比对,请求头headers不太相同
利用代码比较工具
https://www.jq22.com/textDifference

复制成功的headers与失败的headers,进行比对
在这里插入图片描述

左边是失败的headers,右边是成功的headers,

在这里插入图片描述
相对右边有些许不同,但是忽略掉,只调整气位置,根据右边正确的调整大概调整左边位置,将其复制,修改headers,并且代码需要加入headers规则

  • python当中requests,并不会根据修改的headers来执行解析请求头
  • 所以需要修改指定程序执行顺序,否则这个案例还是失败
  • 通过session指定headers,这样就可以保证headers按照指定顺序执行
    在这里插入图片描述
    而后执行代码,成功输出数据

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值