当前位置: 首页 > news >正文

Python3 爬虫 数据抓包

一、数据抓包

        所谓抓包(Package Capture),简单来说,就是在网络数据传输的过程中对数据包进行截获、查看、修改或转发的过程。如果把网络上发送与接收的数据包理解为快递包裹,那么在快递运输的过程中查看里面的内容,这就是抓包。

二、Charles的介绍和使用

        在分析异步加载的网页时,Chrome的开发者工具非常好用。通过在开发者工具的“Network”选项卡中寻找被加载的数据,然后用Python模拟出这个数据的请求,从而直接访问网站的后台接口,就可以得到数据。
        但是开发者工具有一个特别不方便的地方,那就是没法对数据进行搜索。如果想知道一个特定的异步加载内容来自哪个请求,必须在“Network”选项卡里面一个请求一个请求地进行查看。如果一个网页的请求有几百个,那么这样寻找起来是非常费时、费力的。要简化寻找数据的过程,就需要设法直接全局搜索网页的所有请求的返回数据。
        为了实现这个目的,就需要使用Charles。Charles是一个跨平台的HTTP抓包工具。使用它可以像Chrome一样截取HTTP或者HTTPS请求的数据包。同时Charles还有Chrome所不具备的很多奇妙功能。

三、Charles的安装和使用

        Charles是一个收费软件,官方网站地址为https://www.charlesproxy.com/。如果没有注册,安装以后的前30天可以正常使用。30天以后,虽然功能不会缩水,但每过30分钟Charles会自动关闭一次。
        Charles有Windows 32位/64位版、Mac OS版和Linux 64位版。读者可在下载页面选择符合自己系统的版本进行下载。
        Charles的下载和安装没有任何难点。在Windows系统中,直接双击安装文件进行安装即可,任何设置都不需要修改,同意许可协议以后,一直单击“Next”按钮直到安装完成;在Mac OS系统中双击下载下来的.dmg文件,同意许可协议以后,把Charles的水瓶图标拖到Application这个文件夹里面即可。安装完成后,第一次运行Charles会弹出一个对话框,提示需要获取权限来自动配置网络,单击“Grant Privileges”按钮并输入系统密码运行即可。

四、Charles的使用

        Charles上面滚动的数据就是目前计算机发起的数据包。单击工具栏上面的黄色笤帚图标,可以清空当前的数据包记录;单击笤帚右边的红色圆点图标,可以停止抓包,且红色圆点变成灰色圆点。暂停以后再单击灰色圆点,Charles恢复抓包。在Charles启动时,系统自带浏览器的所有HTTP流量都会经过Charles,此时可以看到数据包。在数据包非常多的情况下,使用Charles的过滤功能来对数据包进行过滤从而减少干扰。在Filter这一栏中输入域名,就可以显示只包含这个域名的数据包;单击“Filter”输入框下方的“Contents”按钮,查看数据包的详细信息。

        如果浏览器是Chrome,在没有安装第三方代理插件的情况下,Chrome的HTTP流量都会经过Charles。但是如果安装了第三方的类似于SwitchyOmega这种代理插件,那么就可以在插件里面添加一个代理,代理IP为127.0.0.1,端口为8888。在Chrome使用这个代理的情况下,就可以正常让Charles监控流量了,计算机上的任意软件,如果支持自定义代理的功能,那么设置代理IP为127.0.0.1,端口为8888,也可以让Charles监控这个软件。当Charles抓包以后,在Mac OS系统下可以按Command+F组合键,在Windows系统下按Ctrl+F组合键打开Charles进行搜索。​

    ​    ​有一点需要注意,JSON里面的中文是无法直接搜索到的,为了搜索到中文,需要首先在Python里面创建一个带中文的字典或者列表,然后把它转换成JSON,再从JSON中复制出中文对应的Unicode码来进行搜索。

五、抓取HTTPS数据包

        如果使用Charles直接抓取HTTPS的数据包,就会出现大量的Method为CONNECT的请求,但是这些请求又全部都会失败。出现这种情况,是因为没有安装SSL证书导致的。要安装SSL证书,可选择菜单栏的“Help”- “SSL Proxying”-“Install Charles Root Certificate”命令。

        对于Mac OS系统,“钥匙串访问”窗口会自动弹出来,Charles的证书已经出现在了其中;双击Charles证书所在的这一行,在新打开的窗口中展开“信任”三角形按钮,将“使用此证书时”设定为“始终信任”;关闭这个弹出来的窗口,系统会自动弹出输入密码的窗口,输入密码以后,证书就安装好了。

        对于Windows系统,选择菜单栏中的“Help”- “SSL Proxying”-“Install Charles Root Certificate”会自动弹出证书信息,单击“安装证书”按钮,打开证书导入向导然后,单击“下一步”按钮,选择“将所有的证书都放入下列存储”单选按钮,单击“浏览”按钮,在弹出的对话框中选择“受信任的根证书颁发机构”,单击“确定”按钮。单击“下一步”按钮,会弹出一个警告对话框,单击“是”按钮完成证书安装。

        无论是Windows还是Mac OS系统,完成了证书的安装以后,剩下的操作就一致了。

        安装好证书以后,选择菜单栏中的“Proxy”-“SSL Proxying Settings”命令打开SSL代理设置对话框,在SSL代理设置对话框,单击“Add”按钮,在“Host”输入框中输入星号,在“Port”输入框中输入443,设置好证书和SSL代理以后;再回到浏览器刷新网页,就可以看到Charles成功截获到了数据包。

六、App爬虫和小程序爬虫

        使用Charles,可以轻松截获手机App和微信小程序的数据包,从而开发出直接抓取App后台和小程序后台的爬虫。为了实现使用Charles抓取手机的数据包,就需要先把证书安装到手机上。

6.1 iOS系统的配置和使用

        对于苹果设备,首先要保证计算机和苹果设备联在同一个Wi-Fi上。选择Charles菜单栏中的“Help”-“Local IP Address”命令,此时弹出一个对话框,显示当前计算机的内网IP地址。接下来设置手机。进入系统设置,选择“无线局域网”,然后单击已经连接的这个Wi-Fi热点右侧的圆圈包围的字母i的图标;选择“HTTP代理”下面的“手动”选项卡,在“服务器”处输入计算机的IP地址,在“端口”处输入8888;输入完成代理以后按下苹果设备的Home键,设置就会自动保存。注意,计算机上立刻就会弹出一个对话框,询问是否允许一台设备通过计算机代理上网;单击“Allow”按钮,允许以后,只能使用iOS系统自带的Safari浏览器访问https://chls.pro/ssl。此时会弹出一个对话框,询问是否显示配置描述文件,单击“允许”按钮。

        允许配置描述文件后会自动弹出对话框,单击右上角的“安装”按钮,弹出另一个对话框,显示描述文件信息;安装完成证书以后,在设置中打开“关于本机”,找到最下面的“证书信任设置”,并在里面启动对Charles证书的完全信任。这样,一个证书就在iOS设备上安装好了;安装好证书以后,打开iOS设备上的任何一个App,可以看到Charles中有数据包在流动。

        有了Charles,要抓取文章信息,根本不需要先在计算机网页上打开网站,再写XPath。在Charles的帮助下开发一个App后台的爬虫,就像开发一个异步加载的爬虫一样简单,而且结果直接就是JSON,转换成字典以后直接就能存到MongoDB里面,极其方便。

6.2 Android的配置和使用

        要实现Charles对Android抓包,其过程比iOS稍微复杂一点。这是因为不同的Andorid设备,安装证书的入口可能不一样,这就需要根据自己手机的实际情况来寻找。
        首先在Charles中选择“Help”-“SSL Proxying”-“Save Charles Root Certificate”命令,将Charles的证书保存到计算机桌面。
        为了在手机上安装证书,需要先发送证书到手机里面。如果计算机系统为Windows,那么直接插上USB线就可以传送。如果计算机系统是Mac OS,那么可以使用QQ传文件或者微信的文件传输助手把证书文件发送到手机里面。

        虽然Android里面安装证书的位置可能不同,但一般都在“系统设置”-“WLAN”里面。打开Wi-Fi功能,有的Android系统,这个界面的左下角或者右下角可能有3个点,点开以后是一个高级设置的菜单。而另一些Android手机的系统,例如小米手机的MIUI系统,则是直接在最下面就可以找到高级设置;选择“高级设置”,打开高级设置界面,继续选择“安装证书”;系统会打开文件浏览器,在里面找到刚才发送到手机上面的证书文件。找到证书并单击“确定”按钮,此时会弹出一个窗口,提示给证书设定一个名字,这个名字可以任意设定。

        单击“确定”按钮,证书就安装好了。接下来和iOS一样,需要为手机设置代理,让手机的流量经过Charles。在系统设置中打开当前连接的Wi-Fi设置界面,并将代理设置为Charles对应的IP和端口号。和iOS不同的是,Android设置了代理以后需要单击“确定”按钮。代理设置好以后,Android的环境就搭建好了。在手机上任意打开一个App,就可以看到Charles上面有数据在流动。

6.3 微信小程序爬虫

        使用Charles抓取微信小程序的步骤与抓取App几乎没有区别。当使用Charles监控iOS设备或者Android设备的数据包以后,打开微信小程序,小程序的数据包就会自动被Charles抓住。
小程序的请求极其简单,基本上没有验证信息,即便有验证信息也非常脆弱。用Python来请求小程序的后台接口从而获取数据,比请求异步加载网页的后台接口要容易很多。在爬虫开发过程中,如果目标网站有微信小程序,那么一定要优先调查能否通过小程序的接口来抓取数据。小程序的反爬虫能力比网页版的低很多。使用小程序的接口来爬数据,能极大提高爬虫的开发效率。

七、Charles的局限

        Charles只能截获HTTP和HTTPS的数据包,如果网站使用的是websocket或者是flashsocket,那么Charles就无能为力。
        有一些App会自带证书,使用其他证书都无法正常访问后台接口。在这种情况下,Charles自带的证书就不能正常使用,也就没有办法抓取这种App的数据。
        有一些App的数据经过加密,App接收到数据以后在其内部进行解密。对于这种情况,Charles只能抓取到经过加密的数据。如果无法知道数据的具体加密方法,就没有办法解读Charles抓取到的数据。

--------------------------------------

没有自由的秩序和没有秩序的自由,同样具有破坏性。

--------------------------------------


 

相关文章:

Python3 爬虫 数据抓包

一、数据抓包 所谓抓包(Package Capture),简单来说,就是在网络数据传输的过程中对数据包进行截获、查看、修改或转发的过程。如果把网络上发送与接收的数据包理解为快递包裹,那么在快递运输的过程中查看里面的内容&…...

js强制刷新

在JavaScript中触发强制刷新通常指的是强制浏览器重新加载页面,忽略缓存。以下是几种实现强制刷新的方法: ### 使用 location.reload() 这是最简单的方法,它会重新加载当前页面。 javascript location.reload(true); // 传入true参数表示强制…...

yolov5 part2

two-stage (两阶段):Faster-rcnn Mask-Rcnn系列 one-stage (单阶段):YOLO系列 最核心的优势:速度非常快,适合实时监测任务。但是缺点也有,效果可能不好 速度较慢在2018…...

Hive3:表操作常用语句-内部表、外部表

一、内部表 1、基本介绍 (CREATE TABLE table_name ......) 未被external关键字修饰的即是内部表, 即普通表。 内部表又称管理表,内部表数据存储的位置由hive.metastore.warehouse.dir参数决定(默认:/user/hive/ware…...

【PXE+kickstart】linux网络服务之自动装机

PXE: 简介:PXE(Preboot execute environment 是一种能够让计算机通过网络启动的引导方式,只要网卡支持PXE协议即可使用Kickstart 是一种无人值守的安装方式,工作原理就是预先把原本需要运维人员手工填写的参数保存成一个 ks.cfg 文…...

vmware ubuntu虚拟机网络联网配置

介绍vmware虚拟机配置基础网络环境,同时连接外网(通过桥接模式),以及ubuntu下输入法等基础工具安装。 本文基于ubuntu22.04,前提虚拟机已经完成安装。本文更多是针对vmware虚拟机的设置,之前有一篇针对ubun…...

Vue3_对接声网实时音视频_多人视频会议

目录 一、声网 1.注册账号 2.新建项目 二、实时音视频集成 1.声网CDN集成 2.iframe嵌入html 3.自定义UI集成 4.提高进入房间速度 web项目需要实现一个多人会议,对接的声网的灵动课堂。在这里说一下对接流程。 一、声网 声网成立于2014年,是全球…...

慧灵科技:创新引领自动化未来

在智能制造与自动化生产日益成为主流趋势的今天,慧灵科技凭借其卓越的技术创新能力和产品优势,在机器人领域崭露头角。 自2015年在深圳成立以来,慧灵科技专注于核心技术的研发与产品创新,‌为各行业提供性价比极高的机器人产品及自…...

【TiDB 社区智慧合集】TiDB 在核心场景的实战应用

作者: 社区小助手 原文来源: https://tidb.net/blog/5cc4ec70 杭州银行 杭州银行采用 TiDB 作为其核心系统数据库,标志着银行资产规模和业务复杂性的大幅增长。通过"分布式透明化"的思考,杭州银行实现了从传统 Orac…...

JetBrains:XML tag has empty body警告

在xml文件中配置时,因为标签内容为空,出现黄色警告影响观感。 通过IDE配置关闭告警...

XMLDecoder反序列化

XMLDecoder反序列化 基础知识 就简单讲讲吧,就是为了解析xml内容的 一般我们的xml都是标签属性这样的写法 比如person对象以xml的形式存储在文件中 在decode反序列化方法后,控制台成功打印出反序列化的对象。 就是可以根据我们的标签识别是什么成分…...

C# 高级数据处理:深入解析数据分区 Join 与 GroupJoin 操作的应用与实例演示

文章目录 一、概述二. 数据分区 (Partitioning)三、Join 操作符1. Join 操作符的基本用法2. Join 操作符示例 四、GroupJoin 操作符1. GroupJoin 操作符的基本用法2. GroupJoin 操作符示例 总结 在数据处理中,联接(Join)操作是一种非常常见的…...

数据库典型例题2-ER图转换关系模型

1.question solution: 2.做题步骤 一些解释&#xff1a; <1弱实体把强属性的主键写进去&#xff0c;指向强属性。eg:E6_A13指向E5_A13 <21:1&#xff0c;1:n&#xff0c;m:n&#xff1a;将完全参与的一方&#xff08;双线&#xff09;指向另一方&#xff0c;并将对方的…...

Java:设计模式(单例,工厂,代理,命令,桥接,观察者)

模式是一条由三部分组成的通用规则&#xff1a;它代表了一个特定环境、一类问题和一个解决方案之间的关系。每一个模式描述了一个不断重复发生的问题&#xff0c;以及该问题解决方案的核心设计。 软件领域的设计模式定义&#xff1a;设计模式是对处于特定环境下&#xff0c;经常…...

【算法】KMP算法

应用场景 有一个字符串 str1 "BBA ABCA ABCDAB ABCDABD"&#xff0c;和一个子串 str2 "ABCDABD"现在要判断 str1 是否含有 str2&#xff0c;如果含有&#xff0c;就返回第一次出现的位置&#xff0c;如果不含有&#xff0c;则返回 -1 我们很容易想到暴力…...

nginx续1:

八、虚拟主机配置 基于域名的虚拟主机 [rootserver2 ~]# ps -au|grep nginx //查看进程 修改Nginx服务配置&#xff0c;添加相关虚拟主机配置如下 1. [rootproxy ~]# vim /usr/local/nginx/conf/nginx.conf 2. .. .. 3. server { 4. listen …...

循环队列和阻塞有什么关系?和生产者消费者模型又有什么关系?阻塞队列和异步日志又有什么关系

### 循环队列和阻塞队列 #### 循环队列 - **定义**: 一个固定大小的数组&#xff0c;通过两个指针&#xff08;front 和 back&#xff09;管理队列的头部和尾部元素。 - **特点**: - **循环性**: 当指针到达数组的末尾时&#xff0c;可以回绕到数组的开头&#xff0c;从而利…...

物理笔记-八年级上册

0.梦开始的地方 物理研究什么&#xff1f; 电学&#xff0c;力学&#xff0c;声学&#xff0c;光学&#xff0c;热学。 1.1.1长度的单位 国际基本单位制 单位转换 魔法记忆&#xff1a;千米-米-毫米-微米-纳米&#xff08;进率都是1000&#xff09; 单位换算计算方法 用科学…...

QT键盘和鼠标事件

这些事件都在QWidget 中的保护成员方法中 都是虚函数在头文件中声明了 需要类外重现实现 如果头文件中声明 类外无实现就会报错 void Widget::keyPressEvent(QKeyEvent *event) {switch (event->key()) {//获取按键case Qt::Key_W://按键wqDebug()<<"按下w"…...

文件Io编程基础

1. 标准I/O (stdio.h) stdio.h 是标准C库的头文件&#xff0c;包含了输入输出函数的声明。位置&#xff1a;/usr/include/stdio.h 2. 文件I/O操作步骤 打开文件: 使用 fopen 函数&#xff0c;返回 FILE* 指针。读/写操作: 使用 fread、fwrite、fgets、fputs、fprintf、fscan…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...