瓜子影视.js 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  1. var rule = {
  2. title: '瓜子',
  3. host: 'https://api.8utdtcq.com',
  4. url: '/App/IndexList/indexList',
  5. // homeUrl: 'http://124.222.116.5/homedata/home.json',
  6. searchUrl: '/App/Index/findMoreVod#**',
  7. searchable: 2,
  8. quickSearch: 1,
  9. filterable: 1,
  10. class_name: '电视剧&电影&动漫&综艺&短剧',
  11. class_url: '2&1&4&3&64',
  12. filter: 'H4sIAAAAAAAAA+2a7U4aQRSG/3sVht/bZHf5WnorjWlo4YfphwlqE2NMtGoLWIsmFbRi2qYqoBgxtVVR8GZ2duUuOmchfuDuDHI2xJhD4hGYyTzv7hlm57yZ6aFh/gpogefDL5y38Jq+fuc0vklO8eZAPJWMB5S7Te/j75JebR/ibyeTd8Z1H/9mMBiJLZZb8+WusW7GhC5q4F7jzP3+Qsh2qbXxSQjpdMGSWrsb1umhkNTpgr6mXM06a4qvqd0FS7KqJbv5VUgyLxfsRsHKHyos+9NauuR3U2HNE7bZUKyFHP/E0hXF+rPmfOEMp/A/+HS1dOT827m0cwd2ZgOvtrBjFatCtZ0u6Fz/qHDp4ly3u2BJ5mmRLRfM+ndxupdrrL6rWPkaTwLb+sVveA3ubatStbZ2+B2GAdDTbvGfeZ4X62h3uU+6883I9adbCtxXoqlkPOW1Erm1PeKVSFf1kBDhdPCBEpRRgn5QdBlF94OiySiaHxRVRvEj+1pMQuEdfKAYMorhByUqo0T9oERklAiaoqnPtDA7O5aRwgoPIQhBCDoEDQJ+aqgq55vnvyUSVJXjVGCqQFdBhwqKVNCmRiBEIRgQ8HMp1ossLRZTFR40CDqEIIQQhDCECIQoBAMCXpbRmywDZBkgywBZBsgyQJYBsgyQZYAsA2QZeFnW5rFVqIhT6ONzcXzylddj0aXpET8VWbZsNop25rOIE0Zn52PVzq9KKHoMfTH5IsuUJJgIlmKnj6z5RQkliqaUVtnZuYRioBMzt2LN5iUUfF4yJfkd01T0xaTXzXpGhtF8+MnY32SZCeKnWX2PNdZkvxn0TbPnmq3vTdnVoCeanT20G3uyn6ZLbvpeocdSE55LtEtbf2u0fX7BVtLCNTrxcjSBf7wVZ3lxKeHEE4mJUX6FPsDs+QMJbPz1WAqPau2vs7TYHvJGeU0N591Ie0z+1H80fluxxr7UyW8jv438Nk8S+W2D8NugghOnk/y2Lgr5bQ+kkN9GfpurBPLbHiKL/LaB+W2bDbNeYpmS0D7Q/dk3yzBBfzbNMkzInx2zDIM3EJ19rAyD9lzam1gZBu3tWX9P2HZehsGbe86mWIZBu3vXu3ChteOC6XsxIGsHAXs61k6IrJ0uCFk7niSydtxJZO146CBrxxNC1g5ZO0IKWTvdFLJ2bkkga4esnYFaO+bpAVTC2bJ1sS8854A/g9I2KuQk9DGU4Y71Ike5eEl9J4tKbwTs6ZTeQSq9uyBUenuSqPR2J1Hp7aGDSm9PCJXeVHoLKVR6d1Oo9L4lgUpvKr0He6rC2Rfziu4qI9yl6+iDFXCqIlfrgYQ+W8H3f3xj1gPJp+MVPZBcTlj0PSuoxkfAnkCNPzTzH+StPxCsRAAA',
  13. // limit: 6,
  14. //double: false,
  15. play_parse: true,
  16. lazy: $js.toString(() => {
  17. let d = [];
  18. //console.log("wangzhi==="+input)
  19. var vod_id = input.split("/")[0];
  20. var vurl_id = input.split("/")[1];
  21. var resolution = input.split("?")[1]
  22. function Encrypt(plainText) {
  23. let key = CryptoJS.enc.Utf8.parse("mvXBSW7ekreItNsT");
  24. let iv = CryptoJS.enc.Utf8.parse("2U3IrJL8szAKp0Fj");
  25. // 将文本加密为 AES/CBC/PKCS5Padding 格式
  26. let encrypted = CryptoJS.AES.encrypt(plainText, key, {
  27. iv: iv,
  28. mode: CryptoJS.mode.CBC,
  29. padding: CryptoJS.pad.Pkcs7
  30. });
  31. // 获取加密结果并转为 Hex 格式
  32. let encryptedHex = encrypted.ciphertext.toString(CryptoJS.enc.Hex);
  33. return encryptedHex.toUpperCase(); // 返回大写 Hex 格式
  34. }
  35. function Decrypt(word, key, iv) {
  36. let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
  37. // 使用AES/CBC/PKCS5Padding模式进行解密
  38. let decrypt = CryptoJS.AES.decrypt({
  39. ciphertext: encryptedHexStr
  40. }, key, {
  41. iv: iv,
  42. mode: CryptoJS.mode.CBC, // 使用CBC模式
  43. padding: CryptoJS.pad.Pkcs7 // 使用PKCS#7填充
  44. });
  45. // 将解密后的数据转换为原始文本
  46. let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
  47. // 返回解密后的文本
  48. return decryptedStr;
  49. }
  50. var timestamp = new Date().getTime() / 1000; //log(timestamp)
  51. var t = timestamp.toString().split('.')[0]; //log(t)
  52. var request_key = JSON.stringify({
  53. "domain_type": "8",
  54. "vod_id": vod_id,
  55. "type": "play",
  56. "resolution": resolution,
  57. "vurl_id": vurl_id
  58. }); //log(request_key)
  59. var request_key2 = Encrypt(request_key); //log(request_key2)
  60. var signature = 'token_id=,token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79,phone_type=1,request_key=' + request_key2 + ',app_id=1,time=' + t + ',keys=ZH8gpdp9bxjuG2NK97sol3o7Uiz+9eVEaVMlE2Fk3j7EResM3YHnECZUH7BONNTjpy7RVNi/YimGuNYriC7Cmswv4PNYiFYzw9QhlqZKwNfCM6IUpFZ0T4rZx8G78zkv2tNVbfYC4qNQedGi07nWZ33dlSuVxROVfY5JxOWHMI0=*&zvdvdvddbfikkkumtmdwqppp?|4Y!s!2br'; //log(signature)
  61. var signature2 = md5(signature); //log(signature2)
  62. var body = 'token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79&token_id=&phone_type=1&time=' + t + '&phone_model=xiaomi-22021211rc&keys=ZH8gpdp9bxjuG2NK97sol3o7Uiz%2B9eVEaVMlE2Fk3j7EResM3YHnECZUH7BONNTjpy7RVNi%2FYimGuNYriC7Cmswv4PNYiFYzw9QhlqZKwNfCM6IUpFZ0T4rZx8G78zkv2tNVbfYC4qNQedGi07nWZ33dlSuVxROVfY5JxOWHMI0%3D&request_key=' + request_key2 + '&signature=' + signature2 + '&app_id=1&ad_version=1'; //log(body)
  63. var html = fetch('https://api.8utdtcq.com/App/Resource/VurlDetail/showOne', {
  64. headers: {
  65. 'Cache-Control': 'no-cache',
  66. 'Version': '2406025',
  67. 'PackageName': 'com.uf076bf0c246.qe439f0d5e.m8aaf56b725a.ifeb647346f',
  68. 'Ver': '1.9.2',
  69. 'Referer': 'https://api.8utdtcq.com',
  70. 'X-Customer-Client-Ip': '127.0.0.1',
  71. 'Content-Type': 'application/x-www-form-urlencoded',
  72. 'Host': 'api.8utdtcq.com',
  73. 'Connection': 'Keep-Alive',
  74. //'Accept-Encoding': 'gzip',
  75. 'User-Agent': 'okhttp/3.12.0'
  76. },
  77. body: body,
  78. method: 'POST',
  79. rejectCoding: true
  80. }); //log(html)
  81. var data = JSON.parse(html).data;
  82. // //console.log("dddddd====="+JSON.stringify(data))
  83. var response_key = data.response_key; //log(response_key)
  84. var keys = data.keys; //log(keys)
  85. var bodykey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGAe6hKrWLi1zQmjTT1ozbE4QdFeJGNxubxld6GrFGximxfMsMB6BpJhpcTouAqywAFppiKetUBBbXwYsYU1wNr648XVmPmCMCy4rY8vdliFnbMUj086DU6Z+/oXBdWU3/b1G0DN3E9wULRSwcKZT3wj/cCI1vsCm3gj2R5SqkA9Y0CAwEAAQKBgAJH+4CxV0/zBVcLiBCHvSANm0l7HetybTh/j2p0Y1sTXro4ALwAaCTUeqdBjWiLSo9lNwDHFyq8zX90+gNxa7c5EqcWV9FmlVXr8VhfBzcZo1nXeNdXFT7tQ2yah/odtdcx+vRMSGJd1t/5k5bDd9wAvYdIDblMAg+wiKKZ5KcdAkEA1cCakEN4NexkF5tHPRrR6XOY/XHfkqXxEhMqmNbB9U34saTJnLWIHC8IXys6Qmzz30TtzCjuOqKRRy+FMM4TdwJBAJQZFPjsGC+RqcG5UvVMiMPhnwe/bXEehShK86yJK/g/UiKrO87h3aEu5gcJqBygTq3BBBoH2md3pr/W+hUMWBsCQQChfhTIrdDinKi6lRxrdBnn0Ohjg2cwuqK5zzU9p/N+S9x7Ck8wUI53DKm8jUJE8WAG7WLj/oCOWEh+ic6NIwTdAkEAj0X8nhx6AXsgCYRql1klbqtVmL8+95KZK7PnLWG/IfjQUy3pPGoSaZ7fdquG8bq8oyf5+dzjE/oTXcByS+6XRQJAP/5ciy1bL3NhUhsaOVy55MHXnPjdcTX0FaLi+ybXZIfIQ2P4rb19mVq1feMbCXhz+L1rG8oat5lYKfpe8k83ZA=="; //log(bodykey)
  86. var bodykeyiv = JSON.parse(RSA.decode(keys, bodykey)); //log(bodykeyiv)
  87. var key = CryptoJS.enc.Utf8.parse(bodykeyiv.key); //log(key)
  88. var iv = CryptoJS.enc.Utf8.parse(bodykeyiv.iv); //log(iv)
  89. var html2 = Decrypt(response_key, key, iv); //log(html2)
  90. var url = JSON.parse(html2).url; //log(url)
  91. input = {
  92. url: url,
  93. parse: 0,
  94. header: rule.headers
  95. }
  96. setResult(d)
  97. }),
  98. // 推荐: $js.toString(() => {
  99. // let d = [];
  100. // let data = JSON.parse(request(input))
  101. // data.forEach(item => {
  102. // item.datas.forEach(it => {
  103. // let id = `http://114.132.55.23/bl/mb/api.php/provide/vod/?ac=videolist&wd=${it.title}&`;
  104. // d.push({
  105. // url: id,
  106. // title: it.title,
  107. // img: it.pic,
  108. // desc: it.acr,
  109. // })
  110. // });
  111. // });
  112. // setResult(d)
  113. // }),
  114. 一级: $js.toString(() => {
  115. let d = [];
  116. function Encrypt(plainText) {
  117. let key = CryptoJS.enc.Utf8.parse("mvXBSW7ekreItNsT");
  118. let iv = CryptoJS.enc.Utf8.parse("2U3IrJL8szAKp0Fj");
  119. // 将文本加密为 AES/CBC/PKCS5Padding 格式
  120. let encrypted = CryptoJS.AES.encrypt(plainText, key, {
  121. iv: iv,
  122. mode: CryptoJS.mode.CBC,
  123. padding: CryptoJS.pad.Pkcs7
  124. });
  125. // 获取加密结果并转为 Hex 格式
  126. let encryptedHex = encrypted.ciphertext.toString(CryptoJS.enc.Hex);
  127. return encryptedHex.toUpperCase(); // 返回大写 Hex 格式
  128. }
  129. function Decrypt(word, key, iv) {
  130. let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
  131. // 使用AES/CBC/PKCS5Padding模式进行解密
  132. let decrypt = CryptoJS.AES.decrypt({
  133. ciphertext: encryptedHexStr
  134. }, key, {
  135. iv: iv,
  136. mode: CryptoJS.mode.CBC, // 使用CBC模式
  137. padding: CryptoJS.pad.Pkcs7 // 使用PKCS#7填充
  138. });
  139. // 将解密后的数据转换为原始文本
  140. let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
  141. // 返回解密后的文本
  142. return decryptedStr;
  143. }
  144. function getbody3(key, t) {
  145. var signature = 'token_id=,token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79,phone_type=1,request_key=' + key + ',app_id=1,time=' + t + ',keys=qDpotE2bedimK3QGqlyV5ieXXC3EhaPLQ+IOJyHnHflCj5w/7ESK7FgywMvrgjxbx0GklEFLI4+JshgySe633OIRstuktwdiCy3CT+fLSpuxBJDIlfXQDaeH3ig1wiB0JsZ601XHiFweGMu4tZfnSpHg3OnoL6nz/uurUif2OK4=*&zvdvdvddbfikkkumtmdwqppp?|4Y!s!2br'; //log(signature)
  146. var signature2 = md5(signature).toUpperCase(); //log(signature2)
  147. var body = 'token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79&token_id=&phone_type=1&time=' + t + '&phone_model=xiaomi-22021211rc&keys=qDpotE2bedimK3QGqlyV5ieXXC3EhaPLQ%2BIOJyHnHflCj5w%2F7ESK7FgywMvrgjxbx0GklEFLI4%2BJshgySe633OIRstuktwdiCy3CT%2BfLSpuxBJDIlfXQDaeH3ig1wiB0JsZ601XHiFweGMu4tZfnSpHg3OnoL6nz%2FuurUif2OK4%3D&request_key=' + key + '&signature=' + signature2 + '&app_id=1&ad_version=1';
  148. return body
  149. }
  150. const bodykey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGAe6hKrWLi1zQmjTT1ozbE4QdFeJGNxubxld6GrFGximxfMsMB6BpJhpcTouAqywAFppiKetUBBbXwYsYU1wNr648XVmPmCMCy4rY8vdliFnbMUj086DU6Z+/oXBdWU3/b1G0DN3E9wULRSwcKZT3wj/cCI1vsCm3gj2R5SqkA9Y0CAwEAAQKBgAJH+4CxV0/zBVcLiBCHvSANm0l7HetybTh/j2p0Y1sTXro4ALwAaCTUeqdBjWiLSo9lNwDHFyq8zX90+gNxa7c5EqcWV9FmlVXr8VhfBzcZo1nXeNdXFT7tQ2yah/odtdcx+vRMSGJd1t/5k5bDd9wAvYdIDblMAg+wiKKZ5KcdAkEA1cCakEN4NexkF5tHPRrR6XOY/XHfkqXxEhMqmNbB9U34saTJnLWIHC8IXys6Qmzz30TtzCjuOqKRRy+FMM4TdwJBAJQZFPjsGC+RqcG5UvVMiMPhnwe/bXEehShK86yJK/g/UiKrO87h3aEu5gcJqBygTq3BBBoH2md3pr/W+hUMWBsCQQChfhTIrdDinKi6lRxrdBnn0Ohjg2cwuqK5zzU9p/N+S9x7Ck8wUI53DKm8jUJE8WAG7WLj/oCOWEh+ic6NIwTdAkEAj0X8nhx6AXsgCYRql1klbqtVmL8+95KZK7PnLWG/IfjQUy3pPGoSaZ7fdquG8bq8oyf5+dzjE/oTXcByS+6XRQJAP/5ciy1bL3NhUhsaOVy55MHXnPjdcTX0FaLi+ybXZIfIQ2P4rb19mVq1feMbCXhz+L1rG8oat5lYKfpe8k83ZA==";
  151. function gethtml(u, body, headers) {
  152. var hd = fetch(u, {
  153. headers: headers,
  154. body: body,
  155. method: 'POST',
  156. rejectCoding: true
  157. });
  158. var banner = JSON.parse(hd).data;
  159. var response_key = banner.response_key; //log()
  160. var keys = banner.keys; //log(keys)
  161. var bodykeyiv = JSON.parse(RSA.decode(keys, bodykey));
  162. var key = CryptoJS.enc.Utf8.parse(bodykeyiv.key);
  163. var iv = CryptoJS.enc.Utf8.parse(bodykeyiv.iv);
  164. var html = Decrypt(response_key, key, iv);
  165. return html
  166. }
  167. function hqsub(MY_CATE) {
  168. var subs = ["5", "12", "30", "22", ""]
  169. var tids = ["1", "2", "4", "3", "64"]
  170. let index = tids.indexOf(MY_CATE);
  171. if (index !== -1) {
  172. return subs[index];
  173. }
  174. return ""; // 或者根据需要返回其他值
  175. }
  176. var headers = {
  177. 'Cache-Control': 'no-cache',
  178. 'Version': '2406025',
  179. 'PackageName': 'com.uf076bf0c246.qe439f0d5e.m8aaf56b725a.ifeb647346f',
  180. 'Ver': '1.9.2',
  181. 'Referer': 'https://api.8utdtcq.com',
  182. 'X-Customer-Client-Ip': '127.0.0.1',
  183. 'Content-Type': 'application/x-www-form-urlencoded',
  184. 'Host': 'api.8utdtcq.com',
  185. 'Connection': 'Keep-Alive',
  186. //'Accept-Encoding': 'gzip',
  187. 'User-Agent': 'okhttp/3.12.0'
  188. }
  189. var tid = MY_CATE;
  190. var sub = hqsub(MY_CATE)
  191. var timestamp = new Date().getTime() / 1000;
  192. var t = timestamp.toString().split('.')[0];
  193. var request_key = JSON.stringify({
  194. "area": (MY_FL.area || 0).toString(),
  195. "sub": (MY_FL.sub || sub).toString(),
  196. "year": (MY_FL.year || 0).toString(),
  197. "pageSize": "30",
  198. "sort": (MY_FL.sort || "d_id").toString(),
  199. "page": MY_PAGE,
  200. "tid": tid
  201. });
  202. var request_key2 = Encrypt(request_key);
  203. var body = getbody3(request_key2, t)
  204. var html2 = gethtml("https://api.8utdtcq.com/App/IndexList/indexList", body, headers)
  205. //console.log("tttttlieb=="+html2)
  206. var list = JSON.parse(html2).list; //log(list)
  207. list.forEach(data => {
  208. d.push({
  209. title: data.vod_name,
  210. desc: data.vod_continu == 0 ? '电影' : '更新至' + data.vod_continu + '集',
  211. year: data.vod_scroe,
  212. img: data.vod_pic,
  213. url: `${data.vod_id}/${data.vod_continu}`,
  214. })
  215. })
  216. setResult(d)
  217. }),
  218. 二级: $js.toString(() => {
  219. // var d = [];
  220. function Encrypt(plainText) {
  221. let key = CryptoJS.enc.Utf8.parse("mvXBSW7ekreItNsT");
  222. let iv = CryptoJS.enc.Utf8.parse("2U3IrJL8szAKp0Fj");
  223. // 将文本加密为 AES/CBC/PKCS5Padding 格式
  224. let encrypted = CryptoJS.AES.encrypt(plainText, key, {
  225. iv: iv,
  226. mode: CryptoJS.mode.CBC,
  227. padding: CryptoJS.pad.Pkcs7
  228. });
  229. // 获取加密结果并转为 Hex 格式
  230. let encryptedHex = encrypted.ciphertext.toString(CryptoJS.enc.Hex);
  231. return encryptedHex.toUpperCase(); // 返回大写 Hex 格式
  232. }
  233. function Decrypt(word, key, iv) {
  234. let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
  235. // 使用AES/CBC/PKCS5Padding模式进行解密
  236. let decrypt = CryptoJS.AES.decrypt({
  237. ciphertext: encryptedHexStr
  238. }, key, {
  239. iv: iv,
  240. mode: CryptoJS.mode.CBC, // 使用CBC模式
  241. padding: CryptoJS.pad.Pkcs7 // 使用PKCS#7填充
  242. });
  243. // 将解密后的数据转换为原始文本
  244. let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
  245. // 返回解密后的文本
  246. return decryptedStr;
  247. }
  248. function getbody2(key, t) {
  249. var signature = 'token_id=,token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79,phone_type=1,request_key=' + key + ',app_id=1,time=' + t + ',keys=Qmxi5ciWXbQzkr7o+SUNiUuQxQEf8/AVyUWY4T/BGhcXBIUz4nOyHBGf9A4KbM0iKF3yp9M7WAY0rrs5PzdTAOB45plcS2zZ0wUibcXuGJ29VVGRWKGwE9zu2vLwhfgjTaaDpXo4rby+7GxXTktzJmxvneOUdYeHi+PZsThlvPI=*&zvdvdvddbfikkkumtmdwqppp?|4Y!s!2br'; //log(signature)
  250. var signature2 = md5(signature); //log(signature2)
  251. var body = 'token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79&token_id=&phone_type=1&time=' + t + '&phone_model=xiaomi-22021211rc&keys=Qmxi5ciWXbQzkr7o%2BSUNiUuQxQEf8%2FAVyUWY4T%2FBGhcXBIUz4nOyHBGf9A4KbM0iKF3yp9M7WAY0rrs5PzdTAOB45plcS2zZ0wUibcXuGJ29VVGRWKGwE9zu2vLwhfgjTaaDpXo4rby%2B7GxXTktzJmxvneOUdYeHi%2BPZsThlvPI%3D&request_key=' + key + '&signature=' + signature2 + '&app_id=1&ad_version=1'; //log(body)
  252. return body
  253. }
  254. const bodykey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGAe6hKrWLi1zQmjTT1ozbE4QdFeJGNxubxld6GrFGximxfMsMB6BpJhpcTouAqywAFppiKetUBBbXwYsYU1wNr648XVmPmCMCy4rY8vdliFnbMUj086DU6Z+/oXBdWU3/b1G0DN3E9wULRSwcKZT3wj/cCI1vsCm3gj2R5SqkA9Y0CAwEAAQKBgAJH+4CxV0/zBVcLiBCHvSANm0l7HetybTh/j2p0Y1sTXro4ALwAaCTUeqdBjWiLSo9lNwDHFyq8zX90+gNxa7c5EqcWV9FmlVXr8VhfBzcZo1nXeNdXFT7tQ2yah/odtdcx+vRMSGJd1t/5k5bDd9wAvYdIDblMAg+wiKKZ5KcdAkEA1cCakEN4NexkF5tHPRrR6XOY/XHfkqXxEhMqmNbB9U34saTJnLWIHC8IXys6Qmzz30TtzCjuOqKRRy+FMM4TdwJBAJQZFPjsGC+RqcG5UvVMiMPhnwe/bXEehShK86yJK/g/UiKrO87h3aEu5gcJqBygTq3BBBoH2md3pr/W+hUMWBsCQQChfhTIrdDinKi6lRxrdBnn0Ohjg2cwuqK5zzU9p/N+S9x7Ck8wUI53DKm8jUJE8WAG7WLj/oCOWEh+ic6NIwTdAkEAj0X8nhx6AXsgCYRql1klbqtVmL8+95KZK7PnLWG/IfjQUy3pPGoSaZ7fdquG8bq8oyf5+dzjE/oTXcByS+6XRQJAP/5ciy1bL3NhUhsaOVy55MHXnPjdcTX0FaLi+ybXZIfIQ2P4rb19mVq1feMbCXhz+L1rG8oat5lYKfpe8k83ZA==";
  255. function gethtml(u, body, headers) {
  256. var hd = fetch(u, {
  257. headers: headers,
  258. body: body,
  259. method: 'POST',
  260. rejectCoding: true
  261. });
  262. var banner = JSON.parse(hd).data;
  263. var response_key = banner.response_key; //log()
  264. var keys = banner.keys; //log(keys)
  265. var bodykeyiv = JSON.parse(RSA.decode(keys, bodykey));
  266. var key = CryptoJS.enc.Utf8.parse(bodykeyiv.key);
  267. var iv = CryptoJS.enc.Utf8.parse(bodykeyiv.iv);
  268. var html = Decrypt(response_key, key, iv);
  269. return html
  270. }
  271. const headers = {
  272. 'Cache-Control': 'no-cache',
  273. 'Version': '2406025',
  274. 'PackageName': 'com.uf076bf0c246.qe439f0d5e.m8aaf56b725a.ifeb647346f',
  275. 'Ver': '1.9.2',
  276. 'Referer': 'https://api.8utdtcq.com',
  277. 'X-Customer-Client-Ip': '127.0.0.1',
  278. 'Content-Type': 'application/x-www-form-urlencoded',
  279. 'Host': 'api.8utdtcq.com',
  280. 'Connection': 'Keep-Alive',
  281. //'Accept-Encoding': 'gzip',
  282. 'User-Agent': 'okhttp/3.12.0'
  283. }
  284. // var MY_URL = MY_URL.split("##")[1]; //log(MY_URL)
  285. input = input.replace('https://api.8utdtcq.com/', '');
  286. //console.log("input----===="+input)
  287. // var vod_continu = input.split("/")[1]; //log(vod_id)
  288. var vod_id = input.split("/")[0];
  289. //console.log("vod----===="+vod_id)
  290. var timestamp = new Date().getTime() / 1000;
  291. var t = timestamp.toString().split('.')[0];
  292. var request_key = JSON.stringify({
  293. "token_id": "393668",
  294. "vod_id": vod_id,
  295. "mobile_time": t,
  296. "token": "1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79"
  297. });
  298. var request_key2 = Encrypt(request_key);
  299. var body = getbody2(request_key2, t)
  300. var html = gethtml("https://api.8utdtcq.com/App/IndexPlay/playInfo", body, headers)
  301. var data2 = JSON.parse(html).vodInfo; //console.log("hwudwudg-===="+JSON.stringify(data2))
  302. var request_key3 = JSON.stringify({
  303. "vurl_cloud_id": "2",
  304. "vod_d_id": vod_id
  305. }); //log(request_key3)
  306. var request_key4 = Encrypt(request_key3); //log(request_key4)
  307. var body2 = getbody2(request_key4, t)
  308. var html3 = gethtml("https://api.8utdtcq.com/App/Resource/Vurl/show", body2, headers); //log(html3)
  309. var list = JSON.parse(html3).list;
  310. let nnnmm = [];
  311. list.forEach(item => {
  312. // 获取play对象的所有值
  313. const playParams = Object.values(item.play);
  314. let lastParam = null;
  315. // 从数组的最后一个元素开始,向前查找,直到找到一个非空的param值
  316. for (let i = playParams.length - 1; i >= 0; i--) {
  317. if (playParams[i].param) {
  318. lastParam = playParams[i].param;
  319. break;
  320. }
  321. }
  322. // 使用正则表达式匹配vurl_id
  323. const vurlIdMatch = lastParam.match(/vurl_id=(\d+)/);
  324. const resolution = lastParam.match(/resolution=(\d+)/);
  325. // 如果匹配成功,将title和vurl_id组合后push到result数组
  326. if (vurlIdMatch) {
  327. nnnmm.push(`${item.title}$${vod_id}/${vurlIdMatch[1]}?${resolution[1]}`);
  328. }
  329. });
  330. VOD = {
  331. title: data2.vod_name,
  332. type: data2.videoTag.toString(),
  333. desc: data2.vod_use_content,
  334. vod_actor: data2.vod_actor,
  335. vod_area: data2.vod_area,
  336. vod_director: data2.vod_director,
  337. img: data2.vod_pic,
  338. vod_play_from: '雷蒙影视',
  339. vod_play_url: nnnmm.join('#')
  340. }
  341. }),
  342. 搜索: $js.toString(() => {
  343. let d = [];
  344. function Encrypt(plainText) {
  345. let key = CryptoJS.enc.Utf8.parse("mvXBSW7ekreItNsT");
  346. let iv = CryptoJS.enc.Utf8.parse("2U3IrJL8szAKp0Fj");
  347. // 将文本加密为 AES/CBC/PKCS5Padding 格式
  348. let encrypted = CryptoJS.AES.encrypt(plainText, key, {
  349. iv: iv,
  350. mode: CryptoJS.mode.CBC,
  351. padding: CryptoJS.pad.Pkcs7
  352. });
  353. // 获取加密结果并转为 Hex 格式
  354. let encryptedHex = encrypted.ciphertext.toString(CryptoJS.enc.Hex);
  355. return encryptedHex.toUpperCase(); // 返回大写 Hex 格式
  356. }
  357. function Decrypt(word, key, iv) {
  358. let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
  359. // 使用AES/CBC/PKCS5Padding模式进行解密
  360. let decrypt = CryptoJS.AES.decrypt({
  361. ciphertext: encryptedHexStr
  362. }, key, {
  363. iv: iv,
  364. mode: CryptoJS.mode.CBC, // 使用CBC模式
  365. padding: CryptoJS.pad.Pkcs7 // 使用PKCS#7填充
  366. });
  367. // 将解密后的数据转换为原始文本
  368. let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
  369. // 返回解密后的文本
  370. return decryptedStr;
  371. }
  372. function getbody3(key, t) {
  373. var signature = 'token_id=,token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79,phone_type=1,request_key=' + key + ',app_id=1,time=' + t + ',keys=qDpotE2bedimK3QGqlyV5ieXXC3EhaPLQ+IOJyHnHflCj5w/7ESK7FgywMvrgjxbx0GklEFLI4+JshgySe633OIRstuktwdiCy3CT+fLSpuxBJDIlfXQDaeH3ig1wiB0JsZ601XHiFweGMu4tZfnSpHg3OnoL6nz/uurUif2OK4=*&zvdvdvddbfikkkumtmdwqppp?|4Y!s!2br'; //log(signature)
  374. var signature2 = md5(signature); //log(signature2)
  375. var body = 'token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79&token_id=&phone_type=1&time=' + t + '&phone_model=xiaomi-22021211rc&keys=qDpotE2bedimK3QGqlyV5ieXXC3EhaPLQ%2BIOJyHnHflCj5w%2F7ESK7FgywMvrgjxbx0GklEFLI4%2BJshgySe633OIRstuktwdiCy3CT%2BfLSpuxBJDIlfXQDaeH3ig1wiB0JsZ601XHiFweGMu4tZfnSpHg3OnoL6nz%2FuurUif2OK4%3D&request_key=' + key + '&signature=' + signature2 + '&app_id=1&ad_version=1';
  376. return body
  377. }
  378. const bodykey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGAe6hKrWLi1zQmjTT1ozbE4QdFeJGNxubxld6GrFGximxfMsMB6BpJhpcTouAqywAFppiKetUBBbXwYsYU1wNr648XVmPmCMCy4rY8vdliFnbMUj086DU6Z+/oXBdWU3/b1G0DN3E9wULRSwcKZT3wj/cCI1vsCm3gj2R5SqkA9Y0CAwEAAQKBgAJH+4CxV0/zBVcLiBCHvSANm0l7HetybTh/j2p0Y1sTXro4ALwAaCTUeqdBjWiLSo9lNwDHFyq8zX90+gNxa7c5EqcWV9FmlVXr8VhfBzcZo1nXeNdXFT7tQ2yah/odtdcx+vRMSGJd1t/5k5bDd9wAvYdIDblMAg+wiKKZ5KcdAkEA1cCakEN4NexkF5tHPRrR6XOY/XHfkqXxEhMqmNbB9U34saTJnLWIHC8IXys6Qmzz30TtzCjuOqKRRy+FMM4TdwJBAJQZFPjsGC+RqcG5UvVMiMPhnwe/bXEehShK86yJK/g/UiKrO87h3aEu5gcJqBygTq3BBBoH2md3pr/W+hUMWBsCQQChfhTIrdDinKi6lRxrdBnn0Ohjg2cwuqK5zzU9p/N+S9x7Ck8wUI53DKm8jUJE8WAG7WLj/oCOWEh+ic6NIwTdAkEAj0X8nhx6AXsgCYRql1klbqtVmL8+95KZK7PnLWG/IfjQUy3pPGoSaZ7fdquG8bq8oyf5+dzjE/oTXcByS+6XRQJAP/5ciy1bL3NhUhsaOVy55MHXnPjdcTX0FaLi+ybXZIfIQ2P4rb19mVq1feMbCXhz+L1rG8oat5lYKfpe8k83ZA==";
  379. function gethtml(u, body, headers) {
  380. var hd = fetch(u, {
  381. headers: headers,
  382. body: body,
  383. method: 'POST',
  384. rejectCoding: true
  385. });
  386. var banner = JSON.parse(hd).data;
  387. var response_key = banner.response_key; //log()
  388. //console.log("response_key=="+response_key)
  389. var keys = banner.keys; //log(keys)
  390. var bodykeyiv = JSON.parse(RSA.decode(keys, bodykey));
  391. //console.log("rsaxxxx=="+JSON.stringify(bodykeyiv))
  392. var key = CryptoJS.enc.Utf8.parse(bodykeyiv.key);
  393. var iv = CryptoJS.enc.Utf8.parse(bodykeyiv.iv);
  394. var html = Decrypt(response_key, key, iv);
  395. //console.log("nskjsnwkjdnejd===qqxxxq="+JSON.stringify(html))
  396. return html
  397. }
  398. var timestamp = new Date().getTime() / 1000;
  399. var t = timestamp.toString().split('.')[0];
  400. var url = input.split("#")[0]; //url
  401. var request_key11 = input.split("#")[1]
  402. var request_key = JSON.stringify({
  403. "keywords": request_key11,
  404. "order_val": "1"
  405. })
  406. //console.log("nskjsnwkjdnejd===qqxxxq=tttt"+request_key)
  407. var request_key2 = Encrypt(request_key);
  408. var body = getbody3(request_key2, t)
  409. var headers = {
  410. 'Cache-Control': 'no-cache',
  411. 'Version': '2406025',
  412. 'PackageName': 'com.uf076bf0c246.qe439f0d5e.m8aaf56b725a.ifeb647346f',
  413. 'Ver': '1.9.2',
  414. 'Referer': 'https://api.8utdtcq.com',
  415. 'X-Customer-Client-Ip': '127.0.0.1',
  416. 'Content-Type': 'application/x-www-form-urlencoded',
  417. 'Host': 'api.8utdtcq.com',
  418. 'Connection': 'Keep-Alive',
  419. 'User-Agent': 'okhttp/3.12.0'
  420. }
  421. var html = gethtml(url, body, headers)
  422. //console.log("nskjsnwkjdnejd===="+html)
  423. var list = JSON.parse(html).list; //log(list)
  424. //console.log("nskjsnwkjdnejd===qqqqq="+list)
  425. list.forEach(data => {
  426. d.push({
  427. title: data.vod_name,
  428. desc: data.vod_continu == 0 ? '电影' : '更新至' + data.vod_continu + '集',
  429. content: data.vod_addtime,
  430. img: data.vod_pic,
  431. url: `${data.vod_id}/${data.vod_continu}`,
  432. })
  433. })
  434. setResult(d)
  435. }),
  436. }