Python爬虫-抖音小视频-mitmproxy与Appium
目的: 爬取抖音小视频
工具: mitmproxy、Appium
思路:
1. 通过 mitmproxy 截取请求, 找出 response 为 video 的请求.
2. 通过 mitmdump 对接 python 对上述请求进行处理.
3. 配合 Appium 实现自动抓取视频.
方法:
1. 设置 mitmprxoy 为手机的代理, 并且启动 mitmproxy.
2. 打开抖音, 并滑动页面.
3. 观察 mitmproxy 的页面. 通过不停的滑动, 返回类型为 video 都是如下类型的请求.



所以猜测储存视频的服务器都是如下类型(不一定全正确, 但是至少有正确的).
web_list = ['v3-dy.ixigua.com', 'v3-dy-x.ixigua.com', 'v3-dy-y.ixigua.com', 'v3-dy-z.ixigua.com',
'v6-dy.ixigua.com', 'v6-dy-x.ixigua.com', 'v6-dy-y.ixigua.com', 'v6-dy-z.ixigua.com',
'v9-dy.ixigua.com', 'v9-dy-x.ixigua.com', 'v9-dy-y.ixigua.com', 'v9-dy-z.ixigua.com']
4. 编写处理截获数据的处理脚本, 如下:
from urllib.request import urlretrieve
# 视频编号
num = 1
# 用于视频去重
duplicate = set() def request(flow):
# 本次请求的url
video_url = flow.request.url
global num
url_list = ['v3-dy.ixigua.com', 'v3-dy-x.ixigua.com', 'v3-dy-y.ixigua.com', 'v3-dy-z.ixigua.com',
'v6-dy.ixigua.com', 'v6-dy-x.ixigua.com', 'v6-dy-y.ixigua.com', 'v6-dy-z.ixigua.com',
'v9-dy.ixigua.com', 'v9-dy-x.ixigua.com', 'v9-dy-y.ixigua.com', 'v9-dy-z.ixigua.com']
# 视频保存路径
path = '/home/ysl/视频/'
# 判断是否重复, 不重复才继续执行
if video_url not in duplicate:
duplicate.add(video_url)
for url in url_list:
if url in flow.request.url:
filename = path + str(num) + '.mp4'
# 下载视频, 保存到本地
urlretrieve(flow.request.url, filename)
print(filename + '下载完成')
num += 1
# 这里是猜测不同服务器里可能存有相同的视频, 所以一旦下载到视频就退出循环.
return
现在手动滑动视频的话就已经会逐个下载了, 但是手动的毕竟麻烦, 所以搭配 Appium 实现自动化.
5. 将手机通过数据线和运行 Appium 的电脑相连, 打开手机的 USB 调试功能. 首先需要确定启动抖音的 Desired Capabilities 参数, platformName、deviceName、appPackage、appActivity, 具体的获取方法可以百度一下, 对于我手机上的抖音而言, 参数如下:

这里我还设置了一下 noReset 为 true, 不然的话, 好像每一次手机都会重新安装抖音. 下面是 Appium 驱动手机的代码:
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
import time # Appium服务器
server = 'http://localhost:4723/wd/hub'
# 参数
desired_caps = {
"appActivity": ".main.MainActivity",
"appPackage": "com.ss.android.ugc.aweme",
"deviceName": "SM_G9500",
"platformName": "Android",
"noReset": True
}
# 类似于selenium
driver = webdriver.Remote(server, desired_caps)
# 等待app启动
time.sleep(10)
# 设置时限, 如果想一直爬可以使用while True.
for i in range(20):
# TouchAction(driver).press(x=607, y=1976).move_to(x=613, y=982).release().perform()
time.sleep(2)
driver.swipe(607, 1976, 613, 800, 500)
确保 Appium 服务已经启动.
6. 命令行中执行 mitmdump -s 脚本名, 然后运行 Appium 代码.
结果: Appium 驱动手机滑动页面, 抖音小视频被下载至指定路径.
Python爬虫-抖音小视频-mitmproxy与Appium的更多相关文章
- Python 爬虫——抖音App视频抓包
APP抓包 前面我们了解了一些关于 Python 爬虫的知识,不过都是基于 PC 端浏览器网页中的内容进行爬取.现在手机 App 用的越来越多,而且很多也没有网页端,比如抖音就没有网页版,那么上面的视 ...
- python爬虫——抖音数据
最近挺火的抖音短视频,不仅带火了一众主播,连不少做电商的也进驻其中,于是今天我来扒一扒这火的不要不要的抖音数据: 一.抓包工具获取用户ID 对于手机app数据,抓包是最直接也是最常见的手段,常用的抓包 ...
- python爬虫抖音 个人资料 仅供学习参考 切勿用于商业
本文仅供学习参考 切勿用于商业 本次爬取使用fiddler+模拟器(下载抖音APP)+pycharm 1. 下载最新版本的fiddler(自行百度下载),以及相关配置 1.1.依次点击,菜单栏-Too ...
- from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)
使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...
- Python爬虫---爬取抖音短视频
目录 前言 抖音爬虫制作 选定网页 分析网页 提取id构造网址 拼接数据包链接 获取视频地址 下载视频 全部代码 实现结果 待解决的问题 前言 最近一直想要写一个抖音爬虫来批量下载抖音的短视频,但是经 ...
- 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)
抖音很火,楼主使用python随机爬取抖音视频,并且无水印下载,人家都说天下没有爬不到的数据,so,楼主决定试试水,纯属技术爱好,分享给大家.. 1.楼主首先使用Fiddler4来抓取手机抖音app这 ...
- 教你用python爬取抖音app视频
记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...
- Python音视频开发:消除抖音短视频Logo的图形化工具实现
☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解>节介绍了怎么通过Python+Moviepy+OpenCV实现 ...
- Python音视频开发:消除抖音短视频Logo和去电视台标
☞ ░ 前往老猿Python博文目录 ░ 一.引言 对于带Logo(如抖音Logo.电视台标)的视频,有三种方案进行Logo消除: 直接将对应区域用对应图像替换: 直接将对应区域模糊化: 通过变换将要 ...
随机推荐
- [NewTrain 10][poj 2329]Nearest Number - 2
题面: http://poj.org/problem?id=2329 题解: 这题有很多做法 1. 搜索 复杂度$O(n^4)$ 但是实际上远远达不到这个复杂度 所以可以通过 2. 对于每一个格子,我 ...
- [WOJ2549]逻辑的连通性
题目描述: 数学中,假如有命题 p 一定能推出命题 q,则称 p 是 q 的充分条件,q 是 p 的必要 条件. 特别的,当 p 既是 q 的充分条件,又是 q 的必要条件时,称 p 和 q 互为 充 ...
- Camera和 tris,verts的优化
Unity的Camera组件有很多可调节的参数,当需要做优化的时候,stats面板中的tris和verts这两个重点项都与Camera组件的参数有很大关系,有些参数的意义Unity手册说得不够详细,经 ...
- IIS伪静态失效
故障描述: 今天有个美国VPS的用户向我们救助,说他的网站昨晚还好好的,早上起来就发现404了,但是后台却可以正常登陆.经过我们检查后发现原来是伪静态失效了,查看日志,发现许多ISAPI_Rewrit ...
- 如何使用 Java 生成二维码
步骤 下载jar包(QRCode.jar) maven项目手动引入jar包 编写实体类实现二维码的生成 controller调用 下载jar包(QRCode.jar) 下载网址如下: QRCode生成 ...
- 消息中间件与RPC的区别
消息中间件和消息通信与RPC各自具有怎样的优势,如何互补消息中间件主要实现的是异步.弹性消息以及队列,弹性消息有时可以借助于外存从而一定程度上可以实现峰值缓存,有效均衡服务器端压力,同时消息可以进行一 ...
- 第一次提交代码到github时经常遇到的问题
最近两年在OpenStack方面做了一些工作,写了一些实验性的plugin. 本着Open Source的共享精神,想尝试提交到github,以便他人能下载使用. 当你注册完github帐号之后,点击 ...
- 在windows上安装Jenkins---tomcat流
在windows上安装Jenkins有两种方式: (1)jar流 在命令行中运行:java -jar jenkins.war 浏览器访问 localhost:8080,创建初始管理员帐号即可. (2) ...
- 洛谷 P2894 [USACO08FEB]酒店Hotel
题目描述 The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and enjoy a ...
- FormItem label 属性 可以改成 slot模式 就能加入br回车了 iview
FormItem label 属性 可以改成 slot模式 就能加入br回车了 iview <FormItem> <div slot='label'>测试文字<br> ...