您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
根据不同的网址或域名,使用不同的 User Agent。
当前为
// ==UserScript== // @name Switch UserAgent MOD // @name:zh-CN UA自由切 // @namespace https://greasyfork.org/zh-CN/scripts/490764 // @version 0.1.14 // @description Use different User Agents based on different URLs or domains. // @description:zh-CN 根据不同的网址或域名,使用不同的 User Agent。 // @author 咕德 // @license MIT // @icon data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDEwIiBoZWlnaHQ9IjQwNCIgdmlld0JveD0iMCAwIDQxMCA0MDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0zOTkuNjQxIDU5LjUyNDZMMjE1LjY0MyAzODguNTQ1QzIxMS44NDQgMzk1LjMzOCAyMDIuMDg0IDM5NS4zNzggMTk4LjIyOCAzODguNjE4TDEwLjU4MTcgNTkuNTU2M0M2LjM4MDg3IDUyLjE4OTYgMTIuNjgwMiA0My4yNjY1IDIxLjAyODEgNDQuNzU4NkwyMDUuMjIzIDc3LjY4MjRDMjA2LjM5OCA3Ny44OTI0IDIwNy42MDEgNzcuODkwNCAyMDguNzc2IDc3LjY3NjNMMzg5LjExOSA0NC44MDU4QzM5Ny40MzkgNDMuMjg5NCA0MDMuNzY4IDUyLjE0MzQgMzk5LjY0MSA1OS41MjQ2WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyKSIvPgo8cGF0aCBkPSJNMjkyLjk2NSAxLjU3NDRMMTU2LjgwMSAyOC4yNTUyQzE1NC41NjMgMjguNjkzNyAxNTIuOTA2IDMwLjU5MDMgMTUyLjc3MSAzMi44NjY0TDE0NC4zOTUgMTc0LjMzQzE0NC4xOTggMTc3LjY2MiAxNDcuMjU4IDE4MC4yNDggMTUwLjUxIDE3OS40OThMMTg4LjQyIDE3MC43NDlDMTkxLjk2NyAxNjkuOTMxIDE5NS4xNzIgMTczLjA1NSAxOTQuNDQzIDE3Ni42MjJMMTgzLjE4IDIzMS43NzVDMTgyLjQyMiAyMzUuNDg3IDE4NS45MDcgMjM4LjY2MSAxODkuNTMyIDIzNy41NkwyMTIuOTQ3IDIzMC40NDZDMjE2LjU3NyAyMjkuMzQ0IDIyMC4wNjUgMjMyLjUyNyAyMTkuMjk3IDIzNi4yNDJMMjAxLjM5OCAzMjIuODc1QzIwMC4yNzggMzI4LjI5NCAyMDcuNDg2IDMzMS4yNDkgMjEwLjQ5MiAzMjYuNjAzTDIxMi41IDMyMy41TDMyMy40NTQgMTAyLjA3MkMzMjUuMzEyIDk4LjM2NDUgMzIyLjEwOCA5NC4xMzcgMzE4LjAzNiA5NC45MjI4TDI3OS4wMTQgMTAyLjQ1NEMyNzUuMzQ3IDEwMy4xNjEgMjcyLjIyNyA5OS43NDYgMjczLjI2MiA5Ni4xNTgzTDI5OC43MzEgNy44NjY4OUMyOTkuNzY3IDQuMjczMTQgMjk2LjYzNiAwLjg1NTE4MSAyOTIuOTY1IDEuNTc0NFoiIGZpbGw9InVybCgjcGFpbnQxX2xpbmVhcikiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhciIgeDE9IjYuMDAwMTciIHkxPSIzMi45OTk5IiB4Mj0iMjM1IiB5Mj0iMzQ0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiM0MUQxRkYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQkQzNEZFIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhciIgeDE9IjE5NC42NTEiIHkxPSI4LjgxODE4IiB4Mj0iMjM2LjA3NiIgeTI9IjI5Mi45ODkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0ZGRUE4MyIvPgo8c3RvcCBvZmZzZXQ9IjAuMDgzMzMzMyIgc3RvcC1jb2xvcj0iI0ZGREQzNSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRkE4MDAiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K // @match *://*/* // @grant none // ==/UserScript== (function () { 'use strict'; const builtInUaList = { 'Chrome-Win': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36', 'Chrome-Mac': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_5_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36', 'Chrome-Linux': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36', 'Firefox-Win': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0', 'Firefox-Mac': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11.5; rv:89.0) Gecko/20100101 Firefox/89.0', 'Firefox-Linux': 'Mozilla/5.0 (X11; Linux i686; rv:89.0) Gecko/20100101 Firefox/89.0', 'Safari-Mac': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_5_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Safari/605.1.15', 'Edge-Win': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64', 'Opera-Win': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 OPR/77.0.4054.270', 'Baidu-Android': 'Mozilla/5.0 (Linux; Android 11; Redmi K30 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 Mobile Safari/537.36 Baidu/11.19.0.11 (Baidu; P1 11) ADID/89376E18-7502-4427-813E-37468C7993F7; BD_UPID/6875767077; BD_SID/8136531732; BD_UID/1042843693; BD_HDID/8c708d6616ad78f5052739f36626f8a5; BD_W_SAVE_TIME/1634504603050', 'Baidu-iOS': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15A372 Baidu/11.19.0.11 (Baidu; P2 11) ADID/89376E18-7502-4427-813E-37468C7993F7; BD_UPID/6875767077; BD_SID/8136531732; BD_UID/1042843693; BD_HDID/8c708d6616ad78f5052739f36626f8a5; BD_W_SAVE_TIME/1634504603050', 'bili-Android': 'Mozilla/5.0 (Linux; Android 11; Redmi K30 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 Mobile Safari/537.36 BiliApp/119926 (build 11992600) Android2108261144 Channel/bilih5 wvcore/119926', 'bili-iOS': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15A372 BiliApp/119926 (build 11992600) iOS2108261144 Channel/bilih5 wvcore/119926', 'CSDN-Android': 'Mozilla/5.0 (Linux; Android 11; Redmi K30 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 Mobile Safari/537.36 NewsArticle/8.4.12 NetType/WIFI', 'CSDN-iOS': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15A372 NewsArticle/8.4.12 NetType/WIFI', 'QQ-Android': 'Mozilla/5.0 (Linux; Android 11; Redmi K30 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 Mobile Safari/537.36 MMWEBID/4471 MicroMessenger/8.0.15.2020(0x28000F35) Process/tools WeChat/arm64', 'QQ-iOS': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15A372 MicroMessenger/8.0.15(0x18000f2d) NetType/WIFI Language/zh_CN', 'SMZDM-Android': 'Mozilla/5.0 (Linux; Android 11; Redmi K30 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 Mobile Safari/537.36 NewsArticle/7.12.1 NetType/WIFI', 'SMZDM-iOS': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15A372 NewsArticle/7.12.1 NetType/WIFI', 'WeChat-Android': 'Mozilla/5.0 (Linux; Android 11; Redmi K30 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 Mobile Safari/537.36 MMWEBID/4471 WeChat/8.0.15.2020(0x28000F35) Process/tools web WeChat/arm64', 'WeChat-iOS': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15A372 WeChat/8.0.15(0x18000f2d) NetType/WIFI Language/zh_CN', 'Weibo-Android': 'Mozilla/5.0 (Linux; Android 11; Redmi K30 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 Mobile Safari/537.36 Weibo (20201126104340)', 'Weibo-iOS': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15A372 Weibo (iPhone13,4__weibo__10.10.1__iphone__os14.8)', 'Zhihu-Android': 'Mozilla/5.0 (Linux; Android 11; Redmi K30 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 Mobile Safari/537.36 NewsArticle/7.12.1 NetType/WIFI', 'Zhihu-iOS': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15A372 NewsArticle/7.12.1 NetType/WIFI', 'Facebook-Android': 'Mozilla/5.0 (Linux; Android 11; Redmi K30 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 Mobile Safari/537.36 Instagram/192.0.0.38.121 Android (29/10; 420dpi; 1080x2320; Xiaomi; Redmi K30 Pro; v12.5.3.0.RJKCNXM; zh_CN; 256099214)', 'Facebook-iOS': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15A372 Instagram/192.0.0.38.121 iPhone13,4 (iPhone OS 14_8; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15A372 Safari/604.1', 'Instagram-Android': 'Mozilla/5.0 (Linux; Android 11; Redmi K30 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 Mobile Safari/537.36 Instagram/192.0.0.38.121 Android (29/10; 420dpi; 1080x2320; Xiaomi; Redmi K30 Pro; v12.5.3.0.RJKCNXM; zh_CN; 256099214)', 'Instagram-iOS': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15A372 Instagram/192.0.0.38.121 iPhone13,4 (iPhone OS 14_8; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15A372 Safari/604.1', 'Twitter-Android': 'Mozilla/5.0 (Linux; Android 11; Redmi K30 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 Mobile Safari/537.36 Twitter for Android/8.87.0-release.00 (Twitter Inc.; Android 11; zh-CN; Redmi K30 Pro)', 'Twitter-iOS': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15A372 Twitter for iPhone/8.87.0-release.00 (Twitter Inc.; iOS 14_8; zh-CN; iPhone13,4)', }; const builtInUrlUaMap = { 'baidu.com': 'Baidu-Android', 'zhihu.com': 'Zhihu-Android', 'weibo.com': 'Weibo-Android', 'bilibili.com': 'bili-Android', 'smzdm.com': 'SMZDM-Android', 'facebook.com': 'Facebook-Android', 'instagram.com': 'Instagram-Android', 'twitter.com': 'Twitter-Android', }; const customUaList = {}; const customUrlUaMap = {}; const language = navigator.language || navigator.userLanguage; const languageCode = language.split('-')[0]; const languageMap = { 'zh-CN': '简体中文', 'en': 'English', }; const languageText = languageMap[languageCode] || 'English'; const storageKey = 'SwitchUserAgentMOD'; let storageData = {}; const uaList = Object.assign({}, builtInUaList, customUaList); const urlUaMap = Object.assign({}, builtInUrlUaMap, customUrlUaMap); const init = () => { loadStorage(); applyUserAgent(); }; const loadStorage = () => { const data = JSON.parse(localStorage.getItem(storageKey) || '{}'); customUaList = data.customUaList || {}; customUrlUaMap = data.customUrlUaMap || {}; }; const saveStorage = () => { const data = { customUaList, customUrlUaMap, }; localStorage.setItem(storageKey, JSON.stringify(data)); }; const applyUserAgent = () => { const url = new URL(location.href); const hostname = url.hostname; const subdomain = hostname.split('.').slice(1).join('.'); const uaKey = urlUaMap[subdomain] || urlUaMap[hostname] || urlUaMap[url.origin] || 'Chrome-Win'; const ua = uaList[uaKey]; if (ua) { navigator.__defineGetter__('userAgent', function () { return ua; }); } }; init(); })();