好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 alwaysol 于 2020-12-2 11:58 编辑
此方法直接在抖音里点下载按钮就可以直接下载无水印视频保存到相册中,
只支持ios设备,需要小火jian,小气球,圈x或surge其中任意一个app
原理就是利用中间人攻击篡改返回的视频信息,把下载地址替换成无水印的播放地址
使用方法是添加重写调用js脚本,用过以上其中一个app的就应该怎么添加重写
下面就以小火箭为例,小火箭是上面四个中最便宜的用的人最多的一个(如果之前配置过证书的直接从第5步起)
1.打开小火箭,点下面的配置>default.conf(选择你当前用的那个配置文件)>编辑配置>HTTPS解密,在域名里添加 *.amemv.com
2.打开上面的HTTPS开关,先点生成新的CA证书,再选择安装证书,这时会弹出一个提示框,选择"允许"
3.打开iPhone设置,在账号下"有个已下载描述文件",点击后选右上角的安装,输入锁屏密码,再继续点安装
4.安装描述文件完成后返回打开关于本机,选择最下面的"证书信任设置",进入后找到shadowrocket那一行,把后面的开关打开
5.还是打开小火箭,配置>default.conf(选择你当前用的那个配置文件)>编辑纯文本,往下滑找到[Script]标签(没有这个标签的手动添加到[MITM]),在这下面添加以下文本:
抖音去水印 = type=http-response,script-path=https://gitee.com/passerby-b/javascript/raw/master/dywm.js,pattern=amemv.com/aweme/v1/aweme/post,max-size=1310720,requires-body=true,timeout=10,debug=true,enable=true
6.添加完成之后点击右上的保存按钮,返回小火箭首页,打开上面的主开关
7.打开抖音,刷到你想下载的视频,进作者的主页,在作品列表里找到那个视频,点击分享按钮里的下载就可以下载到相册里了
视频教程:https://v.youku.com/v_show/id_XNDk3NDQzNTA3Ng==.html
[JavaScript] 纯文本查看 复制代码
//重写匹配地址:core-c-hl.amemv.com/aweme/v1/aweme/post
//QuanX重写配置:amemv.com/aweme/v1/aweme/post url script-response-body https://gitee.com/passerby-b/javascript/raw/master/dywm.js
//MITM:*.amemv.com
//需要到作者的作品列表里找到那个视频再下载
console.log("🍎抖音去水印脚本开始!");
var body = $response.body;
var $tool = tool();
try {
if ($request.url.indexOf("amemv.com/aweme/v1/aweme/post") > -1 && !!body) {
var obj = $tool.str2json(body);
for (var i = 0; i < obj.aweme_list.length; i++) {
var play_addr = obj.aweme_list[i].video.play_addr.url_list;
obj.aweme_list[i].video.download_addr.url_list = play_addr;
console.log("🍎播放地址:" + play_addr);
}
$done({ body: $tool.json2str(obj) });
}
else {
$done({});
}
} catch (e) {
console.log("🍎try错误:" + e);
$tool.notify('try错误!', 'try错误:', e);
$done({});
}
console.log("执行完成!!!!");
function tool(){var a=typeof $httpClient!="undefined";var b=typeof $task!="undefined";var c={notify:function(i,f,h,g){var e={};if(b){if(!!g){if(typeof g=="string"){e["open-url"]=g}if(!!g.url){e["open-url"]=g.url}if(!!g.img){e["media-url"]=g.img}$notify(i,f,h,e)}else{$notify(i,f,h)}}if(a){if(!!g){if(typeof g=="string"){e["openUrl"]=g}if(!!g.url){e["openUrl"]=g.url}if(!!g.img){e["mediaUrl"]=g.img}$notification.post(i,f,h,e)}else{$notification.post(i,f,h)}}},get:function(e,f){if(b){if(typeof e=="string"){e={url:e}}e["method"]="GET";$task.fetch(e).then(function(g){f(null,d(g),g.body)},function(g){f(g.error,null,null)})}if(a){$httpClient.get(e,function(i,h,g){f(i,d(h),g)})}},post:function(e,f){if(b){if(typeof e=="string"){e={url:e}}e["method"]="POST";$task.fetch(e).then(function(g){f(null,d(g),g.body)},function(g){f(g.error,null,null)})}if(a){$httpClient.post(e,function(i,h,g){f(i,d(h),g)})}},unicode:function(e){return unescape(e.replace(/\\u/gi,"%u"))},decodeurl:function(e){return decodeURIComponent(e)},json2str:function(e){return JSON.stringify(e)},str2json:function(e){return JSON.parse(e)},setkeyval:function(f,e){if(b){$prefs.setValueForKey(f,e)}if(a){$persistentStore.write(f,e)}},getkeyval:function(e){if(b){return $prefs.valueForKey(e)}if(a){return $persistentStore.read(e)}}};function d(e){if(e){if(e.status){e["statusCode"]=e.status}else{if(e.statusCode){e["status"]=e.statusCode}}}return e}return c}; |
免费评分
-
查看全部评分
|