From dda9b84e6d2deb7577c1ee9d5760bfd15de1e286 Mon Sep 17 00:00:00 2001 From: rchudin Date: Sat, 5 Sep 2026 17:53:42 +0300 Subject: [PATCH] pac --- default.js | 399 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 399 insertions(+) create mode 100644 default.js diff --git a/default.js b/default.js new file mode 100644 index 0000000..28d40be --- /dev/null +++ b/default.js @@ -0,0 +1,399 @@ +// ============================================================ +// PROXY CONFIGURATION +// ============================================================ + +var PROXY = "SOCKS5 127.0.0.1:1080"; +var DIRECT = "DIRECT"; + + +// ============================================================ +// GOOGLE +// ============================================================ + +var googleDomains = [ + // Main + "google.com", + "google.net", + "google.org", + "googleapis.com", + "googleusercontent.com", + "gstatic.com", + "googlemail.com", + "gmail.com", + "googleapps.com", + "googledrive.com", + "googlephotos.com", + "googlemaps.com", + "googlestore.com", + "googleearth.com", + "googlesource.com", + "withgoogle.com", + "thinkwithgoogle.com", + + // Services / short links + "g.co", + "goo.gl", + "g.page", + "g.dev", + "web.app", + "appspot.com", + "run.app", + "cloudfunctions.net", + "firebaseapp.com", + "firebaseio.com", + + // CDN / infrastructure + "gvt0.com", + "gvt1.com", + "gvt2.com", + "gvt3.com", + "gvt5.com", + "gvt6.com", + "gvt7.com", + "gvt9.com", + "ggpht.com", + "1e100.net", + + // CAPTCHA + "recaptcha.net", + + // Ads / analytics + "doubleclick.net", + "doubleclick.com", + "googleadservices.com", + "googlesyndication.com", + "googletagmanager.com", + "googletagservices.com", + "google-analytics.com", + "googleanalytics.com", + "googleads.com", + "googlevads.com", + "2mdn.net" +]; + + +// ============================================================ +// YOUTUBE +// ============================================================ + +var youtubeDomains = [ + // Main + "youtube.com", + "youtu.be", + "youtube-nocookie.com", + + // Video / CDN / images + "googlevideo.com", + "ytimg.com", + "ggpht.com", + + // APIs + "youtube.googleapis.com", + "youtubei.googleapis.com", + "youtubeembeddedplayer.googleapis.com", + + // Additional + "withyoutube.com", + "youtubeeducation.com", + "youtubefanfest.com", + "youtubegaming.com", + "youtubekids.com", + "youtubemobilesupport.com", + "youtube.tv", + "youtube.soy", + "yt.be", + + // Regional + "youtube.ae", + "youtube.al", + "youtube.am", + "youtube.at", + "youtube.az", + "youtube.ba", + "youtube.be", + "youtube.bg", + "youtube.bh", + "youtube.bo", + "youtube.by", + "youtube.ca", + "youtube.cat", + "youtube.ch", + "youtube.cl", + "youtube.co", + + "youtube.co.ae", + "youtube.co.at", + "youtube.co.cr", + "youtube.co.hu", + "youtube.co.id", + "youtube.co.il", + "youtube.co.in", + "youtube.co.jp", + "youtube.co.ke", + "youtube.co.kr", + "youtube.co.ma", + "youtube.co.nz", + "youtube.co.th", + "youtube.co.tz", + "youtube.co.ug", + "youtube.co.uk", + "youtube.co.ve", + "youtube.co.za", + "youtube.co.zw", + + "youtube.com.ar", + "youtube.com.au", + "youtube.com.az", + "youtube.com.bd", + "youtube.com.bh", + "youtube.com.bo", + "youtube.com.br", + "youtube.com.by", + "youtube.com.co", + "youtube.com.do", + "youtube.com.ec", + "youtube.com.ee", + "youtube.com.eg", + "youtube.com.es", + "youtube.com.gh", + "youtube.com.gr", + "youtube.com.gt", + "youtube.com.hk", + "youtube.com.hn", + "youtube.com.hr", + "youtube.com.jm", + "youtube.com.jo", + "youtube.com.kw", + "youtube.com.lb", + "youtube.com.lv", + "youtube.com.ly", + "youtube.com.mk", + "youtube.com.mt", + "youtube.com.mx", + "youtube.com.my", + "youtube.com.ng", + "youtube.com.ni", + "youtube.com.om", + "youtube.com.pa", + "youtube.com.pe", + "youtube.com.ph", + "youtube.com.pk", + "youtube.com.pt", + "youtube.com.py", + "youtube.com.qa", + "youtube.com.ro", + "youtube.com.sa", + "youtube.com.sg", + "youtube.com.sv", + "youtube.com.tn", + "youtube.com.tr", + "youtube.com.tw", + "youtube.com.ua", + "youtube.com.uy", + "youtube.com.ve", + + "youtube.cr", + "youtube.cz", + "youtube.de", + "youtube.dk", + "youtube.ee", + "youtube.es", + "youtube.fi", + "youtube.fr", + "youtube.ge", + "youtube.gr", + "youtube.gt", + "youtube.hk", + "youtube.hr", + "youtube.hu", + "youtube.ie", + "youtube.in", + "youtube.iq", + "youtube.is", + "youtube.it", + "youtube.jo", + "youtube.jp", + "youtube.kr", + "youtube.kz", + "youtube.la", + "youtube.lk", + "youtube.lt", + "youtube.lu", + "youtube.lv", + "youtube.ly", + "youtube.ma", + "youtube.md", + "youtube.me", + "youtube.mk", + "youtube.mn", + "youtube.mx", + "youtube.my", + "youtube.ng", + "youtube.ni", + "youtube.nl", + "youtube.no", + "youtube.pa", + "youtube.pe", + "youtube.ph", + "youtube.pk", + "youtube.pl", + "youtube.pr", + "youtube.pt", + "youtube.qa", + "youtube.ro", + "youtube.rs", + "youtube.ru", + "youtube.sa", + "youtube.se", + "youtube.sg", + "youtube.si", + "youtube.sk", + "youtube.sn", + "youtube.sv", + "youtube.tn", + "youtube.ua", + "youtube.ug", + "youtube.uy", + "youtube.vn" +]; + + +// ============================================================ +// OPENAI / CHATGPT +// ============================================================ + +var openaiDomains = [ + // Main + "openai.com", + "chatgpt.com", + "chat.com", + "sora.com", + "crixet.com", + + // Static / uploads / content + "oaistatic.com", + "oaiusercontent.com", + "oaistatsig.com", + "openaimerge.com", + + // CDN / storage + "openai.com.cdn.cloudflare.net", + "openaiapi-site.azureedge.net", + "openaicom-api-bdcpf8c6d2e9atf6.z01.azurefd.net", + "openaicom.imgix.net", + "openaicomproductionae4b.blob.core.windows.net", + "production-openaicom-storage.azureedge.net", + + // Voice / realtime + "chatgpt.livekit.cloud", + "host.livekit.cloud", + "turn.livekit.cloud", + + // Authentication / supporting services + // Note: some of these are shared by other websites. + "challenges.cloudflare.com", + "workos.com", + "workoscdn.com", + "workos.imgix.net", + "intercom.io", + "intercomcdn.com", + "ct.sendgrid.net" +]; + + +// ============================================================ +// SPOTIFY +// ============================================================ + +var spotifyDomains = [ + // Main + "spotify.com", + "spotifycdn.com", + "spotifycdn.net", + "scdn.co", + "pscdn.co", + + // Links + "spoti.fi", + "spotify.link", + "byspotify.com", + "tospotify.com", + + // Services + "spotify-everywhere.com", + "spotify.design", + "spotifycharts.com", + "spotifycodes.com", + "spotifyforbrands.com", + "spotifyforvendors.com", + "spotifyjobs.com", + "lifeatspotify.com", + + // Audio / CDN + "audio-ak-spotify-com.akamaized.net", + "audio4-ak-spotify-com.akamaized.net", + "heads-ak-spotify-com.akamaized.net", + "heads4-ak-spotify-com.akamaized.net", + + "spotify.com.edgesuite.net", + "spotify.map.fastly.net", + "spotify.map.fastlylb.net", + + // Experiments / telemetry + "cdn-spotify-experiments.conductrics.com", + "adeventtracker.spotify.com", + "adstudio-assets.scdn.co", + "bloodhound.spotify.com" +]; + + +// ============================================================ +// DOMAIN MATCHING +// ============================================================ + +// Matches: +// spotify.com +// open.spotify.com +// accounts.spotify.com +// foo.bar.spotify.com +// +// Does NOT match: +// notspotify.com +// spotify.com.example.org + +function domainMatches(host, domain) { + return host === domain || + (host.length > domain.length && + host.substring(host.length - domain.length - 1) === "." + domain); +} + + +function matchesAnyDomain(host, domains) { + for (var i = 0; i < domains.length; i++) { + if (domainMatches(host, domains[i])) { + return true; + } + } + + return false; +} + + +// ============================================================ +// PAC ENTRY POINT +// ============================================================ + +function FindProxyForURL(url, host) { + host = host.toLowerCase(); + + if ( + matchesAnyDomain(host, googleDomains) || + matchesAnyDomain(host, youtubeDomains) || + matchesAnyDomain(host, openaiDomains) || + matchesAnyDomain(host, spotifyDomains) + ) { + return PROXY; + } + + return DIRECT; +} \ No newline at end of file