-
Notifications
You must be signed in to change notification settings - Fork 2.4k
/
Copy pathblock_youtube_ad.tengo
63 lines (62 loc) · 2.6 KB
/
block_youtube_ad.tengo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// iOS YouTube APP AD Block
// YouTube App v17.15.1
// https://www.txthinking.com/talks/articles/block-youtube-app-ad.article
// https://www.txthinking.com/talks/articles/block-youtube-app-ad-en.article
// [CA]
modules = append(modules, {
address: func(m) {
brook := import("brook")
if brook.os != "ios" {
return
}
if m.domainaddress {
text := import("text")
if (text.has_suffix(m.domainaddress, "googlevideo.com:443") && !text.has_prefix(m.domainaddress, "redirector")) || m.domainaddress == "www.youtube.com:443" || m.domainaddress == "s.youtube.com:443" || m.domainaddress == "youtubei.googleapis.com:443" {
if m.network == "tcp" {
return {"mitm": true, "mitmprotocol": "https"}
}
if m.network == "udp" {
return { "block": true }
}
}
}
},
httprequest: func(request) {
brook := import("brook")
if brook.os != "ios" {
return
}
text := import("text")
if(text.contains(request["URL"], "googlevideo.com") && !text.contains(request["URL"], "googlevideo.com/dclk_video_ads") && !text.contains(request["URL"], "redirector") && text.contains(request["URL"], "&ctier=L") && text.contains(request["URL"], ",ctier,")){
return {
"StatusCode": 302,
"Location": text.replace(text.replace(request["URL"], "&ctier=L", "", 1), ",ctier,", "", 1)
}
}
if(text.contains(request["URL"], "googlevideo.com") && !text.contains(request["URL"], "googlevideo.com/dclk_video_ads") && !text.contains(request["URL"], "googlevideo.com/videoplayback?") && !text.contains(request["URL"], "redirector") && text.contains(request["URL"], "&oad")){
return {
"StatusCode": 503
}
}
if(text.re_match(`^https?:\/\/youtubei\.googleapis\.com\/youtubei\/v\d\/player\/ad_break`, request["URL"])){
return {
"StatusCode": 503
}
}
if(text.re_match(`^https?:\/\/(www|s)\.youtube\.com\/api\/stats\/ads`, request["URL"])){
return {
"StatusCode": 503
}
}
if(text.re_match(`^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)`, request["URL"])){
return {
"StatusCode": 503
}
}
if(text.re_match(`^https?:\/\/s\.youtube\.com\/api\/stats\/qoe\?adcontext`, request["URL"])){
return {
"StatusCode": 503
}
}
}
})