// Download older version app from iTunes server
// 使用 Brook 下载任意 iOS App 的旧版本
//
// Replace the values of appid and versionid to yours.
//
// https://www.txthinking.com/talks/articles/ios-old-version-app.article
// https://www.txthinking.com/talks/articles/ios-old-version-app-en.article
appid := "544007664" // YouTube
versionid := "848374799" // v17.15.1
text := import("text")
f := func(){
if in_dnsquery {
// block secure dns
if in_dnsquery.domain == "dns.google" {
return {block: true}
}
}
if in_address {
m := in_address
if m.ipaddress {
// block secure dns
if m.ipaddress == "8.8.8.8:853" || m.ipaddress == "8.8.8.8:443" || m.ipaddress == "8.8.4.4:853" || m.ipaddress == "8.8.4.4:443" || m.ipaddress == "[2001:4860:4860::8888]:853" || m.ipaddress == "[2001:4860:4860::8888]:443" || m.ipaddress == "[2001:4860:4860::8844]:853" || m.ipaddress == "[2001:4860:4860::8844]:443" {
return { "block": true }
}
}
if m.domainaddress {
// block secure dns
if text.has_prefix(m.domainaddress, "dns.google:") {
return { "block": true }
}
if text.has_suffix(m.domainaddress, "-buy.itunes.apple.com:443") {
return {
mitm:true,
mitmprotocol: "https",
mitmwithbody: true,
mitmautohandlecompress: true
}
}
}
return
}
if in_httprequest && !in_httpresponse {
if in_httprequest["Method"] == "POST" && text.contains(in_httprequest["URL"], "/WebObjects/MZBuy.woa/wa/buyProduct") {
s := string(in_httprequest["Body"])
if text.contains(s, ""+appid+"") {
in_httprequest["Body"] = bytes(text.re_replace(`appExtVrsId\s*\d+`, s, "appExtVrsId\n"+versionid+""))
}
}
return in_httprequest
}
if in_httprequest && in_httpresponse {
return in_httpresponse
}
}
out := f()