User Agent自由切

根据不同的网址或域名,使用不同的 User Agent。

目前为 2024-03-24 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name Switch UserAgent MOD
  3. // @name:zh-CN User Agent自由切
  4. // @namespace https://gf.qytechs.cn/zh-CN/scripts/490763-switch-useragent-mod
  5. // @version 0.1.13
  6. // @description 根据不同的网址或域名,使用不同的 User Agent。
  7. // @description:zh-CN 根据不同的网址或域名,使用不同的 User Agent。
  8. // @author 咕德
  9. // @license MIT
  10. // @icon data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDEwIiBoZWlnaHQ9IjQwNCIgdmlld0JveD0iMCAwIDQxMCA0MDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0zOTkuNjQxIDU5LjUyNDZMMjE1LjY0MyAzODguNTQ1QzIxMS44NDQgMzk1LjMzOCAyMDIuMDg0IDM5NS4zNzggMTk4LjIyOCAzODguNjE4TDEwLjU4MTcgNTkuNTU2M0M2LjM4MDg3IDUyLjE4OTYgMTIuNjgwMiA0My4yNjY1IDIxLjAyODEgNDQuNzU4NkwyMDUuMjIzIDc3LjY4MjRDMjA2LjM5OCA3Ny44OTI0IDIwNy42MDEgNzcuODkwNCAyMDguNzc2IDc3LjY3NjNMMzg5LjExOSA0NC44MDU4QzM5Ny40MzkgNDMuMjg5NCA0MDMuNzY4IDUyLjE0MzQgMzk5LjY0MSA1OS41MjQ2WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyKSIvPgo8cGF0aCBkPSJNMjkyLjk2NSAxLjU3NDRMMTU2LjgwMSAyOC4yNTUyQzE1NC41NjMgMjguNjkzNyAxNTIuOTA2IDMwLjU5MDMgMTUyLjc3MSAzMi44NjY0TDE0NC4zOTUgMTc0LjMzQzE0NC4xOTggMTc3LjY2MiAxNDcuMjU4IDE4MC4yNDggMTUwLjUxIDE3OS40OThMMTg4LjQyIDE3MC43NDlDMTkxLjk2NyAxNjkuOTMxIDE5NS4xNzIgMTczLjA1NSAxOTQuNDQzIDE3Ni42MjJMMTgzLjE4IDIzMS43NzVDMTgyLjQyMiAyMzUuNDg3IDE4NS45MDcgMjM4LjY2MSAxODkuNTMyIDIzNy41NkwyMTIuOTQ3IDIzMC40NDZDMjE2LjU3NyAyMjkuMzQ0IDIyMC4wNjUgMjMyLjUyNyAyMTkuMjk3IDIzNi4yNDJMMjAxLjM5OCAzMjIuODc1QzIwMC4yNzggMzI4LjI5NCAyMDcuNDg2IDMzMS4yNDkgMjEwLjQ5MiAzMjYuNjAzTDIxMi41IDMyMy41TDMyMy40NTQgMTAyLjA3MkMzMjUuMzEyIDk4LjM2NDUgMzIyLjEwOCA5NC4xMzcgMzE4LjAzNiA5NC45MjI4TDI3OS4wMTQgMTAyLjQ1NEMyNzUuMzQ3IDEwMy4xNjEgMjcyLjIyNyA5OS43NDYgMjczLjI2MiA5Ni4xNTgzTDI5OC43MzEgNy44NjY4OUMyOTkuNzY3IDQuMjczMTQgMjk2LjYzNiAwLjg1NTE4MSAyOTIuOTY1IDEuNTc0NFoiIGZpbGw9InVybCgjcGFpbnQxX2xpbmVhcikiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhciIgeDE9IjYuMDAwMTciIHkxPSIzMi45OTk5IiB4Mj0iMjM1IiB5Mj0iMzQ0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiM0MUQxRkYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQkQzNEZFIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhciIgeDE9IjE5NC42NTEiIHkxPSI4LjgxODE4IiB4Mj0iMjM2LjA3NiIgeTI9IjI5Mi45ODkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0ZGRUE4MyIvPgo8c3RvcCBvZmZzZXQ9IjAuMDgzMzMzMyIgc3RvcC1jb2xvcj0iI0ZGREQzNSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRkE4MDAiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K
  11. // @match *://*/*
  12. // @grant none
  13. // ==/UserScript==
  14.  
  15. (function () {
  16. 'use strict';
  17.  
  18. const builtInUaList = {
  19. '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',
  20. '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',
  21. 'Chrome-Linux': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
  22. 'Firefox-Win': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0',
  23. 'Firefox-Mac': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11.5; rv:89.0) Gecko/20100101 Firefox/89.0',
  24. 'Firefox-Linux': 'Mozilla/5.0 (X11; Linux i686; rv:89.0) Gecko/20100101 Firefox/89.0',
  25. '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',
  26. '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',
  27. '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',
  28. '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',
  29. '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',
  30. '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',
  31. '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',
  32. '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',
  33. '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',
  34. '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',
  35. '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',
  36. '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',
  37. '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',
  38. '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',
  39. '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',
  40. '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)',
  41. '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)',
  42. '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',
  43. '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',
  44. };
  45.  
  46. const builtInUrlUaMap = {
  47. 'baidu.com': 'Baidu-Android',
  48. 'zhihu.com': 'Zhihu-Android',
  49. 'weibo.com': 'Weibo-Android',
  50. 'bilibili.com': 'bili-Android',
  51. 'smzdm.com': 'SMZDM-Android',
  52. };
  53.  
  54. const customUaList = {};
  55. const customUrlUaMap = {};
  56.  
  57. const language = navigator.language || navigator.userLanguage;
  58. const languageCode = language.split('-')[0];
  59. const languageMap = {
  60. 'zh-CN': '简体中文',
  61. 'en': 'English',
  62. };
  63. const languageText = languageMap[languageCode] || 'English';
  64.  
  65. const storageKey = 'SwitchUserAgentMOD';
  66. let storageData = {};
  67.  
  68. const uaList = Object.assign({}, builtInUaList, customUaList);
  69. const urlUaMap = Object.assign({}, builtInUrlUaMap, customUrlUaMap);
  70.  
  71. const init = () => {
  72. loadStorage();
  73. applyUserAgent();
  74. };
  75.  
  76. const loadStorage = () => {
  77. const data = JSON.parse(localStorage.getItem(storageKey) || '{}');
  78. customUaList = data.customUaList || {};
  79. customUrlUaMap = data.customUrlUaMap || {};
  80. };
  81.  
  82. const saveStorage = () => {
  83. const data = {
  84. customUaList,
  85. customUrlUaMap,
  86. };
  87. localStorage.setItem(storageKey, JSON.stringify(data));
  88. };
  89.  
  90. const applyUserAgent = () => {
  91. const url = new URL(location.href);
  92. const hostname = url.hostname;
  93. const subdomain = hostname.split('.').slice(1).join('.');
  94. const uaKey = urlUaMap[subdomain] || urlUaMap[hostname] || urlUaMap[url.origin] || 'Chrome-Win';
  95. const ua = uaList[uaKey];
  96. if (ua) {
  97. navigator.__defineGetter__('userAgent', function () {
  98. return ua;
  99. });
  100. }
  101. };
  102.  
  103. init();
  104. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址