首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
12.1 Charles 抓包工具的使用
12.2 mitmproxy 抓包工具的使用
12.3 mitmdump 实时抓包处理
12.4 Appium 的使用
12.5 基于 Appium 的 App 爬取实战
12.6 Airtest 的使用
12.7 基于 Airtest 的 App 爬取实战
12.8 手机群控爬取实战
12.9 云手机的使用
13.0 Android 逆向
13.1 jadx 的使用
13.2 JEB 的使用
13.3 Xposed 框架的使用
13.4 基于 Xposed 的爬取实战案例
13.5 Frida 的使用
13.6 SSL Pining 问题的解决方案
13.7 Android 脱壳技术简介与实战
13.8 利用 IDA Pro 静态分析和动态调试 so 文件
13.9 基于 Frida-RPC 模拟执行 so 文件
13.10 基于 AndServer-RPC 模拟执行 so 文件
13.11 基于 unidbg 模拟执行 so 文件
14.1 页面智能解析简介
14.2 详情页智能解析算法简介
14.3 详情页智能解析算法的实现
14.4 列表页智能解析算法简介
14.5 列表页智能解析算法的实现
14.6 如何智能分辨列表页和详情页
15.1 Scrapy框架介绍
15.2 Scrapy入门
15.3 Selector 的使用
15.4 Spider 的使用
15.5 Downloader Middleware的使用
15.6 Spider Middleware的使用
15.7 Item Pipeline的使用
15.8 Extension的使用
15.9 Scrapy 对接 Selenium
15.10 Scrapy 对接 Splash
15.11 Scrapy 对接 Pyppeteer
15.12 Scrapy 规则化爬虫
15.13 Scrapy 实战
16.1 分布式爬虫理念
16.2 Scrapy-Redis原理和源码解析
16.3 基于Scrapy-Redis的分布式爬虫实现
16.4 基于Bloom Filter进行大规模去重
16.5 基于RabbitMQ的分布式爬虫
17.1 Scrapyd和ScrapydAPI的使用
17.2 Scrapyd-Client 的使用
17.3 Gerapy 爬虫管理框架的使用
17.4 将Scrapy 项目打包成 Docker 镜像
17.5 Docker Compose 的使用
17.6 Kubernetes的使用
17.7 用 Kubernetes 部署和管理 Scrapy 爬虫
17.8 Scrapy 分布式爬虫的数据统计方案
17.9 基于Prometheus和Grafana的分布式爬虫监控方案
当前位置:
首页>>
技术小册>>
Python3网络爬虫开发实战(下)
小册名称:Python3网络爬虫开发实战(下)
### 12.2 mitmproxy 抓包工具的使用 在Python网络爬虫的开发过程中,了解并熟练使用抓包工具是极其重要的技能之一。它不仅能帮助开发者深入理解HTTP/HTTPS协议的工作原理,还能在调试爬虫、分析网站数据交互时发挥巨大作用。`mitmproxy`作为一个功能强大的开源网络抓包和调试代理工具,以其灵活的扩展性、直观的交互界面和强大的过滤功能,成为了众多开发者和安全研究人员的首选。本章将详细介绍如何使用`mitmproxy`进行网络抓包与分析。 #### 12.2.1 认识mitmproxy `mitmproxy`(Man-in-the-Middle Proxy)是一个开源的、支持HTTP和HTTPS的代理服务器,它可以拦截、查看、修改和重放HTTP/HTTPS请求与响应。与Wireshark等网络抓包工具不同,`mitmproxy`工作在应用层,专注于HTTP/HTTPS协议的数据分析,对于Web开发者而言更为直观和实用。 `mitmproxy`包含三个主要组件: - **mitmproxy**:一个交互式命令行工具,允许用户拦截、查看和修改HTTP/HTTPS流量。 - **mitmdump**:一个命令行工具,用于以脚本形式自动处理HTTP/HTTPS流量,适合批量处理或集成到自动化测试流程中。 - **mitmweb**:一个基于Web的图形界面,提供了与`mitmproxy`类似的功能,但界面更为友好,适合初学者使用。 #### 12.2.2 安装mitmproxy 在开始使用`mitmproxy`之前,需要先确保它已经被正确安装在你的系统上。`mitmproxy`支持多种操作系统,包括Windows、macOS和Linux。安装方法通常是通过Python的包管理工具pip进行: ```bash pip install mitmproxy ``` 安装完成后,你可以通过命令行运行`mitmproxy`、`mitmdump`或`mitmweb`来验证安装是否成功。 #### 12.2.3 配置mitmproxy 为了使用`mitmproxy`捕获HTTPS流量,你需要在客户端(如浏览器)中设置代理,并将`mitmproxy`的CA证书安装到受信任的根证书颁发机构列表中。这样做是因为HTTPS协议会验证服务器的SSL证书,而`mitmproxy`在拦截请求时,会生成自己的SSL证书来解密HTTPS流量。 1. **启动mitmproxy并生成CA证书**: 打开命令行,运行`mitmweb`或`mitmproxy`,`mitmproxy`会自动生成CA证书并显示其安装指南。 2. **安装CA证书**: 按照`mitmproxy`提供的指南,在浏览器或操作系统的证书管理器中安装CA证书。 3. **配置代理**: 在浏览器或其他客户端软件中设置HTTP/HTTPS代理为`mitmproxy`的地址和端口(默认是`http://127.0.0.1:8080`)。 #### 12.2.4 使用mitmproxy进行抓包 一旦`mitmproxy`配置完成,你就可以开始使用它进行网络抓包了。以下是一些基本的使用场景和技巧。 ##### 1. 实时查看HTTP/HTTPS流量 启动`mitmweb`后,在浏览器中打开`http://127.0.0.1:8080`,你将看到一个实时更新的HTTP/HTTPS流量列表。你可以点击任何请求来查看其详细信息,包括请求头、响应头和请求/响应体。 ##### 2. 过滤和搜索流量 `mitmproxy`支持强大的过滤和搜索功能,允许你快速定位到感兴趣的请求。在`mitmweb`的界面中,你可以使用工具栏上的过滤器输入框来输入过滤条件,如域名、请求方法等。 ##### 3. 修改请求和响应 `mitmproxy`允许你在流量通过时动态修改请求和响应。这在测试Web应用时特别有用,比如模拟不同的用户代理、修改请求参数等。在`mitmproxy`的交互式命令行界面中,你可以通过编写Python脚本来实现这些功能。 ##### 4. 使用mitmdump进行自动化处理 如果你需要批量处理HTTP/HTTPS流量,或者将`mitmproxy`集成到自动化测试流程中,`mitmdump`是一个更好的选择。`mitmdump`通过运行Python脚本来处理流量,你可以编写脚本来记录、修改或丢弃特定的请求和响应。 #### 12.2.5 进阶使用:编写mitmproxy脚本 `mitmproxy`的强大之处在于其可扩展性。通过编写Python脚本,你可以自定义`mitmproxy`的行为,实现复杂的请求和响应处理逻辑。 ##### 示例脚本:记录所有请求的URL ```python from mitmproxy import http def request(flow: http.HTTPFlow) -> None: print(flow.request.pretty_url) addons = [ # 这里可以添加更多的addon实例 http.addon_classes.dumper(with_dumper_config={"verbose": True}) ] ``` 将上述脚本保存为`.py`文件,并在启动`mitmdump`时通过`-s`参数指定该脚本,`mitmdump`将会执行脚本中定义的逻辑,并打印出所有经过代理的请求URL。 #### 12.2.6 总结 `mitmproxy`是一个功能强大、灵活易用的网络抓包和调试工具,对于Python网络爬虫开发者而言,它是不可或缺的利器。通过掌握`mitmproxy`的基本使用方法和进阶技巧,你可以更加高效地调试和优化你的爬虫程序,深入理解目标网站的数据交互流程。希望本章的内容能够帮助你更好地利用`mitmproxy`来提升你的爬虫开发技能。
上一篇:
12.1 Charles 抓包工具的使用
下一篇:
12.3 mitmdump 实时抓包处理
该分类下的相关小册推荐:
Python编程轻松进阶(五)
剑指Python(磨刀不误砍柴工)
Python甚础Django与爬虫
Python合辑4-130个字符串操作示例
Python编程轻松进阶(二)
Python合辑9-判断和循环
Python数据分析与挖掘实战(下)
Python合辑2-字符串常用方法
Python高并发编程与实战
Python编程轻松进阶(三)
Python合辑12-面向对象
Python3网络爬虫开发实战(上)