自学Python爬虫js逆向(二)chrome浏览器开发者工具的使用

js逆向中很多工作需要使用浏览器中的开发者工具,所以这里以chrome为例,先把开发者工具的使用总结一下,后面用到的时候可以回来查询。

Google Chrome浏览器的开发者工具是前端开发者的利器,它不仅提供了丰富的功能用于开发、调试和优化网页,还以其用户友好的接口而受到广泛欢迎。

打开一个网页,比如www.baidu.com,按下Ctrl+Shift+i 可以看到页面右半部分出现了如下的画面:

右边这部分就是开发者工具页面

这一排就是开发者工具的面板菜单,我们主要用到其中的4个面板:Elements(元素) Console(控制台)Sources(源代码) Network(网络),下面挨个来说

1、Elements(元素)面板

这里显示的是网页对应的HTML代码,一些静态网站的数据直接在这里就可以得到。

在这里我们可以修改Dom 和 Css 来调整我们网站的布局和设计,并且可以对网页内容做一个简单修改。比如这里我们调皮一下,把下面这个标签修改一下:

然后打开页面,就看到效果:

2、Console(控制台)面板

在控制台面板中,可以看到网页运行的一些诊断信息,或者可以使用它与页面上的javascript进行交互。

它可以理解为一个编辑器,我们经常用console输出变量的值,用console.log console.info console.error等不同形式打印信息,方便我们观察调试代码

console.count可以统计方法调用的次数

console.table可以以表格形式显示数据

我们在console面板中间的编辑器里先定义一个变量data,然后用console.table展示出来

console.copy方法可以复制变量的值

$_记录了最后一次在console中计算的表达式的值

$('.subject')可以找出所有类为subject的DOM

$x()可以结合xpath查看DOM内容

比如我们在网站上找到一个标签,在Element面板里找到这个标签,右键复制xpath地址

然后打开Console面板,在编辑器里输入如下代码

可以看到该标签内容被正确显示了出来。

3、Sources(源代码)面板

这是js逆向中使用最多的面板,因为网站的源代码都在这,我们就是要从中找到规律才能突破反爬获取数据。在这个面板中,我们可以通过设置断点来调整JavaScript的运行,或者使用我们的工作区域来连接本地文件,来使用开发者工具自带的实时编辑器来修改我们的源代码

可以看到sources面板分为三个部分:左边的是文件导航窗口,中间的是编辑器窗口,右边的是调试窗口。

3.1  调用本地文件

点击中间窗口的 select folder, 如果标题栏弹出要求获取权限的提示,点击允许

这时候就可以在local文件夹下看到我们准备好的本地文件

在这里可以对它进行打断点、调试等操作。

左边导航窗口的右箭头打开,选择overrides标签,可以进行本地代理操作

本地代理操作的意思是将远程的资源下载一份在本地,然后可以在开发者工具下进行编辑,开发者工具会更新展示我们编辑后的文件,即可以直接将一些请求代理到本地的文件当中,以更好地观察请求的运行情况。

点击 Select folder for overrides,跟上面一样添加一个本地文件夹local,也要允许权限,然后还要勾选 Enable Local Overrides。这时候我们就可以进行本地代理操作了。

打开Network,选择一个请求右键弹出菜单,选择override content

界面回到overrides,在中间编辑窗口就可以对文件进行修改,保存之后就可以在页面上看到效果

3.2 Snippets面板:

是一个代码片段工具,可以在该部分预先编辑好一些功能代码,在需要的时候方便运行。比如我们放一个常见的All Colors 脚本,用来输出RGB的颜色

// allcolors.js
// https://github.com/bgrins/devtools-snippets
// Print out CSS colors used in elements on the page.(function () {// Should include colors from elements that have a border color but have a zero width?var includeBorderColorsWithZeroWidth = false;var allColors = {};var props = ["background-color", "color", "border-top-color", "border-right-color", "border-bottom-color", "border-left-color"];var skipColors = {"rgb(0, 0, 0)": 1,"rgba(0, 0, 0, 0)": 1,"rgb(255, 255, 255)": 1};[].forEach.call(document.querySelectorAll("*"), function (node) {var nodeColors = {};props.forEach(function (prop) {var color = window.getComputedStyle(node, null).getPropertyValue(prop),thisIsABorderProperty = (prop.indexOf("border") != -1),notBorderZero = thisIsABorderProperty ? window.getComputedStyle(node, null).getPropertyValue(prop.replace("color", "width")) !== "0px" : true,colorConditionsMet;if (includeBorderColorsWithZeroWidth) {colorConditionsMet = color && !skipColors[color];} else {colorConditionsMet = color && !skipColors[color] && notBorderZero;}if (colorConditionsMet) {if (!allColors[color]) {allColors[color] = {count: 0,nodes: []};}if (!nodeColors[color]) {allColors[color].count++;allColors[color].nodes.push(node);}nodeColors[color] = true;}});});function rgbTextToRgbArray(rgbText) {return rgbText.replace(/\s/g, "").match(/\d+,\d+,\d+/)[0].split(",").map(function(num) {return parseInt(num, 10);});}function componentToHex(c) {var hex = c.toString(16);return hex.length == 1 ? "0" + hex : hex;}function rgbToHex(rgbArray) {var r = rgbArray[0],g = rgbArray[1],b = rgbArray[2];return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);}var allColorsSorted = [];for (var i in allColors) {var rgbArray = rgbTextToRgbArray(i);var hexValue = rgbToHex(rgbArray);allColorsSorted.push({key: i,value: allColors[i],hexValue: hexValue});}allColorsSorted = allColorsSorted.sort(function (a, b) {return b.value.count - a.value.count;});var nameStyle = "font-weight:normal;";var countStyle = "font-weight:bold;";function colorStyle(color) {return "background:" + color + ";color:" + color + ";border:1px solid #333;";};console.group("Total colors used in elements on the page: " + window.location.href + " are " + allColorsSorted.length);allColorsSorted.forEach(function (c) {console.groupCollapsed("%c    %c " + c.key + " " + c.hexValue + " %c(" + c.value.count + " times)",colorStyle(c.key), nameStyle, countStyle);c.value.nodes.forEach(function (node) {console.log(node);});console.groupEnd();});console.groupEnd("All colors used in elements on the page");})();

运行后效果:

3.3 常用断点

在Sources(源代码)面板中我们经常会进行一些断点调试,这里总结一下常用的几种断点:

条件断点:

我们先准备一段测试代码放到Snippets

console.log("断点测试");
let i = 0;
while (i<10) {console.log("本轮测试开始");console.log("现在i的值为:"+ i);// debugger;console.log("本轮测试结束");i++;
}console.log("断点测试完成");

然后在代码行号点右键,弹出菜单里面选择  Add conditional breakpoint

在弹出的菜单里填写条件i=4,并在右边的watch里添加一个监控的变量 i

再次运行代码片段,发现运行到 i 的值为4时,程序就停住了

XHR断点:

我们先打开Network面板,勾选 XHR/fetch,然后刷新一下百度网站,看看有没有xhr请求

发现了一个,先不用管这请求是干嘛用的,我们截取前面一段字符串 sugrec ,然后点开Sources面板,在右边的XHR/fetch Breakpoints 标签右边点击 + 号增加一个xhr断点,然后把刚刚的字符串填进去,这样当网页再次发起包含 “sugrec" 这个字符串的xhr请求时,就会断点停下

再次刷新网站,发现果然断点了

DOM 断点:

在元素列表,找到想要断点的元素,点击右键,在弹出菜单里选择Break on => subtree modifications

然后在Sources面板里就可以看到该断点

当该元素发生改变的时候,就会断点停到这里

事件断点:

我们打开一个网站的登录界面,选择登录按钮,看到按钮的type是一个 submit,意味着这里调用了一个submit事件,我们打开Sources面板,选择Event Listenner Breakpoints => Control => submit 

这样每当这个事件调用的时候,这里就会断点停到这里

3.4 工具栏介绍

最后再来说下右边的调试窗口最上方的这一排小图标

第1个 是暂停按钮,当运行到断点时会变成蓝色箭头,点击恢复执行直到下一个断点

第2个 是直接执行下一行然后直接就跳转到下一行

第3个 是如果下一行包含一个函数调用的话,就会进入到函数内部,并且在这个函数的第一行断上

就是经常会说的 追进去

第4个 是跳出当前函数的调用

第5个 是单步按钮,表示执行下一步

第6个 是暂时禁用所有的断点,用于恢复正常的执行

4、Network(网络)面板

这也是JS逆向中经常使用到的面板,在这个面板中可以用来抓包、查看每个请求的请求头、响应、以及它所耗费的时间等信息。

它包括控制器、过滤器、概览和请求

4.1 控制器

控制器可以用来控制我们网络面板的一个外观还有功能

第1个红色按钮控制是否抓包。

第2个是清除现有列表中的所有请求。

第3个是过滤器网格的开关。

第4个是一个搜索开关,打开可以出现一个搜索界面。

第5个是控制是否进行跨页面加载保存请求。不勾选的话,跨页面请求的时候之前的请求就会被清除。

第6个是控制是否禁用浏览器缓存。如果不勾选的话我们每一个请求都会去请求新的浏览器资源。

第7个是慢速网络模拟。可以使用slow 3G 或者离线状态来看一下浏览器在不同网络环境下请求是什么样子的。

4.2 过滤器

过滤器可以用来控制请求列表,显示哪些资源,比如说通过点选 Fetch/XHR,可以只显示异步请求(XHR),点选img标签,可以只显示图片资源。也可以通过Ctrl来多选。最左边的选择框可以进行关键字筛选,比如我们可以 输入 www.baidu.com 直接筛选出来自 www.baidu.com网站的请求。

4.3 概览

这里显示的是每个请求的时间线。

4.4 请求

这部分是重点。网页访问过程中的每一个请求都会被记录在这里。请求列表默认是以请求的时间顺序排列。这里可以看到请求的一些信息:Name(请求的名称)  Status(状态码) Type(请求类型)Intiator(请求来源) Size(请求大小) Time(请求时间) 等等,这里最重要的是请求来源,可以看到请求的发起方,这很重要,很多时候我们可以通过它是从哪里发起的来判断它的JS大概是哪一个。

选中某个请求之后还可以看到该请求的详细情况:

Headers是请求头,包含了很多请求的信息。

Preview可以预览,比如图片啊之类的。

Response可以查看返回的数据。

Cookies 可以查看相关的cookies数据。

Timing 可以看到请求的耗时。

Tips小技巧1:用postman快速写一个爬虫:

随便找一个请求点击右键,选择 Copy as cURL(bash)注意:选别的格式postman不认。

然后在postman中打开import

在弹出的对话框中把刚刚复制的cURL地址粘贴进来,

然后界面跳转到如下,点击右边的这个</>符号

然后在右边会弹出相应的代码,如果显示的不是python代码,就点击这个下拉菜单,选择python-request,得到python爬虫代码

复制右边这些代码,到python程序中去执行,即可得到结果

tips小技巧2:查看依赖关系

选择一个请求,按住shift键,鼠标上下移动并悬停,可以看到下面显示红色的请求,都是依赖上面的请求而来

相反,我们按住shift键,选中某个请求,发现另一个请求是绿色的,则表示绿色的请求是该请求的发起者。

5、其他面板

其他面板jsweb逆向用到的不多,大致了解一下即可。

Performance(性能)面板:可以通过时间轴记录、查看网站生命周期内发生的各项事件来了解页面运行性能。

Memory(内存)面板:可以用来分析页面的执行时间以及内存的使用情况。

Security(安全)面板:可以用来调试混合内容问题、证书问题等等。

Application(应用)面板:可以记录网站加载的所有资源信息,比如cookie或者缓存数据、字体、图片、脚本、样式表等等。也可以清除网站数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/4676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是中间件?中间件有哪些?

什么是中间件&#xff1f; 中间件&#xff08;Middleware&#xff09;是指在客户端和服务器之间的一层软件组件&#xff0c;用于处理请求和响应的过程。 中间件是指介于两个不同系统之间的软件组件&#xff0c;它可以在两个系统之间传递、处理、转换数据&#xff0c;以达到协…

排序算法(2)快排

交换排序 思想&#xff1a;所谓交换&#xff0c;就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置&#xff0c;交换排序的特点是&#xff1a;将键值较大的记录向序列的尾部移动&#xff0c;键值较小的记录向序列的前部移动。 一、冒泡排序 public static…

uniapp:K线图,支持H5,APP

使用KLineChart完成K线图制作,完成效果: 1、安装KLineChart npm install klinecharts2、页面中使用 <template><view class="index"><!-- 上方选项卡 --><view class="kline-tabs"><view :style="{color: current==ite…

stm32单片机开发四、USART

串口的空闲状态时高电平&#xff0c;起始位是低电平&#xff0c;来打破空闲状态的高电平 必须要有停止位&#xff0c;停止位一般为一位高电平 串口常说的数据为8N1&#xff0c;其实就是8个数据位&#xff08;固定的&#xff09;&#xff0c;N就是none&#xff0c;也就是0个校验…

【多模态大模型】AI对视频内容解析问答

文章目录 1. 项目背景2. 直接对视频进行解析进行AI问答&#xff1a;MiniGPT4-Video2.1 MiniGPT4-Video效果 3. 对视频抽帧为图片再进行AI问答3.1 视频抽帧3.2 图片AI问答3.2.1 阿里通义千问大模型 Qwen-vl-plus3.2.2 Moonshot 1. 项目背景 最近在做一个项目,需要使用AI技术对视…

618科技嘉年华!五款极致科技产品,开启智能生活新篇章!

准备好迎接一年一度的618了吗&#xff1f;这不仅仅是一场购物的狂欢&#xff0c;更是一次科技的盛宴&#xff0c;一次智能生活的全新启航。今年&#xff0c;我们将带来五款令人瞩目的极致科技产品&#xff0c;它们将彻底颠覆你对智能生活的认知。从娱乐到工作&#xff0c;这些产…

百度语音识别的springboot应用

1、pom依赖 <dependency> <groupId>com.baidu.aip</groupId> <artifactId>java-sdk</artifactId> <version>4.16.18</version> </dependency> 2、测试的demo 创建语音识别应用 百度智能云-管理中心 (baidu.com) 代码中要…

常用图像加密技术-流密码异或加密

异或加密是最常用的一种加密方式&#xff0c;广泛的适用于图像处理领域。这种加密方式依据加密密钥生成伪随机序列与图像的像素值进行异或操作&#xff0c;使得原像素值发生变化&#xff0c;进而使得图像内容发生变化&#xff0c;达到保护图像内容的目的。 该加密方法是以图像…

基于python-flask技术的社区信息交流平台【数据库+15000文档】

预览 介绍 系统只需使用者通过电脑浏览器即可实现系统的访问和操作的WEB模式的信息化系统。为了保证系统数据的准确性、安全性的数据存储&#xff0c;系统应用MySQL数据库进行系统数据存储服务。根据对社区工作的深入调研和对社区居民的走访调查&#xff0c;详细分析整体系统的…

短信验证码绕过漏洞(一)

短信验证码绕过漏洞 0x01原理&#xff1a; 服务器端返回的相关参数作为最终登录凭证&#xff0c;导致可绕过登录限制。 危害&#xff1a;在相关业务中危害也不同&#xff0c;如找回密码&#xff0c;注册&#xff0c;电话换绑等地方即可形成高危漏洞&#xff0c;如果是一些普…

【VS+QT】visual studio 2022配置和搭建QT

一、下载QT 可以去QT官网下载:https://www.qt.io/product/development-tools。 直接安装。 二、安装qt插件 打开visual studio 2022&#xff0c;选择菜单栏中扩展->管理扩展 ,然后直接在vs插件市场搜索Qt Visual Studio Tools就行。 安装的时候根据提示&#xff0c;关闭…

YOLov5 + Gradio搭建简单的Web GUI

写在前面&#xff1a;当我们将模型训练出来了&#xff0c;此时就需要做UI界面给别人展示了。python提供的Gradio可以快速的搭建web页面。生成本地网址和公网网址&#xff0c;方面自己测试和用户测试。 一、安装 Gradio介绍 Gradio是一个开源的python库&#xff0c;用于构建机…

react完整项目搭建的思路

react完整项目搭建的思路 react完整项目搭建的思路1.使用creacte-react-app初始化项目2.安装所需插件:路由、网络、样式、组件库3.reactjs目录结构组织4. 配置路径别名4.配置路由5.网络配置,对axios进行封装》获取当前环境变量 6.配置代理解决跨域7.配置使用iconfont8.状态管理…

浅析扩散模型与图像生成【应用篇】(十七)——LDM

17. High-Resolution Image Synthesis with Latent Diffusion Models 该文首次提出在潜在特征空间中的扩散模型LDM&#xff0c;也是大名鼎鼎的Stable Diffusion&#xff08;SD&#xff09;模型的基础。不同于之前的扩散模型直接在图像维度上进行扩散和去噪&#xff0c;LDM首先训…

C++拷贝构造函数的合成

默认构造函数和拷贝构造函数在必要的时候才由编译期合成出来 文章目录 拷贝构造函数编译器合成拷贝构造函数的四种情况情况一 一个类有一个带有拷贝构造函数的类对象成员变量情况二 派生类的基类有一个拷贝构造函数类声明了一个或多个虚函数情况四 类派生自一个继承串联且有一个…

JUC-并发编程19-定时任务定时线程池-ScheduledThreadPoolExecutor

1、结构图 2、初识 ScheduledThreadPoolExecutor用来处理延时任务或定时任务。 流程如下&#xff1a; 2.1 定时任务分为四种 如下&#xff1a; 未来执行一次的任务&#xff0c;无返回值&#xff1b; 未来执行一次的任务&#xff0c;有返回值&#xff1b; 未来按固定频率重复…

安川YASKAWA机器人FS100控制箱维修全攻略

本文将一起探讨安川机器人控制箱维修和YASKAWA机械手FS100控制柜故障&#xff0c;从故障诊断到维修技巧。注意&#xff0c;在安川机械臂控制器FS100维修过程中&#xff0c;遇到复杂的问题&#xff0c;不要犹豫&#xff0c;及时联系子锐机器人&#xff0c;让您的机器人重获新生&…

chrome 安装devtools

chrome 安装devtools 下载安装 链接&#xff1a;https://github.com/vuejs/devtools 选择对应版本&#xff1a; 安装yarn 下载 npm install -g yarn --registryhttps://registry.npmmirror.com进入下载的目录安装依赖 yarn install --registryhttps://registry.npmmirror.…

一篇了解reactor框架特性

一篇了解reactor框架特性 本文档的一些典型的名词如下&#xff1a; Publisher&#xff08;发布者&#xff09;、Subscriber&#xff08;订阅者&#xff09;、Subscription&#xff08;订阅 n.&#xff09;、subscribe&#xff08;订阅 v.&#xff09;。event/signal&#xff0…

抖音 通用交易系统 下单 密钥生成

已PHP为例 前提提条件 必须在 linux 系统中 生成 准备工作 在小程序中 生成应用公匙 把生成的公匙 复制 在linux 系统中 创建文件 private_key.pem 并将公匙粘贴 接下来打开命令 执行命令即可 openssl genrsa -out private_key.pem 2048 rsa -in private_key.pem -pubo…