function FindProxyForURL(url, host) { // RRPP 规则代理列表 — 仅以下域名走加密隧道 var proxy = "PROXY 127.0.0.1:1080"; // Google 全系 + Gemini + CDN if (shExpMatch(host, "google.com") || shExpMatch(host, "*.google.com") || shExpMatch(host, "google.com.hk") || shExpMatch(host, "*.google.com.hk") || shExpMatch(host, "google.co.jp") || shExpMatch(host, "*.google.co.jp") || shExpMatch(host, "googleapis.com") || shExpMatch(host, "*.googleapis.com") || shExpMatch(host, "googleusercontent.com") || shExpMatch(host, "*.googleusercontent.com") || shExpMatch(host, "googletagmanager.com") || shExpMatch(host, "*.googletagmanager.com") || shExpMatch(host, "google-analytics.com") || shExpMatch(host, "*.google-analytics.com") || shExpMatch(host, "gstatic.com") || shExpMatch(host, "*.gstatic.com") || shExpMatch(host, "ggpht.com") || shExpMatch(host, "*.ggpht.com") || shExpMatch(host, "googlehosted.com") || shExpMatch(host, "*.googlehosted.com") || shExpMatch(host, "1e100.net") || shExpMatch(host, "*.1e100.net") || shExpMatch(host, "youtube.com") || shExpMatch(host, "*.youtube.com") || shExpMatch(host, "ytimg.com") || shExpMatch(host, "*.ytimg.com") || shExpMatch(host, "googlevideo.com") || shExpMatch(host, "*.googlevideo.com") || shExpMatch(host, "gemini.google.com") || shExpMatch(host, "*.gemini.google.com") || shExpMatch(host, "generativeai.googleapis.com") || shExpMatch(host, "*.generativeai.googleapis.com") || shExpMatch(host, "aistudio.google.com") || shExpMatch(host, "*.aistudio.google.com") || shExpMatch(host, "deepmind.google.com") || shExpMatch(host, "*.deepmind.google.com") || shExpMatch(host, "deepmind.com") || shExpMatch(host, "*.deepmind.com")) { return proxy; } // OpenAI / ChatGPT 全系 + CDN if (shExpMatch(host, "openai.com") || shExpMatch(host, "*.openai.com") || shExpMatch(host, "chatgpt.com") || shExpMatch(host, "*.chatgpt.com") || shExpMatch(host, "oaistatic.com") || shExpMatch(host, "*.oaistatic.com") || shExpMatch(host, "oaiusercontent.com") || shExpMatch(host, "*.oaiusercontent.com") || shExpMatch(host, "openaiusercontent.com") || shExpMatch(host, "*.openaiusercontent.com")) { return proxy; } // Grok / xAI 全系 + CDN if (shExpMatch(host, "grok.com") || shExpMatch(host, "*.grok.com") || shExpMatch(host, "x.com") || shExpMatch(host, "*.x.com") || shExpMatch(host, "twitter.com") || shExpMatch(host, "*.twitter.com") || shExpMatch(host, "twimg.com") || shExpMatch(host, "*.twimg.com") || shExpMatch(host, "x.ai") || shExpMatch(host, "*.x.ai") || shExpMatch(host, "xai.com") || shExpMatch(host, "*.xai.com")) { return proxy; } // Meta 全系 + CDN if (shExpMatch(host, "meta.com") || shExpMatch(host, "*.meta.com") || shExpMatch(host, "meta.ai") || shExpMatch(host, "*.meta.ai") || shExpMatch(host, "facebook.com") || shExpMatch(host, "*.facebook.com") || shExpMatch(host, "fb.com") || shExpMatch(host, "*.fb.com") || shExpMatch(host, "fbcdn.net") || shExpMatch(host, "*.fbcdn.net") || shExpMatch(host, "fbsbx.com") || shExpMatch(host, "*.fbsbx.com") || shExpMatch(host, "instagram.com") || shExpMatch(host, "*.instagram.com") || shExpMatch(host, "cdninstagram.com") || shExpMatch(host, "*.cdninstagram.com") || shExpMatch(host, "threads.net") || shExpMatch(host, "*.threads.net") || shExpMatch(host, "whatsapp.com") || shExpMatch(host, "*.whatsapp.com") || shExpMatch(host, "whatsapp.net") || shExpMatch(host, "*.whatsapp.net") || shExpMatch(host, "messenger.com") || shExpMatch(host, "*.messenger.com")) { return proxy; } // Claude / Anthropic 全系 + CDN if (shExpMatch(host, "anthropic.com") || shExpMatch(host, "*.anthropic.com") || shExpMatch(host, "claude.ai") || shExpMatch(host, "*.claude.ai") || shExpMatch(host, "claudeusercontent.com") || shExpMatch(host, "*.claudeusercontent.com")) { return proxy; } // Dify 全系 if (shExpMatch(host, "dify.ai") || shExpMatch(host, "*.dify.ai") || shExpMatch(host, "udify.app") || shExpMatch(host, "*.udify.app")) { return proxy; } // Cloudflare 全系 if (shExpMatch(host, "cloudflare.com") || shExpMatch(host, "*.cloudflare.com") || shExpMatch(host, "cloudflare.net") || shExpMatch(host, "*.cloudflare.net") || shExpMatch(host, "cloudflareinsights.com") || shExpMatch(host, "*.cloudflareinsights.com") || shExpMatch(host, "cloudflarestatus.com") || shExpMatch(host, "*.cloudflarestatus.com") || shExpMatch(host, "cloudflarecdn.com") || shExpMatch(host, "*.cloudflarecdn.com") || shExpMatch(host, "cf-cdn.com") || shExpMatch(host, "*.cf-cdn.com") || shExpMatch(host, "workers.dev") || shExpMatch(host, "*.workers.dev") || shExpMatch(host, "pages.dev") || shExpMatch(host, "*.pages.dev")) { return proxy; } // GitHub 全系 if (shExpMatch(host, "github.com") || shExpMatch(host, "*.github.com") || shExpMatch(host, "githubusercontent.com") || shExpMatch(host, "*.githubusercontent.com") || shExpMatch(host, "githubassets.com") || shExpMatch(host, "*.githubassets.com") || shExpMatch(host, "github.io") || shExpMatch(host, "*.github.io") || shExpMatch(host, "githubcopilot.com") || shExpMatch(host, "*.githubcopilot.com") || shExpMatch(host, "ghcr.io") || shExpMatch(host, "*.ghcr.io")) { return proxy; } // Hugging Face 全系 + CDN if (shExpMatch(host, "huggingface.co") || shExpMatch(host, "*.huggingface.co") || shExpMatch(host, "hf.co") || shExpMatch(host, "*.hf.co") || shExpMatch(host, "huggingfacecdn.com") || shExpMatch(host, "*.huggingfacecdn.com")) { return proxy; } // Microsoft Copilot 全系 + Bing + Azure CDN if (shExpMatch(host, "microsoft.com") || shExpMatch(host, "*.microsoft.com") || shExpMatch(host, "bing.com") || shExpMatch(host, "*.bing.com") || shExpMatch(host, "bingapis.com") || shExpMatch(host, "*.bingapis.com") || shExpMatch(host, "bing.net") || shExpMatch(host, "*.bing.net") || shExpMatch(host, "live.com") || shExpMatch(host, "*.live.com") || shExpMatch(host, "microsoftonline.com") || shExpMatch(host, "*.microsoftonline.com") || shExpMatch(host, "microsoft365.com") || shExpMatch(host, "*.microsoft365.com") || shExpMatch(host, "office.com") || shExpMatch(host, "*.office.com") || shExpMatch(host, "office.net") || shExpMatch(host, "*.office.net") || shExpMatch(host, "azure.com") || shExpMatch(host, "*.azure.com") || shExpMatch(host, "azureedge.net") || shExpMatch(host, "*.azureedge.net") || shExpMatch(host, "azurefd.net") || shExpMatch(host, "*.azurefd.net") || shExpMatch(host, "msn.com") || shExpMatch(host, "*.msn.com") || shExpMatch(host, "msecnd.net") || shExpMatch(host, "*.msecnd.net") || shExpMatch(host, "msftncsi.com") || shExpMatch(host, "*.msftncsi.com") || shExpMatch(host, "s-microsoft.com") || shExpMatch(host, "*.s-microsoft.com")) { return proxy; } // Steam 全系 + CDN / 社区 / 下载 if (shExpMatch(host, "steampowered.com") || shExpMatch(host, "*.steampowered.com") || shExpMatch(host, "steamcommunity.com") || shExpMatch(host, "*.steamcommunity.com") || shExpMatch(host, "steam.com") || shExpMatch(host, "*.steam.com") || shExpMatch(host, "steamgames.com") || shExpMatch(host, "*.steamgames.com") || shExpMatch(host, "steamusercontent.com") || shExpMatch(host, "*.steamusercontent.com") || shExpMatch(host, "steamcontent.com") || shExpMatch(host, "*.steamcontent.com") || shExpMatch(host, "steamstatic.com") || shExpMatch(host, "*.steamstatic.com") || shExpMatch(host, "steam-chat.com") || shExpMatch(host, "*.steam-chat.com") || shExpMatch(host, "steam-api.com") || shExpMatch(host, "*.steam-api.com") || shExpMatch(host, "steamserver.net") || shExpMatch(host, "*.steamserver.net") || shExpMatch(host, "steamcdn-a.akamaihd.net") || shExpMatch(host, "*.steamcdn-a.akamaihd.net") || shExpMatch(host, "steamcommunity-a.akamaihd.net") || shExpMatch(host, "*.steamcommunity-a.akamaihd.net") || shExpMatch(host, "steamstore-a.akamaihd.net") || shExpMatch(host, "*.steamstore-a.akamaihd.net") || shExpMatch(host, "steamuserimages-a.akamaihd.net") || shExpMatch(host, "*.steamuserimages-a.akamaihd.net") || shExpMatch(host, "akamaihd.net") || shExpMatch(host, "*.akamaihd.net") || shExpMatch(host, "valvesoftware.com") || shExpMatch(host, "*.valvesoftware.com")) { return proxy; } // Discord 全系 if (shExpMatch(host, "discord.com") || shExpMatch(host, "*.discord.com") || shExpMatch(host, "discordapp.com") || shExpMatch(host, "*.discordapp.com") || shExpMatch(host, "discord.gg") || shExpMatch(host, "*.discord.gg") || shExpMatch(host, "discord.media") || shExpMatch(host, "*.discord.media") || shExpMatch(host, "discordapp.net") || shExpMatch(host, "*.discordapp.net")) { return proxy; } // Telegram 全系 if (shExpMatch(host, "telegram.org") || shExpMatch(host, "*.telegram.org") || shExpMatch(host, "t.me") || shExpMatch(host, "*.t.me") || shExpMatch(host, "telega.one") || shExpMatch(host, "*.telega.one") || shExpMatch(host, "telegram-cdn.org") || shExpMatch(host, "*.telegram-cdn.org")) { return proxy; } // Reddit 全系 if (shExpMatch(host, "reddit.com") || shExpMatch(host, "*.reddit.com") || shExpMatch(host, "redd.it") || shExpMatch(host, "*.redd.it") || shExpMatch(host, "redditmedia.com") || shExpMatch(host, "*.redditmedia.com") || shExpMatch(host, "redditstatic.com") || shExpMatch(host, "*.redditstatic.com")) { return proxy; } // LINE 全系 if (shExpMatch(host, "line.me") || shExpMatch(host, "*.line.me") || shExpMatch(host, "line-apps.com") || shExpMatch(host, "*.line-apps.com") || shExpMatch(host, "line-scdn.net") || shExpMatch(host, "*.line-scdn.net")) { return proxy; } // Spotify 全系 if (shExpMatch(host, "spotify.com") || shExpMatch(host, "*.spotify.com") || shExpMatch(host, "spotifycdn.com") || shExpMatch(host, "*.spotifycdn.com") || shExpMatch(host, "scdn.co") || shExpMatch(host, "*.scdn.co")) { return proxy; } // Netflix 全系 if (shExpMatch(host, "netflix.com") || shExpMatch(host, "*.netflix.com") || shExpMatch(host, "nflxvideo.net") || shExpMatch(host, "*.nflxvideo.net") || shExpMatch(host, "nflximg.net") || shExpMatch(host, "*.nflximg.net") || shExpMatch(host, "nflxext.com") || shExpMatch(host, "*.nflxext.com")) { return proxy; } // Disney+ 全系 if (shExpMatch(host, "disneyplus.com") || shExpMatch(host, "*.disneyplus.com") || shExpMatch(host, "disney-plus.net") || shExpMatch(host, "*.disney-plus.net") || shExpMatch(host, "dssott.com") || shExpMatch(host, "*.dssott.com")) { return proxy; } // TikTok 全系 if (shExpMatch(host, "tiktok.com") || shExpMatch(host, "*.tiktok.com") || shExpMatch(host, "tiktokcdn.com") || shExpMatch(host, "*.tiktokcdn.com") || shExpMatch(host, "tiktokv.com") || shExpMatch(host, "*.tiktokv.com")) { return proxy; } // PlayStation 全系 if (shExpMatch(host, "playstation.com") || shExpMatch(host, "*.playstation.com") || shExpMatch(host, "sonyentertainmentnetwork.com") || shExpMatch(host, "*.sonyentertainmentnetwork.com")) { return proxy; } // Nintendo 全系 if (shExpMatch(host, "nintendo.com") || shExpMatch(host, "*.nintendo.com") || shExpMatch(host, "nintendowifi.net") || shExpMatch(host, "*.nintendowifi.net")) { return proxy; } // Epic Games 全系 if (shExpMatch(host, "epicgames.com") || shExpMatch(host, "*.epicgames.com") || shExpMatch(host, "unrealengine.com") || shExpMatch(host, "*.unrealengine.com")) { return proxy; } // DuckDuckGo / Brave Search if (shExpMatch(host, "duckduckgo.com") || shExpMatch(host, "*.duckduckgo.com") || shExpMatch(host, "search.brave.com") || shExpMatch(host, "*.search.brave.com")) { return proxy; } // Proton 全系 if (shExpMatch(host, "proton.me") || shExpMatch(host, "*.proton.me") || shExpMatch(host, "protonmail.com") || shExpMatch(host, "*.protonmail.com") || shExpMatch(host, "protonvpn.com") || shExpMatch(host, "*.protonvpn.com")) { return proxy; } // Stack Overflow / Stack Exchange 全系 if (shExpMatch(host, "stackoverflow.com") || shExpMatch(host, "*.stackoverflow.com") || shExpMatch(host, "stackexchange.com") || shExpMatch(host, "*.stackexchange.com") || shExpMatch(host, "superuser.com") || shExpMatch(host, "*.superuser.com") || shExpMatch(host, "serverfault.com") || shExpMatch(host, "*.serverfault.com")) { return proxy; } // Quora / Medium if (shExpMatch(host, "quora.com") || shExpMatch(host, "*.quora.com") || shExpMatch(host, "medium.com") || shExpMatch(host, "*.medium.com")) { return proxy; } // Pixiv 全系 if (shExpMatch(host, "pixiv.net") || shExpMatch(host, "*.pixiv.net") || shExpMatch(host, "pximg.net") || shExpMatch(host, "*.pximg.net")) { return proxy; } // ニコニコ 全系 if (shExpMatch(host, "nicovideo.jp") || shExpMatch(host, "*.nicovideo.jp") || shExpMatch(host, "nico.ms") || shExpMatch(host, "*.nico.ms")) { return proxy; } // EA / Origin / Apex 全系 if (shExpMatch(host, "ea.com") || shExpMatch(host, "*.ea.com") || shExpMatch(host, "origin.com") || shExpMatch(host, "*.origin.com") || shExpMatch(host, "eaassets.com") || shExpMatch(host, "*.eaassets.com") || shExpMatch(host, "apexlegends.com") || shExpMatch(host, "*.apexlegends.com")) { return proxy; } // Battle.net / Blizzard 全系 if (shExpMatch(host, "battle.net") || shExpMatch(host, "*.battle.net") || shExpMatch(host, "blizzard.com") || shExpMatch(host, "*.blizzard.com")) { return proxy; } // Ubisoft 全系 if (shExpMatch(host, "ubisoft.com") || shExpMatch(host, "*.ubisoft.com") || shExpMatch(host, "ubi.com") || shExpMatch(host, "*.ubi.com")) { return proxy; } // Riot Games / 英雄联盟 / Valorant 全系 if (shExpMatch(host, "riotgames.com") || shExpMatch(host, "*.riotgames.com") || shExpMatch(host, "leagueoflegends.com") || shExpMatch(host, "*.leagueoflegends.com") || shExpMatch(host, "valorant.com") || shExpMatch(host, "*.valorant.com")) { return proxy; } // GOG / itch.io 全系 if (shExpMatch(host, "gog.com") || shExpMatch(host, "*.gog.com") || shExpMatch(host, "itch.io") || shExpMatch(host, "*.itch.io")) { return proxy; } // Twitch 全系 if (shExpMatch(host, "twitch.tv") || shExpMatch(host, "*.twitch.tv") || shExpMatch(host, "ttvnw.net") || shExpMatch(host, "*.ttvnw.net") || shExpMatch(host, "twitchcdn.net") || shExpMatch(host, "*.twitchcdn.net")) { return proxy; } // Crunchyroll 全系 if (shExpMatch(host, "crunchyroll.com") || shExpMatch(host, "*.crunchyroll.com")) { return proxy; } // Amazon Prime Video 全系 if (shExpMatch(host, "primevideo.com") || shExpMatch(host, "*.primevideo.com")) { return proxy; } // Apple TV+ 全系 if (shExpMatch(host, "tv.apple.com") || shExpMatch(host, "tvplus.apple.com")) { return proxy; } // HBO Max / Hulu / Paramount+ 全系 if (shExpMatch(host, "max.com") || shExpMatch(host, "*.max.com") || shExpMatch(host, "hulu.com") || shExpMatch(host, "*.hulu.com") || shExpMatch(host, "paramountplus.com") || shExpMatch(host, "*.paramountplus.com")) { return proxy; } // Slack 全系 if (shExpMatch(host, "slack.com") || shExpMatch(host, "*.slack.com") || shExpMatch(host, "slack-edge.com") || shExpMatch(host, "*.slack-edge.com") || shExpMatch(host, "slack-imgs.com") || shExpMatch(host, "*.slack-imgs.com")) { return proxy; } // Zoom 全系 if (shExpMatch(host, "zoom.us") || shExpMatch(host, "*.zoom.us") || shExpMatch(host, "zoom.com") || shExpMatch(host, "*.zoom.com") || shExpMatch(host, "zoomgov.com") || shExpMatch(host, "*.zoomgov.com")) { return proxy; } // Signal 全系 if (shExpMatch(host, "signal.org") || shExpMatch(host, "*.signal.org")) { return proxy; } // Docker 全系 if (shExpMatch(host, "docker.com") || shExpMatch(host, "*.docker.com") || shExpMatch(host, "docker.io") || shExpMatch(host, "*.docker.io")) { return proxy; } // GitLab 全系 if (shExpMatch(host, "gitlab.com") || shExpMatch(host, "*.gitlab.com") || shExpMatch(host, "gitlab.io") || shExpMatch(host, "*.gitlab.io")) { return proxy; } // Vercel 全系 if (shExpMatch(host, "vercel.com") || shExpMatch(host, "*.vercel.com") || shExpMatch(host, "vercel.app") || shExpMatch(host, "*.vercel.app")) { return proxy; } // Netlify 全系 if (shExpMatch(host, "netlify.com") || shExpMatch(host, "*.netlify.com") || shExpMatch(host, "netlify.app") || shExpMatch(host, "*.netlify.app")) { return proxy; } // Perplexity / Poe / Midjourney 全系 if (shExpMatch(host, "perplexity.ai") || shExpMatch(host, "*.perplexity.ai") || shExpMatch(host, "poe.com") || shExpMatch(host, "*.poe.com") || shExpMatch(host, "midjourney.com") || shExpMatch(host, "*.midjourney.com")) { return proxy; } // Figma / Canva 全系 if (shExpMatch(host, "figma.com") || shExpMatch(host, "*.figma.com") || shExpMatch(host, "canva.com") || shExpMatch(host, "*.canva.com")) { return proxy; } // LinkedIn 全系 if (shExpMatch(host, "linkedin.com") || shExpMatch(host, "*.linkedin.com") || shExpMatch(host, "licdn.com") || shExpMatch(host, "*.licdn.com")) { return proxy; } // Pinterest 全系 if (shExpMatch(host, "pinterest.com") || shExpMatch(host, "*.pinterest.com") || shExpMatch(host, "pinimg.com") || shExpMatch(host, "*.pinimg.com")) { return proxy; } // Tumblr 全系 if (shExpMatch(host, "tumblr.com") || shExpMatch(host, "*.tumblr.com")) { return proxy; } // Snapchat 全系 if (shExpMatch(host, "snapchat.com") || shExpMatch(host, "*.snapchat.com") || shExpMatch(host, "sc-cdn.net") || shExpMatch(host, "*.sc-cdn.net")) { return proxy; } // Wikipedia / Wikimedia 全系 if (shExpMatch(host, "wikipedia.org") || shExpMatch(host, "*.wikipedia.org") || shExpMatch(host, "wikimedia.org") || shExpMatch(host, "*.wikimedia.org")) { return proxy; } // PayPal 全系 if (shExpMatch(host, "paypal.com") || shExpMatch(host, "*.paypal.com") || shExpMatch(host, "paypalobjects.com") || shExpMatch(host, "*.paypalobjects.com")) { return proxy; } // Patreon 全系 if (shExpMatch(host, "patreon.com") || shExpMatch(host, "*.patreon.com")) { return proxy; } // 通用 CDN if (shExpMatch(host, "cloudfront.net") || shExpMatch(host, "*.cloudfront.net") || shExpMatch(host, "fastly.net") || shExpMatch(host, "*.fastly.net") || shExpMatch(host, "fastlylb.net") || shExpMatch(host, "*.fastlylb.net") || shExpMatch(host, "jsdelivr.net") || shExpMatch(host, "*.jsdelivr.net") || shExpMatch(host, "unpkg.com") || shExpMatch(host, "*.unpkg.com") || shExpMatch(host, "statically.io") || shExpMatch(host, "*.statically.io") || shExpMatch(host, "cloudinary.com") || shExpMatch(host, "*.cloudinary.com") || shExpMatch(host, "imgur.com") || shExpMatch(host, "*.imgur.com")) { return proxy; } // linux.do if (shExpMatch(host, "linux.do") || shExpMatch(host, "*.linux.do")) { return proxy; } return "DIRECT"; }