网页直播视频抓取工具下载(本文仅供参考学习,禁止用于任何形式的商业用途,违者自行承担责任 )
优采云 发布时间: 2021-12-05 02:06网页直播视频抓取工具下载(本文仅供参考学习,禁止用于任何形式的商业用途,违者自行承担责任
)
本文仅供参考,禁止用于任何形式的商业用途,违者自负。
准备好工作了:
(1),手机(安卓、ios均可)/安卓模拟器,今天主要是安卓模拟器,操作流程一样。
(2),抓包工具:Fiddel 下载链接:()
(3),编程工具:pycharm
(4),安装在安卓模拟器上(逍遥安装模拟器)
一、提琴手配置
在工具的选项中,如图打勾,点击操作,选择信任根证书。
配置远程链接:
选择允许远程链接监控,端口可以随意设置,只要不重复,默认是8888
然后:重新启动提琴手!!!该配置可以生效。
二、安卓模拟器/手机配置
首先查看机器的IP:在cmd中输入ipconfig,记住这个IP
确保手机和电脑在同一个局域网内。
手机配置:配置连接的WiFi,代理选择手动,输入上图中ip端口号为8888
模拟器配置:在设置中,长按连接的wifi,代理选择手动,然后输入上图中的ip端口号为8888
设置好代理后,在浏览器中输入你设置的ip:端口,例如10.10.16.194:8888,就会打开fiddler页面。然后点击fiddlerRoot证书安装证书,不然手机会认为环境不安全。
证书名称随意设置,可能还需要设置锁屏密码。
然后就可以在fiddler中抓取手机/模拟器软件包了。
三、抓包
打开app,观察fiddler中的所有包
有一个包,包类型是json(json是网页返回的数据,具体百度),主机地址如图,包大小一般不小,这就是视频包。
点击这个json包,在fdder右侧,点击decode,我们将解码视频包的json
解码后:点击aweme_list,每个大括号代表一个视频,每次加载一点,读完预加载的再加载一些。
Json 是一本字典。我们的视频链接在:aweme_list。在每个视频下的video下的play_addr下的url_list中,一共有6个url,都是一模一样的视频。它们可能用于应对不同的环境,但一般第一个带有 3 或 4 个链接的 Video 不容易出问题。复制链接并将其粘贴到浏览器中以查看视频。
接下来解决几个问题,
1、 视频数量。每个包中只有这么少的视频。怎么抢更多?
这时候就需要用模拟器的模拟鼠标翻页,让模拟器不停的翻页,这样json包才会不断出现。
2、如何将json保存到本地使用
一种方法可以手动复制粘贴,但是这种方法很低。
所以我们使用fidder自带的脚本,在里面添加规则,刷出视频json包时自动保存json包。
自定义规则包:
提取码:7z0l
if (oSession.uriContains("https://api-eagle.amemv.com/aweme/v1/feed/")){
var strBody=oSession.GetResponseBodyAsString();
var sps = oSession.PathAndQuery.slice(-58,);
//FiddlerObject.alert(sps)
var filename = "C:/Users/HEXU/Desktop/数据爬取/爬取资料/raw_data" + "/" + sps + ".json";
var curDate = new Date();
var sw : System.IO.StreamWriter;
if (System.IO.File.Exists(filename)){
sw = System.IO.File.AppendText(filename);
sw.Write(strBody);
}
else{
sw = System.IO.File.CreateText(filename);
sw.Write(strBody);
}
sw.Close();
sw.Dispose();
}
点击规则脚本,然后将自定义规则放置在如图所示的位置:
这个脚本有两点需要修改:
(1)第一行的网址:
这是从视频包的 url 中提取的。某个声音会时不时更新这个url,所以如果不能用就更新一下:
比如现在的和昨天的不一样,记得修改。
(2)路径,就是我设置json包保存的地址,必须自己修改,创建文件夹,修改后记得保存。
打开并设置好模拟器和脚本后,稍等片刻,就可以看到文件夹中保存的包:
四、 爬虫脚本
接下来在pycharm中编写脚本,获取json包中的视频链接:
指南包:
导入操作系统、json、请求
迷彩头:
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'}
逻辑代码:
影响:
源代码:
import os,json,requests
#伪装头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'}
videos_list = os.listdir('C:/Users/HEXU/Desktop/数据爬取/爬取资料/raw_data/') #获取文件夹内所有json包名
count = 1 #计数,用来作为视频名字
for videos in videos_list: #循环json列表,对每个json包进行操作
a = open('./爬取资料/raw_data/{}'.format(videos),encoding='utf-8') #打开json包
content = json.load(a)['aweme_list'] #取出json包中所有视频
for video in content: #循环视频列表,选取每个视频
video_url = video['video']['play_addr']['url_list'][4] #获取视频url,每个视频有6个url,我选的第5个
videoMp4 = requests.request('get',video_url,headers=headers).content #获取视频二进制代码
with open('./爬取资料/VIDEO/{}.mp4'.format(count),'wb') as f: #以二进制方式写入路径,记住要先创建路径
f.write(videoMp4) #写入
print('视频{}下载完成'.format(count)) #下载提示
count += 1 #计数+1