浏览器抓包

1、异步加载

异步加载的英文简称是ajax,即“Asynchronous Javascript And XML”(异步JavaScript和XML)是指一种创建交互式网页应用的网页开发技术。它可以在无需重新加载整个网页的情况下,通过在后台与服务器进行局部数据交换,使得网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的特定部分进行更新。

2、异步加载过程

打开浏览器,并通过网址链接到主网页之后,浏览器会自动加载HTML文档,而同时内嵌的js脚本也会通过异步加载方式初始化一部分数据,这些js脚本加载过程与浏览器渲染html的过程并不相互影响。当用户在浏览器界面的特定位置点击或者实施某些html动作时,这些动作会驱动对应位置的js脚本执行其预定义的事件函数,构建XHR请求,这些XHR请求与服务器进行部分数据交互,返回数据之后,再通过回调函数操作对应位置html元素,将数据插入对应位置,至此数据交换的流程结束。

而对于我们而言,其实想要找的就是异步加载请求对象,通过截获这些请求,伪装成浏览器的身份,进而替代浏览器完成数据请求,并获取返回数据。这些异步请求在Chrome的开发者工具中往往都能截获到。

3、浏览器抓包示例

按F12进入开发者工具工作台

Elements模块是浏览器加载后后的带有数据得完整HTML文档

Network模块涉及到所有的浏览器与web服务器之间的交互请求记录。

all子菜单中,是所有请求列表,它包含了请求的所有dom文件、js脚本、css重叠样式表、img文件(图形对象)、Media文件(流媒体文件)、字体文件等。

XHR子菜单中,你可以看到这些加载文件中,以异步加载方式进行的文件对象。(xhr就是XMLHttpRequest的缩写)

这些请求对象一般包含两类:

一类是.js文件,这些文件是javascript脚本文件,它们是事件驱动函数,是动作中介,尽管所有的异步加载请求都是由它们发起,返回数据也是由它们负责接收并且插入html文档的,但是它们本身并不包含数据,仅仅是一组脚本函数而已。所以在xhr中所有带有js结尾的文件都可以略过。

第二类是剩余的那些带有参数的链接、或者是以.json结尾文件。这些对象便是以上所说的js脚本构建的异步加载请求的目标,也是我们想要截获的请求。

eg:打开网易云课堂得主页,按F12进入开发者工具工作台,输入jmeter检索,查看信息

可以通过定位到Preview项目,看里面的json格式的数据包,打开后里面的内容与我们页面看到的信息一致时,这时确定截获了想要的请求。

 

 

查看第一个菜单Headers,Headers中一共四个模块,分别对应我们抓包分析中构造浏览器请求的四大部分。

General模块,确定请求URL、请求方式:POST

Requests模块,确定Cookies、Content-Type(请求参数提交格式)、Referer(请求定位的参照页)、User-Agent(设备类型)、edu-script-token(当前进程信息)

Resposes模块,确定请求返回数据的格式:Content-Type,决定着我们使用什么函数处理返回值。

Request Payload模块,决定提交参数信息(提交方式由Requests模块的Content-Type参数决定)

 

 可以用postman或jmeter模拟测试

请求类型:POST

请求资源地址:http://study.163.com/p/search/studycourse.json

请求查询表单参数:(发送前需要序列化为json对象)

 

参考链接:https://blog.csdn.net/kmd8d5r/article/details/79103119

posted @ 2022-12-19 16:07  小飘扬  阅读(989)  评论(0编辑  收藏  举报