本帖最后由 小白大侠 于 2021-3-14 13:55 编辑
Fiddler自动抓取抖音无水印视频并且自动保存
前言:这段代码实用性不大,大量数据处理容易造成Fiddler卡死,只是希望给未来写FiddlerScript脚本的人一点启发,毕竟有些代码的写法百度不到
准备工具:
Xponsed+JustTrustMe,工具下载链接:https://pan.baidu.com/s/1Lp8cqtftHxch1DoWE7h_OQ提取码:1234
工具安装方法JustTrustMe安装教程https://blog.csdn.net/kai402458953/article/details/99483077雷电模拟器稳定版(左上角3.x是稳定版,4.x是最新版也就是非稳定版)
配置好的Fiddler
代码配置方法
首先找到Fiddler中的FiddlerScript
抖音1.png (57.77 KB, 下载次数: 0)
2021-3-14 13:31 上传
找到Go to 选择OnBeforeResponse
抖音2.png (35.57 KB, 下载次数: 0)
2021-3-14 13:33 上传
找到空白区域,放入代码
抖音3.png (16 KB, 下载次数: 0)
2021-3-14 13:34 上传
最后一定要点击Save script,一定要点击Save script,一定要点击Save script
抖音4.png (115.81 KB, 下载次数: 0)
2021-3-14 13:36 上传
然后点击进入抖音,进入你想要下载的抖音个人主页
抖音5.png (100.56 KB, 下载次数: 0)
2021-3-14 13:37 上传
最后效果
抖音6.png (455.71 KB, 下载次数: 0)
2021-3-14 13:38 上传
抖音7.png (288.66 KB, 下载次数: 0)
2021-3-14 13:38 上传
完整代码
[JavaScript] 纯文本查看 复制代码//
if(oSession.fullUrl.Contains("name") && oSession.fullUrl.Contains("douyinvod.com")){
try{
if(oSession.oResponse["Content-Type"].Contains("mp4")){
//保存视频的路径
var saveDir = "d:\\douyin\\"
if (!System.IO.Directory.Exists(saveDir)){
System.IO.Directory.CreateDirectory(saveDir);
}
FiddlerObject.log(oSession.oRequest)
//获取视频名字
var name = Utilities.UrlDecode(oSession.fullUrl);
//保存视频
oSession.SaveResponseBody(saveDir+name.Substring(name.LastIndexOf("name=")+5)+".mp4");
};
}catch(e){
FiddlerObject.log("保持视频出错!错误原因:"+e);
}finally{
}
}
if(oSession.fullUrl.Contains("https://aweme.snssdk.com/aweme/v1/aweme/post/")){
oSession.utilDecodeResponse();//消除保存的请求可能存在乱码的情况
var jsonString = oSession.GetResponseBodyAsString();
var responseJSON = Fiddler.WebFormats.JSON.JsonDecode(jsonString);
if((responseJSON.JSONObject=='System.Collections.ArrayList' || responseJSON.JSONObject=='System.Collections.Hashtable')&&jsonString!='[]'&&jsonString!='{}'){
// 判断是否是json数据 然后保存
var al = new Array();
//遍历json数据里面的url链接
for(var list in responseJSON.JSONObject["aweme_list"]){
var title = list["desc"];
var videoUrl = list["video"]["play_addr"]["url_list"][1];
//输出日志的内容
FiddlerObject.log("抖音视频标题:"+title);
FiddlerObject.log(videoUrl);
var method = "GET";
var protocol = "HTTP/1.0";
var raw="";
var selected: Session = oSession;
raw += method + " " + videoUrl+"&name="+Utilities.UrlEncode(title) + " " + protocol + "\r\n\r\n";
//发起请求
FiddlerObject.utilIssueRequest(raw);
}
}
}