app2smile / rules

iOS App去广告
MIT License
3.34k stars 215 forks source link

feat: 去除 youtube 贴片/视频广告 #76

Closed Maasea closed 1 year ago

Maasea commented 1 year ago

方法

Step1: 拦截 initplayback 让 YouTube 回退请求 v1/player

相比于直接reject,脚本返回 204 状态码的视频加载更快。

Step2: 使用 protoc 解析 v1/player 的 protobuf 后发现编号为 7 的 message 为广告信息,删除即可。

proto 定义如下:

syntax = "proto3";

message playerRes{
    Advertisings advertisings = 7;
    message Advertisings{
        Item item = 84813246;
    }
    message Item{

    }
}

Note:

  1. 个人对 protobuf 并不熟悉,方法略显粗糙。
  2. 仅测试了 surge 和 最新版 YouTube 客户端(17.41.2)

    配置

sgmodule 需要做以下修改,牵扯到脚本链接的问题,没有进行 pr。

#!name=YouTube去广告(>=iOS15)
#!desc=去首页瀑布流广告/播放页推荐列表广告/视频广告
# 仓库地址 https://github.com/app2smile/rules

[MITM]
hostname = %APPEND% youtubei.googleapis.com, *.googlevideo.com

[Script]
youtube-proto = type=http-response,pattern=^https:\/\/youtubei\.googleapis\.com\/youtubei\/v1\/(browse|next|player)\?,requires-body=1,binary-body-mode=1,max-size=0,script-path=https://raw.githubusercontent.com/Maasea/rules/master/js/youtube.js
youtube = type=http-request,pattern=^https?:\/\/[\w-]+\.googlevideo\.com\/(?!(dclk_video_ads|videoplayback\?)).+&oad,requires-body=0,script-path=https://raw.githubusercontent.com/Maasea/rules/master/js/youtube-fake.js
app2smile commented 1 year ago

好的,感谢,晚上我测试一下

app2smile commented 1 year ago

可以加我tg 是我用户名,详细说