做网站攻略,织梦网站建设考试,哪个淘宝客网站最好,关于建设门户网站的通知From#xff1a;https://blog.csdn.net/Fan_shui/article/details/81461253 一、前言 前面我们已经用 appium 爬取了微信朋友圈#xff0c;今天我们学习下 mitmproxy#xff0c;mitmproxy 是干什么的呢#xff0c;它跟 charles 和 fiddler类似#xff0c;是一个抓包工具https://blog.csdn.net/Fan_shui/article/details/81461253 一、前言 前面我们已经用 appium 爬取了微信朋友圈今天我们学习下 mitmproxymitmproxy 是干什么的呢它跟 charles 和 fiddler类似是一个抓包工具以控制台的形式显示mitmproxy 的重要性在于它可以对接 python可以通过 python 处理抓包的数据。试想一下我们如果不用 mitmproxy用 fiddler 抓取抖音的视频地址我们可以抓到视频的地址这些地址要是可以直接用requests 缓存下来就好了mitmproxy 就派上用场了。
知乎python3爬虫三mitmproxy下载抖音小视频https://zhuanlan.zhihu.com/p/41492085 GitHubhttps://github.com/FanShuixing/git_webspider 二、学习目标 可以根据抖音号和抖音名称爬取到对应的抖音小视频 三、学习资料感谢分享 崔大的mitmproxy安装教程https://cuiqingcai.com/5391.html 抖音教程https://blog.csdn.net/mp624183768/article/details/80956368 fiddler的使用https://blog.csdn.net/c406495762/article/details/76850843 四、mitmproxy的安装 请先按照崔大的mitmproxy的安装 进行安装和证书的配置如果安卓证书安装有问题可以参看下面华为手机应该普遍适用 把文件复制到手机qq后可以在文件管理的下载中查看qq文件 第一个是我们下载的证书长按后勾上它 点击下面的菜单查看详情这样可以看见这个证书的具体位置一会有用 电脑打开360WiFi后,手机连接上360WiFi在WiFi里面的菜单 安装证书就需要找到证书的位置这样刚才我们在文件管理里面看到的位置就可以在这儿用到找到证书安装即可。
配置代理 证书安装完成后要配置手机和电脑处在同一个局域网内我建议用360wifi其它wifi应该也可以但是最好不要用自己家路由器的wifi我家wifi测试的时候没成功360WiFi才成功了的。 如果弄完之后在cmd中输入mitmdump在手机中打开浏览器看看有没有网络看看电脑的控制台有没有输出抓取信息如果有恭喜你安装成功。如果没有憋着急看看我的办法能不能帮助你
建议弄完后我发现手机浏览器中打不开网页qq和微信是有网络的我重新安装了一下mitmproxy不过不是用pip安装而是直接下载的 安装文件https://github.com/mitmproxy/mitmproxy/releases 选择个exe就行 安装好后查看安装路径下的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 jsondef 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, osdef response(flow):url https://api.amemv.com/aweme/v1/aweme/post/# 筛选出以上面url为开头的urlif 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:/爬虫数据/douyinif 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 requestsdef 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:/爬虫数据/douyinif 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 requestsdef 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:/爬虫数据/douyinif 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(urlurl, verifyFalse)with open(filename, ab) as f:f.write(req.content)f.flush()print(filename, 下载完毕) 这个只要我们没有关闭mitmdump运行窗口我们可以搜索其他的抖音用户的页面也会被下载下来不知道大家是更喜欢appium自动化还是喜欢自己用手滑嘿嘿嘿嘿
若针对requests导入错误有更好的建议欢迎分享(●ˇ∀ˇ●)