Charles 抓包工具的使用

Charles 是一个网络抓包工具,我们可以用它抓取 APP 运行过程中产生的所有请求内容和响应内容,这和在浏览器开发者工具的 Network 面板中看到网页产生的内容是一样的道理

Charles , Fiddler 等都是非常强大的 HTTP 抓包软件,功能基本类似,本节我们选择 Charle 作为主要的移动端工具来分析 APP 的数据包,以便之后的数据爬取

本节目标

我们会以一个电影 APP 为例,利用 Charles 抓取这个APP 在运行过程中产生的网络数据包,然后查看具体的请求和响应内容

同时,我们会使用 python 改写抓取到的数据包中的请求,继而爬取 APP 数据

准备工作

Charles 运行在一个电脑上,运行时会在该电脑的 8888 端口开启一个代理服务,首先请确保已经正确安装好 Charles 并且开启了代理服务

然后准备一部 Android 手机或模拟器(系统版本最好在 7.0 以下),并让手机或模拟器的网络和 Charles 所在电脑的网络处于同一个局域网下(可以让模拟器通过虚拟网络与电脑连接,也可以让手机真机和电脑连接到同一个 WIFI )

之后设置好 Charles 代理和 Charles CA 证书, 在 Charles 中 开启 SSL 监听

另外需要在手机上下载 APP : https://app1.scrape.center   访问即可下载

注意: 为了方便,后面统一使用手机 指代 手机真机 或模拟器

Charles 安转和配置 : 写文章-CSDN创作中心

抓包原理

设置手机为 Charles 的代理服务地址,这样手机访问互联网的数据包就会先流经 Charles ,再由 Charles 转发给真正的服务器,同样服务器返回的数据包会先到达 Charles ,再由 Charles 转发给手机。

实战抓包

打开 CHarles 

Charles 会一直监听手机产生的数据包,捕获的数据包将显示在界面的左侧,随着时间的推移,会捕获越来越多的数据包,左侧列表里的内容页越来越多

现在打开手机上下载的 App,会发现 Charles 已经捕获了对应的数据包,要设置好代理及安全证书,否则没有效果

在 APP 上不断下拉, Charles 会捕获这个过程中产生的所有网络请求,可以看到左侧的列表中有一个 https://app1,scrape.center , 在 App1 里下拉的时候会一直闪动,就表示当前 APP1 发出的获取电影数据请求被 Charles 捕获了

为了验证其正确性,点击上述链接下的一个条目

至此可以确定, https://app1,scrape.center 对应的接口就是获取电影数据的接口。这样我们就成功捕获了在下拉过程中产生的请求内容和响应内容

分析

现在分析一下捕获的请求内容和响应内容的详细信息。首先回到 Overview 选项卡,界面右侧上方显示了请求 URL ,响应状态码 Response Code 和请求方法 Method 等信息

接下来点击 Contents 选项卡,查看请求内容和响应内容详情,上半部分显示的是请求信息,下半部分显示的是响应信息,切换到 Headers 卡伊看到请求头,切换到 JSON Text 可以看到响应体

由于这个是 GET 请求,所以还要关注 GET 参数信息,切换到 Query String 选项卡即可查看

对于其他 APP ,同样可以使用本节的分析方式。如果能直接分析出请求 URL 和参数规律,就可以直接模拟发出的请求批量抓取

重发 

Charles 还有一个强大的功能,是可以对捕获的内容加以修改并把修改后的请求发送出去,点击界面右侧上方的修改按钮,左侧就会出现一个以编辑图标为开头的接口,代表我们正在修改此接口对应的请求

可以修改请求参数中的某个字段,例如这里将 offset 字段的值由 0 修改为 10 ,然后点击界面下方的 Execute 按钮即可发送修改后的请求

可以发现左侧列表出现了对应的请求结果,点击 Contents 选项卡,查看响应内容,这次返回的是第二个列表页中的电影信息

有了重发功能,我们就可以方便的使用 Charles 做调试了

修改响应内容

除了修改请求内容 Charles 还可以修改响应内容,例如将响应内容修改为本地或远程的某个文件,这样就可以实现数据的修改和伪造了

怎么实现呢? 右键点击任意一个请求,可以看到出现的菜单中有 Map Remote 和 Map Local 两个选项,通过这两个选项就可以将响应内容修改为远程或本地文件以生成本地文件为例,可以先把当前的响应内容,也就是 JSON Text 的内容复制下来保存到本地文件,名为 data.json

然后修改其中的字段值,例如将第一条目的 name 值修改为 “霸王别姬2”, 保存修改 

再在 Map Local 的配置中,选定 data.json 文件的保存路径,这样,我们就把 app1 的第一个请求--加载列表页成功修改成本地文件 data.json 内容了,接下来重新启动 app1 

可以看到,第一个电影的名称变成了“霸王别姬2”,我们成功修改了响应内容

模拟爬取

现在我们已经成功完成了抓包操作, APP1 发出的所有请求一目了然,请求 URL 就是 https://app1.scrape.center/api/movie  , 后面跟着两个请求参数 offset 和 limit . 显然, offset 就是偏移量, limit 就是一次的返回结果中包含的条目数量。 例如 offset 为 20 , limit 为10 ,代表返回 第 21-30 条电影的信息,另外,通过观察可以发现一共有 100 个电影,因此 offset 取 0, 10 ,20 ,..... 90 , limit 则恒为 10 

接下来我们用python模拟一下请求,这里代码从简

import requestsBASE_URL = 'https://app1.scrape.center/api/movie?offset={offset}&limit=10'
for i in range(0, 10):offset = i * 10url = BASE_URL.format(offset=offset)data = requests.get(url).json()print('data', data)

输出结果,中间省略一大堆 

data {'count': 103, 'results': [{'id': 1, 'name': '霸王别姬', 'alias': 'Farewell My Concubine', 'cover': 'https://p0.meituan.net/movie/ce4da3e03e655b5b88ed31b5cd7896cf62472.jpg@464w_644h_1e_1c', 'categories': ['剧情', '爱情'], 'published_at': '1993-07-26', 'minute': 171, 'score': 9.5, 'regions': ['中国内地', '中国香港'], 'drama': '影片借一出《霸王别姬》的京戏,牵扯出三个人之间一段随时代风云变幻的爱恨情仇。段小楼(张丰毅 饰)与程蝶衣(张国荣 饰)是一对打小一起长大的师兄弟,两人一个演生,一个饰旦,一向配合天衣无缝,尤其一出《霸王别姬》,更是誉感到一切都失去了意义,为了生存,她和好友不得不沦为妓女。然而命运弄人,就在此时玛拉竟然再次遇到了罗伊。虽然为罗伊的生还兴奋不已,玛拉却因自己的失身陷入痛苦之中。感到一切难以挽回的玛拉潸然离开,独自来到两人最初相遇的地点——滑铁卢桥上…'}]}
 

这可以看到我们获取到了需要的内容

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

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

相关文章

网站配置了https证书,但浏览器访问时却访问了http

是由于缺少强制将 HTTP 请求重定向到 HTTPS 的规则 # HTTP 到 HTTPS 重定向配置 server {listen 80;server_name www.xlqd.site xlqd.site;return 301 https://$host$request_uri; } # 那么你原来的server块就要删除 listen 80;

Linux系统之部署轻量级Markdown文本编辑器

Linux系统之部署轻量级Markdown文本编辑器 一、项目介绍1.1 项目简介1.2 使用方法 二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查系统版本3.2 检查系统内核版本3.3 检查软件源 四、安装Apache24.1 安装Apache2软件4.2 启动apache2服务4.3 查看ap…

【Nginx】Nginx 安装(平滑升级和回滚)

一、 Nginx 概述 Nginx 介绍 Nginx : engine X , 2002 年开发,分为社区版和商业版 (nginx plus ) 2019 年 3 月 11 日 F5 Networks 6.7 亿美元的价格收购 Nginx 是免费的、开源的、高性能的 HTTP 和反向代理服务器、邮件代理服务器、以…

【word】修改图名/表名/公式编号后快速更新交叉引用的内容;交叉引用的字体不跟随正文如何解决

本文解决两个问题,不是什么特别正规的方法,主打一个迅速且通用。 问题描述 修改图名/表名/方程编号后快速更新交叉引用的内容 假设我们现在word文档中某处用了交叉引用。显然,图 1两个字颜色更深,就是我交叉引用的地方。 由于某…

贝莱德与摩根大通的最新季度持仓分析

近期,华尔街的两大投资巨头贝莱德和摩根大通公布了其2024年第二季度的13F报告,揭示了他们在投资组合上的最新动向。通过分析这些持仓数据,我们可以更清楚地了解这些顶级投资机构的投资策略和市场偏好。 贝莱德的科技巨头与能源投资 根据贝莱…

SpringBoot教程(二十二) | SpringBoot实现分布式定时任务之elastic-job

SpringBoot教程(二十二) | SpringBoot实现分布式定时任务之elastic-job 简介前置条件:需要ZooKeeper配合1、引入相关依赖2、application.yml中配置注册中心和作业调度巨坑(配置修改无效)3、job实例4、ElasticJob-UI监控…

网络编程-网络基础

IO进程: 进程和进程之间的通信 - 信号 信号量 消息队列 有名管道 无名管道 共享内存 套接字 套接字: 不同主机 不同操作系统之间的 进程通信 干什么: 实现无线 局域网:同一局域网下IP网段一致 IP地址 1) IP地址 是 网络中的 主机的标识, 本质是二进制数字。 2…

37_DC-5靶机渗透测试、nmap使用、kail漏洞库使用、系统提权、反弹shell到kali、留后门、蚁剑连接webshell、文件包含漏洞利用、NC用法

环境准备 靶机下载地址:https://www.vulnhub.com/entry/dc-5,314/ 百度网盘:https://pan.baidu.com/s/1lqFMjoqQpIl4DA-Amb00pA?pwd9LJY 攻击机:kali(192.168.58.130,IP是各自不同的) 靶机&#xff1…

SystemUI手势操作隐藏显示导航栏

在Android 12中,通过SystemUI手势操作来隐藏和显示导航栏主要涉及对系统UI的定制和编程控制。以下是一些实现这一功能的方法: 默认是隐藏 向上滑动 第一类. 使用WindowInsetsController Android 12引入了一个新的WindowInsetsController类,它…

【数据分享】1999—2022年地级市地区生产总值及一二三产构成数据(Shp/Excel格式)

在之前的文章中,我们分享过基于2000-2023年《中国城市统计年鉴》整理的1999-2022年地级市的人口相关数据、各类用地面积数据、污染物排放和环境治理相关数据、房地产投资情况和商品房销售面积、社会消费品零售总额和年末金融机构存贷款余额、一般公共预算收支状况、…

bootchart抓Android系统启动各阶段性能数据

最近在做Android系统启动优化,首要任务是找到启动过程中各阶段耗时点,进而有针对性地进行优化。主要用bootchart抓开机数据,本文主要记录下工具的使用方法。 1.抓开机数据 adb root adb shell ‘touch /data/bootchart/enabled’ adb rebo…

STM32标准库学习笔记-6.定时器-输入捕获

参考教程:【STM32入门教程-2023版 细致讲解 中文字幕】 定时器输入捕获 IC(Input Capture)输入捕获输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率…

8.14-LVS主从+nginx的haproxy+mysql的haproxy+读写分离

一、LVS-主从数据库 # nat # 添加规则 [rootDS ~]# ipvsadm -A -t 192.168.2.130:3306 -s rr [rootDS ~]# ipvsadm -a -t 192.168.2.130:3306 -r 192.168.2.40:3306 -m [rootDS ~]# ipvsadm -a -t 192.168.2.130:3306 -r 192.168.2.42:3310 -m [rootDS ~]# ipvsadm -Ln IP Vir…

计算机毕业设计选什么题目好? springboot 大学志愿填报系统

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

ffmpeg的基础命令

文章目录 ffmpeg/ffplay/ffprobe区别ffmpeg 的作用ffplay的作用ffprobe的作用 ffmpeg使用概述功能概述转码过程简单使用FFMPEG -i常用的 -i例子 ff***工具之间共享的选项ffmpeg主要选项ffmpeg提取音视频数据ffmpeg命令修改原有的视频格式ffmpeg命令裁剪和合并视频拼接视频的方式…

数据结构—— 初识二叉树

1.树概念及结构 1.1树的概念 树是由根和子树构成 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的 1. 树有…

20240819 每日AI必读资讯

📚AI爆料人遭全网封禁!OpenAI等25个机构祭大招,一眼辨别AI机器人 - 最近半个月,全网被OpenAI的「AI爆料人」「草莓哥」iruletheworldmo愚弄。所有人没有等他预测的GPT-4o large模型,反被AI初创MultiOn创始人揭穿身份—…

Git安装包及怎么再windows上运行

第一步:下载git。 国内 Git for Windows. 国内镜像 感谢GitHub - waylau/git-for-win: Git for Windows. 国内直接从官网下载比较困难,需要翻墙。这里提供一个国内的下载站,方便网友下载 安装步骤: Git for Windows安装和基本…

【C语言可变参数函数的使用与原理分析】

文章目录 1 前言2 实例2.1实例程序2.2程序执行结果2.3 程序分析 3 补充4 总结 1 前言 在编程过程中,有时会遇到需要定义参数数量不固定的函数的情况。 C语言提供了一种灵活的解决方案:变参函数。这种函数能够根据实际调用时的需求,接受任意…

ansible相关模块

copy模块(重点) copy模块⽤于对⽂件的远程拷⻉操作(如把本地的⽂件拷⻉到远程 的机器上) https://docs.ansible.com/ansible/latest/modules/copy_module.htm l#copy-module 在master上准备⼀个⽂件,拷⻉此⽂件到group1的所有机器上 使⽤content参数直…