一、前言

前面我们已经用 appium 爬取了微信朋友圈,今天我们学习下 mitmproxy,mitmproxy 是干什么的呢,它跟 charles 和 fiddler类似,是一个抓包工具,以控制台的形式显示,mitmproxy 的重要性在于它可以对接 python,可以通过 python 处理抓包的数据。试想一下我们如果不用 mitmproxy,用 fiddler 抓取抖音的视频地址,我们可以抓到视频的地址,这些地址要是可以直接用requests 缓存下来就好了,mitmproxy 就派上用场了。

知乎:https://zhuanlan.zhihu.com/p/41492085

GitHub:https://github.com/FanShuixing/git_webspider

二、学习目标

可以根据抖音号和抖音名称爬取到对应的抖音小视频

三、学习资料(感谢分享)

四、mitmproxy的安装

请先按照崔大的mitmproxy的安装 进行安装和证书的配置,如果安卓证书安装有问题,可以参看下面(华为手机,应该普遍适用):

把文件复制到手机qq后,可以在文件管理的下载中查看qq文件

第一个是我们下载的证书,长按后勾上它

点击下面的菜单,查看详情,这样可以看见这个证书的具体位置,一会有用

电脑打开360WiFi后,手机连接上360WiFi,在WiFi里面的菜单

安装证书就需要找到证书的位置,这样刚才我们在文件管理里面看到的位置就可以在这儿用到,找到证书安装即可。

配置代理

证书安装完成后,要配置手机和电脑处在同一个局域网内,我建议用360wifi,其它wifi应该也可以,但是最好不要用自己家路由器的wifi,我家wifi测试的时候没成功,360WiFi才成功了的。

如果弄完之后,在cmd中输入mitmdump,在手机中打开浏览器看看有没有网络,看看电脑的控制台有没有输出抓取信息,如果有,恭喜你安装成功。如果没有,憋着急,看看我的办法能不能帮助你:

建议:弄完后我发现手机浏览器中打不开网页,qq和微信是有网络的,我重新安装了一下mitmproxy,不过不是用pip安装,而是直接下载的

安装好后,查看安装路径下的bin文件夹,里面有个mitmdump.exe,双击它打开代理服务,这个时候再在手机上刷新网页发现mitmdump有请求输出。

五、用fiddler分析接口

不知道大家用 fiddler不,我抓包更喜欢用它,方便简洁,mitmdump 的唯一优势是可以对接 python,但是我感觉它不好分析呀,所以我是把 fiddler开着,分析下接口,再用mitmdump对接python,fiddler我就不介绍了。

网上教程很多,可以参看:https://blog.csdn.net/c406495762/article/details/76850843(博主大大写的超棒)

我们在手机中打开上图中的页面后,在fiddler中会发现,有一个这样的网址被抓取到

它的json数据中有视频信息

打开aweme_list中的一个{},里面是一个视频的信息,有对视频的描述,也有用户的id,也有video的url

url_list里面的url就是视频的url,随便选一个就是了。

六、对接python

# douyin_t.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)

我把代码保存在了D:\my-python-run\web spider目录下,所以我得先到这个目录下,这样mitmdump才能找到我的python脚本,然后运行命令 mitmdump -s douyin_t.py

在手机上打开抖音,搜索到你想下载的用户的抖音主页

可以发现mitmdump有数据输出

接下来我们只需提取视频的url,并缓存视频到本地

# douyin_t.py

import json, os

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)

# 在fiddler中刚刚看到每一个视频的所有信息

# 都在aweme_list中

video_url = data['aweme_list']

path = 'E:/爬虫数据/douyin'

if not os.path.exists(path):

os.mkdir(path)

for each in video_url:

# 视频描述

desc = each['desc']

url = each['video']['play_addr']['url_list'][0]

print(desc, url)

运行如下:

现在只需要用requests把这些url缓存到本地,首先要导入requests库

# douyin_t.py

import json, os

import requests

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)

# 在fiddler中刚刚看到每一个视频的所有信息

# 都在aweme_list中

video_url = data['aweme_list']

path = 'E:/爬虫数据/douyin'

if not os.path.exists(path):

os.mkdir(path)

for each in video_url:

# 视频描述

desc = each['desc']

url = each['video']['play_addr']['url_list'][0]

print(desc, url)

不幸的是,我只是导入了个requests库,其他什么都没有改程序便报错了

No module named ‘requests’,简直黑人问号脸,怎么会没有requests呢,我天天都在用,怎么会报这个错呢?

解决办法:相信大家也都安装了requests库了的,如果你也报这种错误,我们就再来捣鼓下路径问题,提示是没有requests模块,我非常确定我有这个模块,那只能说明mitmdump在执行脚本的时候没有找到requests模块,那我们可以把我们的脚本douyi_t.py放在与requests一个文件下执行

可以通过上述命令看到我的requests库在D:\my-install\Anaconda\Lib\site-packages,我们把douyin_t.py放在这儿

现在就没有再报错了,接下来的事情就顺利成章了

# douyin_t.py

import json, os

import requests

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)

# 在fiddler中刚刚看到每一个视频的所有信息

# 都在aweme_list中

video_url = data['aweme_list']

path = 'E:/爬虫数据/douyin'

if not os.path.exists(path):

os.mkdir(path)

for each in video_url:

# 视频描述

desc = each['desc']

url = each['video']['play_addr']['url_list'][0]

# print(desc,url)

filename = path + '/' + desc + '.mp4'

# print(filename)

req = requests.get(url=url, verify=False)

with open(filename, 'ab') as f:

f.write(req.content)

f.flush()

print(filename, '下载完毕')

这个只要我们没有关闭mitmdump运行窗口,我们可以搜索其他的抖音用户的页面,也会被下载下来,不知道大家是更喜欢appium自动化,还是喜欢自己用手滑,嘿嘿嘿嘿

若针对requests导入错误有更好的建议,欢迎分享(●ˇ∀ˇ●)

python好用 appium fiddler_python3 爬虫实战:mitmproxy 对接 python 下载抖音小视频相关推荐

  1. python3 爬虫实战:mitmproxy 对接 python 下载抖音小视频

    From:https://blog.csdn.net/Fan_shui/article/details/81461253 一.前言 前面我们已经用 appium 爬取了微信朋友圈,今天我们学习下 mi ...

  2. python3爬虫实战(三):mitmproxy对接python下载抖音小视频

    一.前言 前面我们已经用appium爬取了微信朋友圈,今天我们学习下mitmproxy,mitmproxy是干什么的呢,它跟charles和fiddler类似,是一个抓包工具,以控制台的形式显示,mi ...

  3. mitmproxy+appium爬取抖音小视频

    mitmproxy+appium爬取抖音小视频 目标 自动化爬取抖音APP小视频,随机获取用户,下载五个小视频,结果以用户ID为单位保存至video目录 环境配置 见: 视频下载 dy_mitmdum ...

  4. python批量删缩进_鬼畜小姐姐+野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频?...

    鬼畜小姐姐+野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频? 前言 半个月前,后台有个小伙伴问我,如何将视频中的音频提取出来,并且将声音转成文字写入到 word 中,正好接下来的 ...

  5. 【福利】Python抖音小视频无水印下载工具助手exe

    本渣渣的一个老哥要的抖音小视频无水印下载,我觉得他是一个LSP,因为抖音上的小姐姐实在是太多,太好看了! 可是他就是不发好看的小姐姐抖音号给我... 难道我的肾没有他强?! 不可能啊,本渣渣经常吃韭菜 ...

  6. 好看的抖音小视频不小心手滑刷过去了怎么办?Python帮你解决烦恼

    前言 记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows1 ...

  7. 用 Python 全自动下载抖音小姐姐视频(附源码)

    作者:法纳斯特 为什么写这篇文章,主要也是因为看了一篇文章. 「用Python在抖音扒了这些高颜值女神后,突然成了人生赢家」,文中简述了一名工程师利用Python+ADB+鹅厂的AI,一晚上关注了一千 ...

  8. 骚操作!用Python自动下载抖音小姐姐

    阅读文本大概需要 15 分钟. 1 目 标 场 景 相信大家平时刷抖音短视频的时候,看到颜值高的小姐姐,都有随手点赞关注的习惯. 如果一条条去刷确实很耗时间,如果 Python 能帮忙筛选出颜值高的小 ...

  9. 用 Python 全自动下载抖音小姐姐视频

    (给Python开发者加星标,提升Python技能) 作者:法纳斯特(本文来自作者投稿,简介见末尾) 为什么写这篇文章,主要也是因为看了一篇文章. 「用Python在抖音扒了这些高颜值女神后,突然成了 ...

最新文章

  1. 【教程】【FLEX】#004 反射机制
  2. git全局ignore
  3. 【S4 导数据】S/4HANA导数,只会LSMW远远不够(转)
  4. Android协程学习
  5. SRS性能、内存优化工具用法
  6. PHP调用数据库数据乱码问题
  7. 回归树与基于规则的模型(part3)--回归模型树
  8. L. Mod(预处理+分块)
  9. B2.Java代码查错
  10. 如何评价周志华深度森林模型
  11. SAP License:新总帐—Coding Block
  12. 生物信息学: 导论与方法 | 总结笔记
  13. 对抗神经网络(python-一维数据)
  14. 一周文章导读:fork() 成为负担;网络协议;(CPRI)带宽计算;互联网架构“高并发”;从MCU到FPGA;
  15. 密码破解与HASH计算
  16. 华为通用软件工程师面经
  17. 【Winform-右下角弹窗】实现右下角弹窗,提示信息
  18. 一堂难忘的计算机课作文,难忘的信息课作文
  19. 嵌入式系统基础——Unbuntu的初步使用
  20. linux把大文件分成小文件,linux文件分割(将大的日志文件分割成小的)

热门文章

  1. 自动化测试 (四) 自动卸载软件
  2. Ubuntu上通过 RVM 安装 多版本 Ruby/Rails
  3. 9-6 虚拟哈希分布
  4. 9-3 数据分布概论
  5. python 面向对象_Python 和 Java 基础对比 08 —— 面向对象
  6. linux tasklet 实例,Linux tasklet 分析笔记Chapter 2
  7. python获取交易软件数据_几行Python代码,轻松获取美股阿里巴巴的交易数据
  8. n160ii打印机查看ip地址_喷墨打印机自动清洁打印头方法你知道几个?
  9. 阿里云数据库再添新成员,企业级MariaDB正式开卖!
  10. python之doctest的用法