文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python下载手机小视频的操作方法

2024-04-02 19:55

关注

今天为大家介绍使用 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 地址。

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

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

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

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

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

下载证书并安装。

下载页

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

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

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

编写下载脚本

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

其中就包含了我们需要的下载地址信息,接下来我们只需提取视频的 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 下载手机小视频内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯