python爬虫之app爬取-mitmproxy 的使用

news/2024/7/19 9:53:10 标签: python, 爬虫, 网络爬虫, 网络安全

mitmproxy 的使用

mitmproxy 是一个支持 HTTP 和 HTTPS 的抓包程序,有类似 Fiddler、Charles 的功能,只不过它是一个控制台的形式操作。

mitmproxy 还有两个关联组件。一个是 mitmdump,它是 mitmproxy 的命令行接口,利用它我们可以对接 Python 脚本,用 Python 实现监听后的处理。另一个是 mitmweb,它是一个 Web 程序,通过它我们可以清楚观察 mitmproxy 捕获的请求。

下面我们来了解它们的用法。

1. 准备工作

请确保已经正确安装好了 mitmproxy,并且手机和 PC 处于同一个局域网下,同时配置好了 mitmproxy 的 CA 证书,具体的配置可以参考第 1 章的说明。

2. mitmproxy 的功能

mitmproxy 有如下几项功能。

  • 拦截 HTTP 和 HTTPS 请求和响应

  • 保存 HTTP 会话并进行分析

  • 模拟客户端发起请求,模拟服务端返回响应

  • 利用反向代理将流量转发给指定的服务器

  • 支持 Mac 和 Linux 上的透明代理

  • 利用 Python 对 HTTP 请求和响应进行实时处理

3. 抓包原理

和 Charles 一样,mitmproxy 运行于自己的 PC 上,mitmproxy 会在 PC 的 8080 端口运行,然后开启一个代理服务,这个服务实际上是一个 HTTP/HTTPS 的代理。

手机和 PC 在同一个局域网内,设置代理为 mitmproxy 的代理地址,这样手机在访问互联网的时候流量数据包就会流经 mitmproxy,mitmproxy 再去转发这些数据包到真实的服务器,服务器返回数据包时再由 mitmproxy 转发回手机,这样 mitmproxy 就相当于起了中间人的作用,抓取到所有 Request 和 Response,另外这个过程还可以对接 mitmdump,抓取到的 Request 和 Response 的具体内容都可以直接用 Python 来处理,比如得到 Response 之后我们可以直接进行解析,然后存入数据库,这样就完成了数据的解析和存储过程。

4. 设置代理

首先,我们需要运行 mitmproxy,命令如下所示:

启动 mitmproxy 的命令如下:

mitmproxy

运行之后会在 8080 端口上运行一个代理服务:

右下角会出现当前正在监听的端口。

或者启动 mitmdump,它也会监听 8080 端口,命令如下所示:

mitmdump

将手机和 PC 连接在同一局域网下,设置代理为当前代理。首先看看 PC 的当前局域网 IP。

Windows 上的命令如下所示:

ipconfig

Linux 和 Mac 上的命令如下所示:

ifconfig

输出结果如图:


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

相关文章

驱动开发面试复习

创建字符设备 1 创建设备号 alloc_chrdev_region 2.创建cdev cdev_init 3.添加一个 cdev,完成字符设备注册到内核 cdev_add 4.创建类 class_create 5.创建设备 device_create 1.内核空间与用户空间数据 copy_from_user 和copy_to_user 俩个函数来完成。 copy_from_user 函数…

【ONE·MySQL || 索引】

总言 主要内容:是什么、为什么、怎么用。以金字塔三角形结构,先介绍下层内存硬件的IO问题,再介绍索引的底层实现,最后再来介绍索引的操作使用。       文章目录 总言1、前提认识(准备工作)1.1、MySQL与…

Git版本管理常用指令

Git常用命令 一、基本指令二、本地仓库管理三、远程仓库管理四、分支管理五、储藏区六、标签管理一、基本指令 查看Git安装版本:git --version 查看log指令的帮助信息:git log --help 配置Git用户名:git config --global user.name “xxxxx” 配置Git邮箱: git config --…

C语言 for 循环语句的基本格式是什么?

一、问题 for 循环语句在C语⾔中是最为常见的循环语句,其功能强⼤,⽽且⽤法灵活,那么它的基本格式是什么呢? 二、解答 for 语句的⼀般形式为: for(表达式1;表达式2;表达3)语句; 每条 for 语句包含三个⽤分…

python环境搭建(Python 3.11.8)

文章目录 1 安装Python2 使用虚拟环境3 Python程序打包为二进制 1 安装Python 按照linux安装python3文档安装python3,只是在编译python3时添加一个选项:--enable-shared,该选项是为了后续可以将程序打包为二进制,如果不需要该功能…

Vscode 使用SSH远程连接树莓派的教程(解决卡在Downloading with wget)

配置Vscode Remote SSH 安装OpenSSH 打开Windows开始页面,直接进行搜索PowerShell,打开第一个Windows PowerShell,点击以管理员身份运行 输入指令 Get-WindowsCapability -Online | ? Name -like OpenSSH* 我是已经安装好了,…

【图像分割算法】

图像分割算法 一、opencv 图像分割 在OpenCV中,图像分割有多种方法,下面列举几种常见的并给出代码示例、原理说明及使用场景: 1. 阈值分割(Global Thresholding) 原理:基于像素强度设置一个阈值&#x…

vue api封装

api封装 由于一个项目里api是很多的,随处都在调,如果按照之前的写法,在每个组件中去调api,一旦api有改动,遍地都要去改,所以api应该也要封装一下,将api的调用封装在函数中,将函数集…