外链论坛

 找回密码
 立即注册
搜索
查看: 53|回复: 3

教你用 Python 下载手机小视频

[复制链接]

2979

主题

312

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99099268
发表于 2024-8-17 22:46:35 | 显示全部楼层 |阅读模式

今天再为大众介绍下运用这个工具怎样监控手机上网,并且经过抓包,把咱们想要的数据下载下来。

起步 mitmproxy

首要咱们经过执行命令 mitmweb 起步 mitmproxy,让它处理监听状态,服务会监听本机 8080 端口,起步后如下:

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

手机网络配置

保准手机和电脑在同一局域网内,并查看电脑的局域网 IP 位置是多少以备用,查看方式能够用命令查看,如 Windows 系统用 ipconfig命令,Mac 或 Linux 则用命令ifconfig,看到如下图所示,找到本机在局域网的 IP 位置

区别操作系统,可能展示结果区别,在这儿咱们能够看到红框里我本机的 IP 位置为 192.168.0.108。

配置手机代理位置例如以下用 iphone 手机进行配置,打开设置 -> 无线局域网 -> 点此刻连接的网络 -> 点最下面点 HTTP 代理配置,选取手动后,配置代理位置咱们电脑的 IP位置和 mitmproxy 的监听端口,配置如下图所示:
此刻咱们能够让手机经过电脑上网了,不外日前手机 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 ifflow.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) asf: f.write(req.content) f.flush() print(filename,下载完毕)

上面我已然关联代码注释好了,此刻咱们保留编辑好的代码,而后再次执行命令:mitmweb -s xiaoshipin.py起步监听服务。而后打开手机再次下视频,就会看到视频是不是已然都存到本地了。

总结

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

回复

使用道具 举报

3

主题

556

回帖

2

积分

新手上路

Rank: 1

积分
2
发表于 2024-9-9 18:03:39 | 显示全部楼层
认真阅读了楼主的帖子,非常有益。
回复

使用道具 举报

2965

主题

2万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109354
发表于 2024-10-26 12:32:58 | 显示全部楼层
感谢楼主的分享!我学到了很多。
回复

使用道具 举报

2880

主题

2万

回帖

9997万

积分

论坛元老

Rank: 8Rank: 8

积分
99979669
发表于 2024-10-27 17:59:21 | 显示全部楼层
你的留言真是温暖如春,让我感受到了无尽的支持与鼓励。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-5 14:39 , Processed in 0.065742 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.