教你用 Python 下载手机小视频

简介: 教你用 Python 下载手机小视频

上次给大家介绍了 mitmproxy 这个抓包工具,并且演示了如何用这个工具改变你电脑上网的请求以及请求返回信息,是不是觉得还有点意思。今天再为大家介绍下使用这个工具如何监控手机上网,并且通过抓包,把我们想要的数据下载下来。


启动 mitmproxy


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


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


手机网络配置


  1. 保证手机和电脑在同一局域网内,并查看电脑的局域网 IP 地址是多少以备用,查看方式可以用命令查看,如 Windows 系统用 ipconfig 命令,Mac 或 Linux 则用命令 ifconfig,看到如下图所示,找到本机在局域网的 IP 地址。


image.png


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


  1. 配置手机代理地址,比如以下用 iphone 手机进行配置,打开设置 -> 无线局域网 -> 点现在连接的网络 -> 点最下面点 HTTP 代理配置,选择手动后,配置代理地址为我们电脑的 IP地址和 mitmproxy 的监听端口,配置如下图所示:


image.png


  1. 现在我们就可以让手机通过电脑上网了,不过目前手机 App 都是通过 HTTPS 加密请求,所以我们需要在手机上安装个 mitmproxy 的 HTTPS 证书。接下来我们打开手机浏览器,输入网址:mitm.it,打开如下图所示页面,选择对应手机的操作系统,下载证书并安装。



微信图片_20220212170142.jpg


下载页

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


微信图片_20220212170154.jpg


待安装


微信图片_20220212170215.jpg



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



微信图片_20220212170230.jpg


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


image.png


编写下载脚本


好了,现在经过分析拦截的请求,我们开始用 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,带上这段脚本来运行我们的代理服务,刷新几个视频,会看到如下图所示内容:


image.png


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


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



#xiaoshipin.py
#引入包import json,osimport 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,启动监听服务。然后打开手机再次下视频,就会看到视频是不是已经都存到本地了。


image.png


总结


本文为大家介绍了如何通过 mitmproxy工具下载手机上浏览的小视频,当然除了视频他还可以下载音乐啊图片啊什么的,只要你能通过拦截工具分析你想要的内容在哪个请求中,然后对这个请求返回内容进行搜索分析,然后再用今天这个工具,再通过简单的 Python 编码实现自动处理完成就可以了。


目录
相关文章
|
2月前
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
322 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
23天前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
29天前
|
数据采集 JSON 数据格式
深入解析:使用Python爬取Bilibili视频
本文介绍了如何使用Python编写脚本自动化下载Bilibili视频。通过requests等库获取视频和音频URL,使用ffmpeg合并音视频文件,最终实现高效下载。注意遵守网站爬虫政策和法律法规。
205 4
|
2月前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
|
2月前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
2月前
|
Python
Python 三方库下载安装
Python 三方库下载安装
31 1
|
2月前
|
机器学习/深度学习 缓存 PyTorch
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
这篇文章是关于如何下载、安装和配置Miniconda,以及如何使用Miniconda创建和管理Python环境的详细指南。
501 0
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
|
6月前
|
网络协议 Android开发 数据安全/隐私保护
Android手机上使用Socks5全局代理-教程+软件
Android手机上使用Socks5全局代理-教程+软件
5036 2
|
7月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
216 0
|
7月前
|
Web App开发 前端开发 网络安全
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
【2月更文挑战第21天】前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
110 1
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
下一篇
DataWorks