Python使用mitmproxy工具监控手机 下载手机小视频


Posted in Python onApril 18, 2022

今天为大家介绍使用 mitmproxy 这个抓包工具如何监控手机上网,并且通过抓包,把我们想要的数据下载下来。

启动 mitmproxy

首先我们通过执行命令 mitmweb 启动mitmproxy,让它处理监听状态,服务会监听本机 8080 端口,启动后如下:

$ mitmweb
Web server listening at http://127.0.0.1:8081/
Proxy server listening at http://*:8080

手机网络配置

1.保证手机和电脑在同一局域网内,并查看电脑的局域网 IP 地址是多少以备用,查看方式可以用命令查看,如 Windows 系统用

ipconfig 命令,Mac 或 Linux 则用命令 ifconfig,看到如下图所示,找到本机在局域网的 IP 地址。

Python使用mitmproxy工具监控手机 下载手机小视频

不同操作系统,可能展示结果不同,在这里我们可以看到红框里我本机的 IP 地址为 192.168.0.108。

2.配置手机代理地址,比如以下用 iphone 手机进行配置,打开设置 -> 无线局域网 -> 点现在连接的网络 -> 点最下面点 HTTP 代

理配置,选择手动后,配置代理地址为我们电脑的 IP地址和 mitmproxy 的监听端口,配置如下图所示:

Python使用mitmproxy工具监控手机 下载手机小视频

3.现在我们就可以让手机通过电脑上网了,不过目前手机 App 都是通过 HTTPS 加密请求,所以我们需要在手机上安装个

mitmproxy 的 HTTPS 证书。接下来我们打开手机浏览器,输入网址:mitm.it,打开如下图所示页面,选择对应手机的操作系统,

下载证书并安装。

Python使用mitmproxy工具监控手机 下载手机小视频

下载页

在这里我点 Apple 的图标下载证书,下载后等待安装:

Python使用mitmproxy工具监控手机 下载手机小视频

Python使用mitmproxy工具监控手机 下载手机小视频

单击上面的安装,可能会出现信任的提示,只要选择信任证书就可以了,下面是安装好的界面如下图:

Python使用mitmproxy工具监控手机 下载手机小视频

好了,配置完成下面我们点开个手机 APP 看到电脑 mitmweb 的页面上,已经出现请求内容了。

Python使用mitmproxy工具监控手机 下载手机小视频

编写下载脚本

好了,现在经过分析拦截的请求,我们开始用 Python 编写代码,通过解析视频的 url 将视频下载到本地。在这里我们先来打印下

数据,新建文件 xiaoshipin.py,然后编写如下代码,实现将已编码的 json 字符串解码为 python 对象:

#xiaoshipin.py
import json
def response(flow):    
url='https://api.amemv.com/aweme/v1/aweme/post/'    
#筛选出以上面url为开头的url    
if flow.request.url.startswith(url):        
text=flow.response.text       
 #将已编码的json字符串解码为python对象        
 data=json.loads(text)        
 print(data)

编辑完后保存,然后执行命令:mitmweb -s xiaoshipin.py,带上这段脚本来运行我们的代理服务,刷新几个视频,会看到如下图所示内容:

Python使用mitmproxy工具监控手机 下载手机小视频

其中就包含了我们需要的下载地址信息,接下来我们只需提取视频的 url ,并且缓存视频到本地就 OK 了。

下面我们就来修改上面的 xiaoshipin.py 的代码,完善下视频下载的功能。

#xiaoshipin.py

#引入包
import json,os
import requests

#只拦截并处理返回请求
def response(flow):    
#请求的 url    
url='https://api.amemv.com/aweme/v1/aweme/post/'    
#筛选出以上面url为开头的url    
if flow.request.url.startswith(url):        
text=flow.response.text        
#将已编码的json字符串解码为python对象        
data=json.loads(text)        
#刚分析看到每一个视频的所有信息        
#都在aweme_list中        
video_url=data['aweme_list']        
#设置下载路径        
path='/Users/xx/shipin'        
#如果文件夹不存在,则新建        
if not os.path.exists(path):            
os.mkdir(path)
        # 循环所有视频 url        
        for each in video_url:            
 #视频描述            
 desc=each['desc']            
 url=each['video']['play_addr']['url_list'][0]           
  # 设置视频名称            
  filename=path+'/'+desc+'.mp4'            
  # 用 request 请求视频流            
  req=requests.get(url=url,verify=False)            
  # 保存视频文件            
  with open(filename,'ab') as f:                
  f.write(req.content)                
  f.flush()                
  print(filename,'下载完毕')

上面我已经把相关代码注释好了,现在我们保存编辑好的代码,然后再次执行命令:mitmweb -s xiaoshipin.py,启动监听服务。

然后打开手机再次下视频,就会看到视频是不是已经都存到本地了。

到此这篇关于Python 下载手机小视频的文章就介绍到这了,更多相关Python 下载手机小视频内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python计算回文数的方法
Mar 11 Python
python获取程序执行文件路径的方法(推荐)
Apr 26 Python
Python实现基于KNN算法的笔迹识别功能详解
Jul 09 Python
对Python中for复合语句的使用示例讲解
Nov 01 Python
python实现简单的单变量线性回归方法
Nov 08 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
Sep 20 Python
Python对Tornado请求与响应的数据处理
Feb 12 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
Feb 15 Python
Expected conditions模块使用方法汇总代码解析
Aug 13 Python
python如何提升爬虫效率
Sep 27 Python
基于Python实现一个春节倒计时脚本
Jan 22 Python
python实现手机推送 代码也就10行左右
Apr 12 Python
使用Python通过企业微信应用给企业成员发消息
Python用any()函数检查字符串中的字母以及如何使用all()函数
Apr 14 #Python
python在package下继续嵌套一个package
Apr 14 #Python
Github 使用python对copilot做些简单使用测试
使用Python拟合函数曲线
Apr 14 #Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
python中 .npy文件的读写操作实例
Apr 14 #Python
You might like
用文本文件制作留言板提示(上)
2006/10/09 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
PHP生成不重复随机数的方法汇总
2014/11/19 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
2011/03/28 Javascript
javascript的offset、client、scroll使用方法详解
2012/12/25 Javascript
Javascript图像处理思路及实现代码
2012/12/25 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
Node.js中使用计时器定时执行函数详解
2014/08/15 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
一个可复用的vue分页组件
2017/05/15 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
Python的math模块中的常用数学函数整理
2016/02/04 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
python3 selenium自动化 frame表单嵌套的切换方法
2019/08/23 Python
Python中猜拳游戏与猜筛子游戏的实现方法
2020/09/04 Python
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
高中生的自我鉴定范文
2014/01/24 职场文书
网络书店创业计划书
2014/02/07 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
交通志愿者活动总结
2014/06/27 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
学雷锋献爱心活动总结
2015/05/11 职场文书
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL