【Python】【进阶篇】十六、Python爬虫的浏览器实现抓包

news/2024/7/19 11:31:31 标签: 爬虫

目录

  • 十六、Python爬虫的浏览器实现抓包
    • 16.1 控制台界面
      • 16.1.1 NetWork
      • 16.1.2 Sources
      • 16.1.3 Console
      • 16.1.4 Application
    • 16.2 数据包抓取
    • 16.3 看变化规律

十六、Python爬虫的浏览器实现抓包

几乎所有浏览器都提供了抓取数据包的功能,因为浏览器为抓包提供了一个专门的操作界面,因此这种抓包方式也被称为“控制台抓包”。

控制台抓包指的是利用浏览器开的发者调试工具抓取客户端与后端服务器交互的数据,它能够将网络传输中发送与接收的数据进行截获、重发和编辑。

控制台抓包非常适合于 POST 请求类型。我们知道,POST 请求使用 Form 表单向服务器提交数据,通过抓包可以获取 POST 请求体的数据以及相应参数,从而对响应内容进行分析。

16.1 控制台界面

关于开发者调试工具,您应该不会感到陌生,它除了有检查网页结构、元素构成的功能外,还有许多其他重要功能,比如抓取数据包。下面对如何抓包做重点介绍。

首先访问有道翻译网站,然后使用快捷键 F12 打开控制台,并找到Network选项卡,最后在有道翻译的输入框内输入“hello world”进行翻译,控制台主界面如下所示:
图 1:开发者调试工具
图 1:开发者调试工具

下面对上图 1 中控制台的常用选项做简单介绍:

16.1.1 NetWork

该选项主要用于抓取网络数据包,比如查看请求信息、响应信息等。它有三个常用选项卡,分别是 All、XHR、JS,其作用如下:

  • All : 抓取所有的网络数据包
  • XHR : 抓取所有异步加载的网络数据包
  • JS : 抓取所有的JS文件

16.1.2 Sources

该选项主要用于查看页面的 HTML 、JavaScript 、CSS 的源代码,除此之外,最重要的是它还可以调试 JS 源代码,可以给 JS 代码打断点调试,有助于分析爬虫程序中的一些参数。

16.1.3 Console

交互模式,能够执行 JavaScript 代码,一般用于对当前程序中 JS 代码进行测试,同时也可以查看 JavaScript 对象,或者调试日志、异常信息等。

16.1.4 Application

该选项用于查看、修改本地存储(Local Storage)以及会话存储(Session Stroage)等,同时它也可以用来查看 Cookie 信息。

Cookie 是网站服务器为了辨别用户身份,而储存在客户端浏览器上一段加密字符串。某些网站需要用户登录后才可以看到相应的数据。如果想要爬取此类网站的数据,就需要使用 Cookie 模拟用户登录。

16.2 数据包抓取

有道翻译采用了 JS 异步加载的方式获取翻译结果,并将该结果渲染到指定的输出框内。所谓异步加载,即不需要刷新页面,就可实现页面的局部渲染。对于这样数据,可以通过 NetWork 的中 XHR 选项来抓取数据包,并选择查看最后一个数据包,如下图 2 所示:
图2:抓取数据包
图2:抓取数据包

因为异步加载几乎是实时响应的,所以当您在输入框内输入“hello world”的过程中,每输出一个单词都会向服务器发送一次异步请求(若输出很慢时,一个字母都会发送一次请求),除非您事先将要查询的单词复制好,一次性粘贴到输入框内,只有这样才会得到一个数据包。因此,在这里选择了最后一个数据包进行分析。

接下来,对上图 2 中常用选项做简单介绍:Headers 用来描述整个请求信息,Preview 用来对响应内容进行预览,Response 用于查看响应内容,Cookies 用于查看客户端 Cookie 信息。
图3:预览响应内容
图3:预览响应内容

16.3 看变化规律

在有道翻译的输入框内多输入几个单词或者汉字,查看 Form Data 的变换规律。你会发现有些参数的值总是变化的,而有些参数值没有变化,比如 salt、sign、lts 总是变化的,而 bv 等参数是不变化的,而参数 i 代表用户输入的单词。如下所示:

i: hello world   #你输入的单词
salt: 16161405904876   
sign: a6f9d57d297acc79f31b049e2a542519
lts: 1616140590487
bv: cda1e53e0c0eb8dd4002cefc117fa588

经过分析,最终您会发现如下规律:lts 代表毫秒时间戳;salt 和 lts 之间存在着某种关联,因为两者只有最后一个数字是不同的;而 sign 对应的值是一个加密后的字符串。在下一节我们将讲解如何破解有道翻译,将它作为 API 接口实现在线实时翻译。

抓包是分析请求、响应数据,以及监视 HTTP(S) 通信的常用方法,它能够帮助我们明确要请求的 URL、请求参数/参数值、Cookies,以及其他响应信息,这对于构建 POST 请求方法十分重要。

除了使用浏览器自带的调试工具外,您也可以使用 Fiddler 抓包工具,这款软件不仅适用于 Web 抓包,同样也适用于手机移动端抓包, 如果感兴趣的话可以点击了解Fiddler。


http://www.niftyadmin.cn/n/210338.html

相关文章

运用Navicat 实现 DML(对表的数据进行增删改)

如何使用Navicat呢? 当Navicat配置好后,链接上数据库后。 点击查询后tables中的任意一个新建查询,这时就会跳出一个查询编辑器。 我在初始sql是就创建了stu表。这里就不创建了。 先选择需要的表, select * from 表名; 添加&…

mysql体系结构、Innodb体系架构

文章目录Mysql体系结构Innodb体系架构内存池后台线程存储文件Mysql体系结构 我们一般可以将mysql结构分为四层. 第一层是客户端连接器,主要包括了数据库连接、认证、安全管理等.该层引入了线程池,对接入的连接进行了管理,提高效率. 第二层是server层,主要实现sql的一些基础功…

每天分享五款工具,让你的工作办公更顺心

快乐不是在于拥有什么,而在于我们和别人分享什么。每天分享五款工具,让大家工作办公更顺心就是我最大的快乐。 1.绘画——Krita Krita是一款免费的开源绘画软件,适合专业和业余的绘画爱好者,支持多种画笔和图层。你可以使用Krita来创作各种…

学习一把 docker ,把运维的yml文件拿来看看

目录 学习一把 docker,先来一波注释: 再来一波注释: external: true 是什么意思? 外部怎么创建这个网络呢? 程序运行时候 jar包 在容器中的那个目录下? extra_hosts: - "nacos-headless:192.16…

二十、Javascript API (二)

1.Notification API 1.1 权限 Notifications API 有被滥用的可能,因此默认会开启两项安全措施: 通知只能在运行在安全上下文的代码中被触发通知必须按照每个源的原则明确得到用户允许 页面可以使用全局对象 Notification 向用户请求通知权限。这个对…

Java基础知识-String篇​

目录 1、基本知识 2、String、StringBuffer和SringBuilder的区别 3、为什么把String定义成final? 4、String不可变的好处 5、s.intern()方法的作用:Java中的字符串驻留(String Interning)_abc6772的博客-CSDN博客 6、和equa…

MicroPython 基本语法

MicroPython 是编程语言 Python3 的精简高效实现,语法和 Python3 保持一致,但只实现了 Python 标准库的一小部分,并且经过优化,可以在 MCU , WIFI SOC 上等资源受限的环境中使用,所以我们在使用 MicroPytho…

【洛谷 P5015】[NOIP2018 普及组] 标题统计 题解(字符串)

[NOIP2018 普及组] 标题统计 题目描述 凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符? 注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字 符数时,空格和换行符不计算在内。 输入格式 …