fake yswebview jssdk

fake yswebview jssdk 2024/10/10 17:12:01

  1. // ==UserScript==
  2. // @name fake yswebview jssdk
  3. // @namespace fake yswebview jssdk
  4. // @match *://*/tvapp/*
  5. // @match *://*/webapp/*
  6. // @match *://*.laofa.com/h5/*
  7. // @grant none
  8. // @grant GM_setValue
  9. // @grant GM_getValue
  10. // @grant GM_deleteValue
  11. // @version 1.0.7
  12. // @author Jack.Chan (971546@qq.com)
  13. // @namespace http://fulicat.com
  14. // @url https://greasyfork.org/zh-CN/scripts/512252
  15. // @run-at document-start
  16. // @license MIT
  17. // @description fake yswebview jssdk 2024/10/10 17:12:01
  18. // ==/UserScript==
  19.  
  20. var qs = new URLSearchParams(location.search.substr(1));
  21.  
  22. var FLAVOR = GM_getValue('__FAKE_YSWEBVIEW_JSSDK__FLAVOR') || 'slide';
  23. var UID = GM_getValue('__FAKE_YSWEBVIEW_JSSDK__UNIQUE_ID') || '7914d5bcd361662a0b6bdebb24d4e76b';
  24.  
  25. if (qs.get('aid')) {
  26. FLAVOR = qs.get('aid').split('.').pop() || FLAVOR;
  27. GM_setValue('__FAKE_YSWEBVIEW_JSSDK__FLAVOR', FLAVOR);
  28. }
  29. if (qs.get('uid')) {
  30. UID = qs.get('uid');
  31. GM_setValue('__FAKE_YSWEBVIEW_JSSDK__UNIQUE_ID', UID);
  32. }
  33.  
  34. // ===============================================================================================
  35.  
  36. ys = {};
  37. // FLAVOR 渠道标识
  38. ys.FLAVOR = FLAVOR;
  39. // ys.FLAVOR = 'slide';
  40. // ys.FLAVOR = 'dashboard';
  41. // ys.FLAVOR = 'jiuyetong';
  42.  
  43.  
  44. // UID
  45. ys.UNIQUE_ID = UID;
  46.  
  47. console.warn(`[fake yswebview jssdk]`);
  48. console.log(`FLAVOR: ${ ys.FLAVOR }`);
  49. console.log(`UNIQUE_ID: ${ ys.UNIQUE_ID }`);
  50. console.log(`\n`);
  51.  
  52.  
  53.  
  54. ys.MANUFACTURER = 'vivo';
  55. ys.BRAND = 'vivo';
  56. ys.MODEL = 'V1824A';
  57. ys.UI_MODE = 'NORMAL';
  58. ys.TV = false;
  59.  
  60. // 通知栏高度
  61. ys.statusBarHeight = 0;
  62.  
  63. // 导航栏高度
  64. ys.navigationBarHeight = 0;
  65.  
  66. ys.getInfo=function(cb) {
  67. var info = {
  68. "MOCK": true,
  69. "BUILD_ENV": "prod",
  70. "BUILD_DATE": "2025/1/2 15:56:39",
  71. "RELEASE_TIME": "2024/12/31 18:14:39",
  72. "UNIQUE_ID": ys.UNIQUE_ID,
  73. "PACKAGE_NAME": ys.APPLICATION_ID,
  74. "VERSION": "1.1.1",
  75. "VERSION_NAME": "1.1",
  76. "VERSION_CODE": 1,
  77. "ANDROID_ID": "dfd7538d7a506538",
  78. "UNIQUE_ID_RAW": "slide_dfd7538d7a506538_4137975808_vivo_V1824A_V1824A_vivo_V1824A_star2qltechn_qcom",
  79. "APPLICATION_ID": "com.ysinc.webapp.slide",
  80. "FLAVOR": "slide",
  81. "RELEASE_TYPE": "release",
  82. "MEMORY_TOTAL": 4137975808,
  83. "BUILD_SERIAL": "unknown",
  84. "BUILD_MANUFACTURER": ys.MANUFACTURER,
  85. "BUILD_PRODUCT": "V1824A",
  86. "BUILD_MODEL": ys.MODEL,
  87. "BUILD_BRAND": ys.BRAND,
  88. "BUILD_BOARD": "V1824A",
  89. "BUILD_DISPLAY": "PQ3B.190801.01311438 release-keys",
  90. "BUILD_DEVICE": "star2qltechn",
  91. "BUILD_HARDWARE": "qcom",
  92. "BUILD_ID": "PQ3B.190801.01311438",
  93. "BUILD_TYPE": "user",
  94. "BUILD_TAGS": "release-keys",
  95. "BUILD_TIME": 1706683100000,
  96. "BUILD_USER": "build",
  97. "BUILD_VERSION": "9",
  98. "BUILD_VERSION_SDK": 28,
  99. "BUILD_VERSION_CODENAME": "REL",
  100. "DISPLAY_widthPixels": 1920,
  101. "DISPLAY_heightPixels": 1080,
  102. "DISPLAY_density": 1.75,
  103. "DISPLAY_densityDpi": 280,
  104. "DISPLAY_screenWidth": 1097,
  105. "DISPLAY_screenHeight": 617,
  106. "UI_MODE": ys.UI_MODE,
  107. "UI_MODE_TYPE": 1,
  108. "UI_MODE_TYPE_TELEVISION": ys.TV,
  109. "MAC": "00:DB:B5:94:F1:C7",
  110. "IP": "172.16.1.15",
  111. "LAN_IP": "172.16.1.15"
  112. }
  113. cb(info);
  114. };
  115. ys.APPLICATION_ID = 'com.ysinc.webapp.'+ ys.FLAVOR;
  116.  
  117. ys.sp = {
  118. getString: function(key) {},
  119. putString: function(key, value) {},
  120. getBoolean: function(key) {},
  121. putBoolean: function(key, value) {},
  122. getLong: function(key) {},
  123. putLong: function(key, value) {},
  124. getInt: function(key) {},
  125. putInt: function(key, value) {},
  126. remove: function(key) {},
  127. clear: function() {},
  128. }
  129.  
  130. ys.getHardwareInfo = function(cb) { cb({ "MOCK": true }); };
  131. ys.getCpuInfo = function(cb) { cb({ "MOCK": true }); };
  132. ys.getCpuInfoRaw = function(cb) { cb({ "MOCK": true }); };
  133. ys.getMemoryInfo = function(cb) { cb({ "MOCK": true }); };
  134. ys.getMemorySize = function(cb) { cb({ "MOCK": true }); };
  135. ys.canGoBack = function(cb) { cb({ "MOCK": true }); };
  136. ys.canGoBackOrForward = function(cb) { cb({ "MOCK": true }); };
  137. ys.getItem = function(key) { };
  138. ys.setItem = function(key, value) {
  139. alert(`setItem\n\nkey: ${ key }\n\nvalue: ${ value }`);
  140. };
  141. ys.removeItem = function(key) { };
  142. ys.clearItem = function(cb) { cb({ "MOCK": true }); };
  143.  
  144. ys.__getItem = function() { };
  145. ys.__setItem = function() { };
  146. ys.__removeItem = function() { };
  147. ys.__clearItem = function() { };
  148. ys.setUserAgent = function() { };
  149. ys.__getInfo = function() { };
  150. ys.__getHardwareInfo = function() { };
  151. ys.__getCpuInfoRaw = function() { };
  152. ys.__getCpuInfo = function() { };
  153. ys.__getMemoryInfo = function() { };
  154. ys.__getMemorySize = function() { };
  155. ys.__canGoBack = function() { };
  156. ys.__canGoBackOrForward = function() { };
  157. ys.goForward = function() { };
  158. ys.goBack = function() { };
  159. ys.reload = function() { };
  160. ys.reloadUrl = function() { };
  161. ys.clearHistory = function() { };
  162. ys.clearCache = function() { };
  163. ys.clearCookie = function() { };
  164. ys.clearFormData = function() { };
  165. ys.clearSslPreferences = function() { };
  166. ys.clearAll = function() { };
  167. ys.reset = function() { };
  168. ys.getUrl = function() { };
  169. ys.loadUrl = function(url) {
  170. if (confirm(`“确定”跳转到: ${ url }`)) {
  171. location.href = url;
  172. }
  173. };
  174. ys.redirectUrl = function(url) {
  175. if (confirm(`“确定”跳转到: ${ url }`)) {
  176. location.replace(url);
  177. }
  178. };
  179. ys.startDefender = function() { };
  180. ys.stopDefender = function() { };
  181. ys.loadDefender = function() { };
  182. ys.setDefender = function() { };
  183. ys.getDefender = function() { };
  184. ys.removeDefender = function() { };
  185. ys.useDefender = function() { };
  186. ys.loadData = function() { };
  187. ys.GoBackward = function() { history.back(); };
  188. ys.GoForward = function() { };
  189. ys.GoReload = function() { location.reload(); };
  190. ys.GoHome = function() { history.back(); };
  191. ys.GoExit = function() { };
  192. ys.__AppKeydown = function() { };
  193. ys.useKeydown = function() { };
  194. ys.canUseKeydown = function() { return false };
  195. ys.__AppKeyup = function() { };
  196. ys.useKeyup = function() { };
  197. ys.canUseKeyup = function() { return false };
  198. ys.toast = function(msg) { alert(msg); };
  199. ys.showConfig = function() { };
  200. ys.resetConfig = function() { };
  201. ys.home = function() { };
  202. ys.destroy = function() { };
  203. ys.finish = function() { };
  204. ys.exit = function() { };
  205. ys.moveTaskToBack = function() { };
  206. ys.openURL = function() { };
  207. ys.openApp = function() { };
  208. ys.setStatusBarDarkMode = function() { };
  209. ys.setStatusBarLightMode = function() { };
  210. ys.setStatusBarMode = function() { };
  211. ys.getStatusBarMode = function() { return 'light' };
  212. ys.getStatusBarHeight = function() { return ys.statusBarHeight };
  213. ys.showStatusBar = function() { };
  214. ys.hideStatusBar = function() { };
  215. ys.isDarkMode = function() { return false };
  216. ys.getNavigationBarHeight = function() { return ys.navigationBarHeight };
  217. ys.showWebViewNavbar = function() { };
  218. ys.hideWebViewNavbar = function() { };
  219. ys.useWebViewNavbar = function() { };
  220. ys.useWebViewNavbarEvent = function() { };
  221. ys.setWebViewNavbarEnabled = function() { };
  222. ys.setWebViewNavbarUrl = function() { };
  223. ys.getWebViewNavbarUrl = function() { };
  224. ys.setWebViewNavbarPos = function() { };
  225. ys.useScreenSaver = function() { };
  226. ys.useScreenSaverEvent = function() { };
  227. ys.setScreenSaverUrl = function() { };
  228. ys.getScreenSaverUrl = function() { };
  229. ys.removeScreenSaverUrl = function() { };
  230. ys.setScreenOrientation = function() { };
  231. ys.setOrientation = function() { };
  232. ys.setAccelerometerRotation = function() { };
  233. ys.setUserRotation = function() { };
  234. ys.requestPermissions = function() { };
  235. ys.setFocusable = function() { };
  236. ys.setAppBackUrl = function() { };
  237. ys.removeAppBackUrl = function() { };
  238. ys.setAppExitUrl = function() { };
  239. ys.removeAppExitUrl = function() { };
  240. ys.useAppExitTip = function() { };
  241. ys.GoSetting = function() { };
  242. ys.getUiModeType = function() { return 1 };
  243. ys.isTV = function() { return false };
  244.  
  245. var style = document.createElement('style');
  246. style.type='text/css';
  247. style.textContent = `
  248. :root{
  249. --safe-area-inset-top: ${ ys.statusBarHeight }px;
  250. --safe-area-inset-bottom: ${ ys.navigationBarHeight }px;
  251. --statusbar-height: ${ ys.statusBarHeight }px;
  252. --status-bar-height: ${ ys.navigationBarHeight }px;
  253. --navigationbar-height: ${ ys.statusBarHeight }px;
  254. --navigation-bar-height: ${ ys.navigationBarHeight }px;
  255. }
  256.  
  257. /*
  258. html{word-break: break-all;}
  259. */
  260. `;
  261. document.head.appendChild(style);
  262.  
  263. /*
  264. window.top.__USER_AGENT__ = 'Mozilla/5.0 (Linux; Android 9; V1824A Build/PQ3B.190801.01311438; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/91.0.4472.114 Safari/537.36 yswebview/1.1.1 yswebapp/1.1.1_c4ff119967e8f4af8d2dd2199179e7ad_(vivo V1824A V1824A; PQ3B.190801.01311438) slidewebapp/1.1.1 slidewebapp_uid/c4ff119967e8f4af8d2dd2199179e7ad';
  265. var script_dms = document.createElement('script');
  266. script_dms.src = 'https://webdaily.yunsheng.cn/dms/static/js/event.js?_';
  267. document.head.appendChild(script_dms);
  268. */
  269.  
  270. ys.isReady = false;
  271.  
  272. window.top.ys = ys;
  273.  
  274. var isReady = false;
  275. function ready() {
  276. if (isReady) return;
  277. isReady = true;
  278. var jsEvent = new CustomEvent('AppReady');
  279. window.dispatchEvent(jsEvent);
  280. document.dispatchEvent(jsEvent);
  281. }
  282.  
  283. setTimeout(ready, 1500);
  284.  
  285. document.addEventListener('DOMContentLoaded', function() {
  286. setTimeout(ready, 500);
  287. setTimeout(ready, 1500);
  288. });
  289.