├── README.md
├── hiker-main
├── 1号仓库.json
├── README.md
├── crypto-java.js
└── f
└── yxip
├── clashmeta-sub-gitlab-main.zip
├── doc.openwrt.cc.zip
├── warp-yxip
├── x-ui.sh
└── 脚本.txt
/README.md:
--------------------------------------------------------------------------------
1 | # subscription
2 |
3 | 订阅面板转换链接:https://sub.52pojie.free.hr/
4 |
5 | 前端订阅面板:https://sub-web.netlify.app/
6 |
7 | 后端订阅链接:https://convert.yuanwangokk-b7c.workers.dev/sub?
8 |
9 | cloudflare邮箱:yuanwangokk@proton.me
10 |
11 | =====================================================
12 |
13 | Clash meta 订阅链接:
14 |
15 | https://igdux.top/smRY
16 |
17 | https://auto.classelivre.eu.org/sub?host=arise-dtc.pages.dev&uuid=bb5e4571-9c41-44db-b67f-0d764378e2be&path=/arise?ed=2048
18 |
19 | SingBox 订阅链接:
20 |
21 | https://igdux.top/wb7F
22 |
23 | =====================================================
24 |
25 |
--------------------------------------------------------------------------------
/hiker-main/1号仓库.json:
--------------------------------------------------------------------------------
1 | {
2 | "urls": [
3 | {
4 | "url": "https://agit.ai/guozu616/TVbox/raw/branch/main/config.json",
5 | "name": "🌟强悍🇨🇳接口🌟"
6 | },
7 | {
8 | "url": "https://agit.ai/zzzlllmmm1/zzzlllmmm/raw/branch/master/zzz.json",
9 | "name": "🌟万能🇨🇳接口🌟"
10 | },
11 | {
12 | "url": "https://agit.ai/guozu616/TVbox/raw/branch/main/config.json",
13 | "name": "🌟强悍🇨🇳接口🌟"
14 | },
15 | {
16 | "url": "https://agit.ai/n/b/raw/branch/a/b/c.json",
17 | "name": "🌟超级🇨🇳接口🌟"
18 | },
19 | {
20 | "url": "https://agit.ai/376242575/zzh/raw/branch/master/txt/影视7.txt",
21 | "name": "🌟七七🇨🇳合集🌟"
22 | },
23 | {
24 | "url": "http://www.dmtv.ml/mao/single.json",
25 | "name": "🌟推送🇨🇳网盘🌟"
26 | },
27 | {
28 | "url": "https://freed.yuanhsing.cf/TVBox/meowcf.json ",
29 | "name": "🌟品汇🇨🇳接口🌟"
30 | },
31 | {
32 | "url": "https://agit.ai/nbwzlyd/xiaopingguo/raw/branch/master/xiaopingguo/xiaopingguo.json",
33 | "name": "🌟苹果🇨🇳接口🌟"
34 | },
35 | {
36 | "url": "http://52bsj.vip:98/wuai",
37 | "name": "🌟吾爱🇨🇳接口🌟"
38 | },
39 | {
40 | "url": "http://0317.atwebpages.com/wp-content/uploads/2022/11/tvbox.txt",
41 | "name": "🌟高清🇨🇳视频🌟"
42 | },
43 | {
44 | "url": "http://52bsj.vip:81/api/v3/file/get/29899/box2.json?sign=3cVyKZQr3lFAwdB3HK-A7h33e0MnmG6lLB9oWlvSNnM%3D%3A0",
45 | "name": "🌟宝盒🇨🇳接口🌟"
46 | },
47 | {
48 | "url": "https://raw.iqiq.io/vpei/Free-TVUrl-Merge/main/out/tvbox.txt",
49 | "name": "🌟缝合🇨🇳全网🌟"
50 | },
51 | {
52 | "url": "https://liu673cn.github.io/box/m.json",
53 | "name": "🌟聚合🇨🇳接口🌟"
54 | },
55 | {
56 | "url": "https://agit.ai/Yoursmile7/TVBox/raw/branch/master/XC.json",
57 | "name": "🌟终南🇨🇳聚合🌟"
58 | },
59 | {
60 | "url": "https://agit.ai/376242575/zzh/raw/branch/master/txt/%e4%bd%93%e8%82%b2%ef%b9%a0%e7%9b%b4%e6%92%ad.txt",
61 | "name": "🌟球赛🇨🇳直播🌟"
62 | },
63 | {
64 | "url": "https://agit.ai/376242575/zzh/raw/branch/master/%e4%bc%91%e9%97%b2%e7%bb%bc%e8%89%ba.txt ",
65 | "name": "🌟女团🇨🇳音乐🌟"
66 | },
67 | {
68 | "url": "http://刚刚.live/猫",
69 | "name": "💗刚刚🔥接口💗"
70 | },
71 | {
72 | "url": "https://神器每日推送.tk/pz.json",
73 | "name": "💗神器🔥接口💗"
74 | },
75 | {
76 | "url": "http://饭太硬.ml/tvb/x",
77 | "name": "💗饭硬🔥接口💗"
78 | },
79 | {
80 | "url": "https://dxawi.github.io/0/0.json",
81 | "name": "💗爬虫🎃接口💗"
82 | },
83 | {
84 | "url": "http://miaotvs.cn/meow",
85 | "name": "💗太阳🎃爬虫💗"
86 | },
87 | {
88 | "url": "https://raw.liucn.cc/box/m.json",
89 | "name": "💗T4🎃接口💗"
90 | },
91 | {
92 | "url": "http://js.134584.xyz/json/pp87.json ",
93 | "name": "💗外置🎃接口💗"
94 | },
95 | {
96 | "url": "https://agit.ai/xiaohewanwan/jar/raw/branch/main/Avatar.json",
97 | "name": "💗道长🎃接口💗"
98 | },
99 | {
100 | "url": "https://freed.yuanhsing.cf/TVBox/meowcf.json",
101 | "name": "💗XB🎃接口💗"
102 | },
103 | {
104 | "url": "http://111.67.196.181/mtv/meow.txt",
105 | "name": "💓相声🎈音乐💓"
106 | },
107 | {
108 | "url": "https://ghproxy.com/https://raw.githubusercontent.com/ShadowDemon1997/CatVodSpiderJS/main/cfg.json ",
109 | "name": "💗py🎃接口💗"
110 | },
111 | {
112 | "url": "https://download.kstore.space/download/2883/PY/0902mystv.txt",
113 | "name": "💗蚂蚁🎃论坛💗"
114 | },
115 | {
116 | "url": "https://agit.ai/chuqiuyu/gao/raw/commit/8945d1b27933e8e6d18bfad7a76153610b555d12/0820.json",
117 | "name": "💗SP🎃接口💗"
118 | },
119 | {
120 | "url": "https://freed.yuanhsing.cf/TVBox/meowcf.json",
121 | "name": "💗全网🎃聚合💗"
122 | },
123 | {
124 | "url": "https://agit.ai/Yoursmile7/TVBox/raw/branch/master/XC.json",
125 | "name": "💗戏曲🎃美食💗"
126 | },
127 | {
128 | "url": "https://agit.ai/66666/mao/raw/branch/master/00/%E8%87%AA%E7%94%A8.jpg ",
129 | "name": "💗神马🎃聚合💗"
130 | }
131 |
132 | ]
133 | }
134 |
--------------------------------------------------------------------------------
/hiker-main/README.md:
--------------------------------------------------------------------------------
1 | # hiker
2 |
--------------------------------------------------------------------------------
/hiker-main/crypto-java.js:
--------------------------------------------------------------------------------
1 | (function() {
2 | //by LoyDgIk
3 | const jvString = java.lang.String;
4 | const jvArray = java.lang.reflect.Array;
5 | const Byte = java.lang.Byte;
6 | const Integer = java.lang.Integer;
7 |
8 | const StandardCharsets = java.nio.charset.StandardCharsets;
9 | const MessageDigest = java.security.MessageDigest;
10 | const Base64 = android.util.Base64;
11 | const StringBuffer = java.lang.StringBuffer;
12 |
13 | const Cipher = javax.crypto.Cipher;
14 | const IvParameterSpec = javax.crypto.spec.IvParameterSpec;
15 | const SecretKeySpec = javax.crypto.spec.SecretKeySpec;
16 | const FileUtil = com.example.hikerview.utils.FileUtil;
17 |
18 | //CryptoUtil
19 | //互转类
20 | function Data(bytes) {
21 | this.bytes = bytes;
22 | //this.length = bytes.length;
23 | }
24 |
25 | Object.assign(Data, {
26 | parseStr(str, charset) {
27 | return new Data(toJvString(str).getBytes(charset));
28 | },
29 | parseUTF8(str) {
30 | return Data.parseStr(str, StandardCharsets.UTF_8);
31 | },
32 | parseUTF16(str) {
33 | return Data.parseStr(str, StandardCharsets.UTF_16);
34 | },
35 | parseHex(str) {
36 | return new Data(hexDecodeToByteArray(str));
37 | },
38 | parseBase64(str, flags) {
39 | return new Data(base64DecodeToByteArray(str, flags));
40 | },
41 | parseLatin1(str) {
42 | return Data.parseStr(str, StandardCharsets.ISO_8859_1);
43 | },
44 | parseUTF16LE(str) {
45 | return Data.parseStr(str, StandardCharsets.UTF_16LE);
46 | },
47 | parseInputStream(stream) {
48 | return new Data(FileUtil.toBytes(stream));
49 | }
50 | });
51 | Object.assign(Data.prototype, {
52 | toHex() {
53 | return bytesToHex(this.bytes);
54 | },
55 | toBytes() {
56 | return this.bytes;
57 | },
58 | toString(charset) {
59 | return bytesToString(this.bytes, charset);
60 | },
61 | toLatin1() {
62 | return this.toString(StandardCharsets.ISO_8859_1);
63 | },
64 | toUTF16LE() {
65 | return this.toString(StandardCharsets.UTF_16LE);
66 | },
67 | toUTF16() {
68 | return this.toString(StandardCharsets.UTF_16);
69 | },
70 | toBase64(flags) {
71 | return String(Base64.encodeToString(this.bytes, flags || Base64.DEFAULT));
72 | },
73 | toDigest() {
74 | return new Digest(this);
75 | },
76 | toInputStream() {
77 | return FileUtil.toInputStream(this.bytes);
78 | },
79 | toUint8Array() {
80 | let length = this.bytes.length;
81 | let u8Arr = new Uint8Array(length);
82 | for (let i = 0; i < length; i++) {
83 | u8Arr[i] = this.bytes[i];
84 | }
85 | return u8Arr;
86 | },
87 | base64Decode(flags) {
88 | this.bytes = base64DecodeToByteArray(this.toString(), flags);
89 | return this;
90 | },
91 | base64Encode(flags) {
92 | this.bytes = base64EncodeToByteArray(this.bytes, flags);
93 | return this;
94 | },
95 | length() {
96 | return this.bytes.length;
97 | }
98 | });
99 | //摘要类
100 | function Digest(data) {
101 | this.data = data;
102 | }
103 | Digest.digest = function(data, algorithm) {
104 | try {
105 | let md = MessageDigest.getInstance(algorithm);
106 | md.update(data.toBytes());
107 | let hashInBytes = md.digest();
108 | return String(bytesToHex(hashInBytes));
109 | } catch (e) {
110 | throw (e);
111 | }
112 | }
113 | Object.assign(Digest.prototype, {
114 | md5() {
115 | return Digest.digest(this.data, "MD5");
116 | },
117 | sha256() {
118 | return Digest.digest(this.data, "SHA-256");
119 | },
120 | md2() {
121 | return Digest.digest(this.data, "MD2");
122 | },
123 | sha1() {
124 | return Digest.digest(this.data, "SHA-1");
125 | },
126 | sha512() {
127 | return Digest.digest(this.data, "SHA-512");
128 | },
129 | sha384() {
130 | return Digest.digest(this.data, "SHA-384");
131 | }
132 | });
133 |
134 |
135 | function process(operation, cipherType, input, key, option) {
136 | option = option || {};
137 | validate(key, option.mode, cipherType);
138 | if (typeof input === "string") {
139 | input = operation === Cipher.ENCRYPT_MODE ? Data.parseUTF8(input) : Data.parseBase64(input);
140 | }
141 | let secretKey = new SecretKeySpec(key.toBytes(), cipherType);
142 | let cipher = Cipher.getInstance(option.mode || cipherType);
143 | if (option.iv != null) {
144 | cipher.init(operation, secretKey, new IvParameterSpec(option.iv.toBytes()));
145 | } else {
146 | cipher.init(operation, secretKey);
147 | }
148 | return new Data(cipher.doFinal(input.toBytes()));
149 | }
150 |
151 | const AES = {
152 | encrypt(data, key, option) {
153 | return process(Cipher.ENCRYPT_MODE, "AES", data, key, option);
154 |
155 | },
156 | decrypt(data, key, option) {
157 | return process(Cipher.DECRYPT_MODE, "AES", data, key, option);
158 | }
159 | }
160 |
161 | const DES = {
162 | encrypt(data, key, option) {
163 | return process(Cipher.ENCRYPT_MODE, "DES", data, key, option);
164 | },
165 | decrypt(data, key, option) {
166 | return process(Cipher.DECRYPT_MODE, "DES", data, key, option);
167 | }
168 | }
169 |
170 | const DESede = {
171 | encrypt(data, key, option) {
172 | return process(Cipher.ENCRYPT_MODE, "DESede", data, key, option);
173 | },
174 | decrypt(data, key, option) {
175 | return process(Cipher.DECRYPT_MODE, "DESede", data, key, option);
176 | }
177 | }
178 |
179 | function validate(key, mode, cipherType) {
180 | if (key == null) {
181 | throw new Error("Key must not be null or empty.");
182 | }
183 | if (mode && !mode.startsWith(cipherType)) {
184 | throw new Error("Invalid mode.");
185 | }
186 | let expectedKeyLength = [];
187 | switch (cipherType) {
188 | case "AES":
189 | expectedKeyLength = [16, 24, 32];
190 | break;
191 | case "DESede":
192 | expectedKeyLength = [24];
193 | break;
194 | case "DES":
195 | expectedKeyLength = [8];
196 | break;
197 | default:
198 | throw new Error("Invalid cipher type.");
199 | }
200 | if (!expectedKeyLength.includes(key.length())) {
201 | throw new Error("Invalid key length. Key length must be " + expectedKeyLength.join(" or ") + " bytes for " + cipherType + ".");
202 | }
203 | }
204 |
205 |
206 | /*mode
207 | AES/CBC/PKCS5Padding
208 | AES/CBC/NoPadding
209 | AES/ECB/PKCS5Padding
210 | AES/ECB/NoPadding
211 | AES/CFB/NoPadding
212 | AES/CFB/PKCS5Padding
213 | AES/OFB/NoPadding
214 | AES/OFB/PKCS5Padding
215 | AES/CTR/NoPadding
216 | AES/CTR/PKCS5Padding
217 |
218 | DES/CBC/PKCS5Padding
219 | DES/CBC/NoPadding
220 | DES/ECB/PKCS5Padding
221 | DES/ECB/NoPadding
222 | DES/CFB/NoPadding
223 | DES/CFB/PKCS5Padding
224 | DES/OFB/NoPadding
225 | DES/OFB/PKCS5Padding
226 | DES/CTR/NoPadding
227 | DES/CTR/PKCS5Padding
228 |
229 | */
230 | function bytesToString(bytes, charset) {
231 | return String(new jvString(bytes, charset || StandardCharsets.UTF_8));
232 | }
233 |
234 | function base64EncodeToByteArray(bytes, flags) {
235 | return Base64.encode(bytes, flags || Base64.DEFAULT);
236 | }
237 |
238 | function base64DecodeToByteArray(str, flags) {
239 | if (str == null) {
240 | return null;
241 | }
242 | return Base64.decode(str, flags || Base64.DEFAULT);
243 | }
244 |
245 | function hexDecodeToByteArray(cipherText) {
246 | cipherText = String(cipherText);
247 | let str = cipherText.toLowerCase();
248 | let length = str.length;
249 | let bArr = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, length / 2);
250 | for (let i = 0, o = 0; i < length; i += 2, o++) {
251 | let a = str[i + 1],
252 | b = str[i];
253 | if (b != "0") {
254 | a = b + a;
255 | }
256 | let hexInt = Integer.parseInt(new jvString(a), 16);
257 | let inty = hexInt > 127 ? hexInt - 255 - 1 : hexInt;
258 | bArr[o] = inty;
259 | }
260 | return bArr;
261 | }
262 |
263 |
264 | function bytesToHex(data) {
265 | let strBuffer = new StringBuffer();
266 | for (let i = 0; i < data.length; i++) {
267 | //strBuffer.append(Integer.toHexString(0xff & data[i]));
268 | strBuffer.append(jvString.format("%02x", Byte(data[i])));
269 | }
270 | return String(strBuffer.toString());
271 | }
272 |
273 |
274 | function toJvString(str) {
275 | if (typeof str === "string") {
276 | return new jvString(str);
277 | } else {
278 | return str;
279 | }
280 | }
281 | $.exports = {
282 | Data,
283 | Digest,
284 | AES,
285 | DES,
286 | DESede
287 | };
288 | })()
289 |
--------------------------------------------------------------------------------
/hiker-main/f:
--------------------------------------------------------------------------------
1 | js:
2 | function lunbo(c) {
3 | return $.toString((c) => {
4 | var k = c.indexbanner.length;
5 | var n = '0';
6 | d.push({
7 | title: color(pdfh(c.indexbanner[n], c.title), 'FF3399'),
8 | img: !/##/.test(c.img)?pd(c.indexbanner[n], c.img):eval(c.img.replace('host','c.host').replace('indexbanner','c.indexbanner')),
9 | col_type: 'card_pic_1',
10 | desc: '0',
11 | url: pd(c.indexbanner[n], c.url),
12 | extra: {
13 | id: 'lunbo',
14 | stype: '影视',
15 | name: pdfh(c.indexbanner[n], c.name),
16 | }
17 | });
18 | let id = 'juyue';
19 | let time = 4000;
20 | registerTask(id, time, $.toString((c, k) => {
21 | rc(fetchPC('https://gitee.com/mistywater/hiker_info/raw/master/githubproxy.json') + 'https://raw.githubusercontent.com/mistywater/hiker/main/f', 24);
22 | var n = getVar(c.host + 'n', '0');
23 | var item = toerji({
24 | title: color(pdfh(c.indexbanner[n], c.title), 'FF3399'),
25 | img: !/##/.test(c.img)?urla(pdfh(c.indexbanner[n], c.img), c.host):eval(c.img.replace('host','c.host').replace('indexbanner','c.indexbanner')),
26 | url: urla(pdfh(c.indexbanner[n], c.url), c.host),
27 | extra: {
28 | id: 'lunbo',
29 | stype: '影视',
30 | name: pdfh(c.indexbanner[n], c.title),
31 | }
32 | }, c.name, '影视');
33 | updateItem('lunbo', item);
34 | if (n >= k - 1) {
35 | putVar(c.host + 'n', '0');
36 | } else {
37 | putVar(c.host + 'n', (parseInt(n) + 1) + '');
38 | }
39 | }, c, k));
40 | }, c);
41 | }
42 | function numbersCircled(index) {
43 | if (index < 10) {
44 | var num = String.fromCharCode(parseInt(index) + 1 + 10101);
45 | } else if (index < 20) {
46 | var num = String.fromCharCode(parseInt(index) + 1 + 9440);
47 | } else if (index < 35) {
48 | var num = String.fromCharCode(parseInt(index) + 1 + 12860)
49 | } else if (index < 50) {
50 | var num = String.fromCharCode(parseInt(index) + 1 + 12941)
51 | }
52 | return num;
53 | }
54 | function clearM3u8(url,reg) {
55 | let f = cacheM3u8(url);
56 | let c = readFile(f.split("##")[0]);
57 | let c2 = c.replace(new RegExp(reg,'g'), '');
58 | writeFile(f.split("##")[0], c2);
59 | return f;
60 | }
61 | function ccc(title, ccc_) {
62 | ccc_ = ccc_ ? ccc_ : {
63 | fc: '#FFFFFF',
64 | bc: '#FF435E',
65 | }
66 | return '‘‘’’' + title + ''
67 | }
68 | function sortPy(arr, name) {
69 | if (typeof(name)=='undefined'||name=='') {
70 | var arrNew = arr.sort((a, b) => a.localeCompare(b));
71 | } else {
72 | var arrNew = arr.sort((a, b) => a[name].localeCompare(b[name]));
73 | }
74 | for (var m in arrNew) {
75 | if (typeof(name)=='undefined'||name=='') {
76 | var mm = /^[\u4e00-\u9fa5]/.test(arrNew[m]) ? m : '-1';
77 | }else{
78 | var mm = /^[\u4e00-\u9fa5]/.test(arrNew[m][name]) ? m : '-1';
79 | }
80 | if (mm > -1) {
81 | break;
82 | }
83 | }
84 | for (var n = arrNew.length - 1; n >= 0; n--) {
85 | if (typeof(name)=='undefined'||name=='') {
86 | var nn = /^[\u4e00-\u9fa5]/.test(arrNew[n]) ? n : '-1';
87 | }else{
88 | var nn = /^[\u4e00-\u9fa5]/.test(arrNew[n][name]) ? n : '-1';
89 | }
90 | if (nn > -1) {
91 | break;
92 | }
93 | }
94 | if (mm > -1) {
95 | var arrTmp = arrNew.splice(m, parseInt(n - m) + 1);
96 | arrNew = arrNew.concat(arrTmp);
97 | }
98 | return arrNew
99 | }
100 | function cpage(t,c){
101 | if(!c){var c='c';}
102 | return `_c = getMyVar(host + '${c}', '${t}');
103 | if (_c != getMyVar(host + '_c', '${t}')) {
104 | clearMyVar(host + 'page');
105 | }
106 | page = getMyVar(host + 'page', page + '');`;
107 | }
108 | function vPw(id) {
109 | evalPrivateJS('tRa+Ef6XEI8XzPzL4MD07/zSoDZsvjf+1+JA5R6hzr0ua3Ne4DB64WY9a+QNC0LkyliGQvjx58VOMjIycg6gE+OLXtJez8J+ktiS1aG934RMQ3oiJvqf/Z6XhMBvAEWqY+kHXbxZA64mVIWy5SmlgQgpYnf44KmTlAPbyUk2jwfGSOBDb3BRRe+RFhfi0WBwNdMrJ8epmmH5U3IGGZqBZcC25DdlfUcUjNmE4xw6ZMpjqySqKedcrspz8waU99FsYCH0584/TooU18Dy7w7dpJ5nM5iZtj1KMqvRjRPafqP8EP0eNQPZ94mXJHRjmZ+21l6HdcufGBEaXqmBEne2gFPwRXUjrvbgxX6wNvIHglGSvN3ZobCVZO1wOYtaiU5U0OQym5z3yvsE4PYGCOPBzrSEChgnS3KU20C15lYc5+O5KuNYzpElY2hvqtjZ37TG+Cipi1vpN+SPg85+8QtHlFArUoXGT6wUlQw22BLyLVPlqzCht3aqeZb4EK1RSRir14aK0SUa9B3wBE7SLwtBvzTRB48hxeYOvR7JvPqJXK8r6rI4l2BNamSGSoSwQ0FmS7wm7sFPy/x+1rJ6/L4Z4ty4W8vl+HthbXoeS51rpPTENZZbfb8HVWGm+uRQRG5pj+zZJR1QXr0UDXbp8VEsAD+zkbEMpQGUjCBkAUecYCaR6Sg2ceoHj5FwIwxv2xtAxqQ26BxTOxCSX6oNg/NfCa5DcNmJ0fQ6Bm2CwY6dJhzCvgmTmNbNdk76Vmv9GgV7uzV05CX3XBNqVCIh+wOLRUqkyPlagERBpwzNP+zCIdKP9rg0eInraKDX/gdHGSBISmZb42pubVagDl8OhPqUyQ340fbz/h8uWulLl3z4shZTk1uBP/Megd+vNlX+qSi4KdyOxWST/HcZh4wYb/SU7JOAXU+b3SJnR1IL1D9CbqFfmWa/TxUkQWd7ePMIL0cZ');
110 | return;
111 | }
112 | function pageAdd(page,host){
113 | if (getMyVar(host + 'page')) {
114 | putMyVar(host + 'page', (parseInt(page) + 1) + '');
115 | }
116 | return;
117 | }
118 | function jinman(picUrl) {
119 | return $.toString((picUrl)=>{
120 | const ByteArrayOutputStream = java.io.ByteArrayOutputStream;
121 | const ByteArrayInputStream = java.io.ByteArrayInputStream;
122 | const Bitmap = android.graphics.Bitmap;
123 | const BitmapFactory = android.graphics.BitmapFactory;
124 | const Canvas = android.graphics.Canvas;
125 |
126 | picUrl.match(/photos\/(\d+)?\/(\d+)?/);
127 | let bookId = RegExp.$1;
128 | let imgId = RegExp.$2;
129 | if (!bookId || !imgId) return input;
130 | if (Number(bookId) <= 220980){
131 | return input;
132 | }else if (Number(bookId) <= 268850) {
133 | var $num = "10";
134 | } else if (Number(bookId) <= 421925) {
135 | var $num = parseInt(md5(bookId + imgId).slice(-1).charCodeAt() % 10) * 2 + 2;
136 | } else if (Number(bookId) > 421925) {
137 | var $num = parseInt(md5(bookId + imgId).slice(-1).charCodeAt() % 8) * 2 + 2;
138 | }
139 | let imgBitmap = BitmapFactory.decodeStream(input);
140 | closeMe(input);
141 | let width = imgBitmap.getWidth();
142 | let height = imgBitmap.getHeight();
143 | let y = Math.floor(height / $num);
144 | let remainder = height % $num;
145 |
146 | let newImgBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
147 | let canvas = new Canvas(newImgBitmap);
148 | for (let i = 1; i <= $num; i++) {
149 | let h = i === $num ? remainder: 0;
150 | canvas.drawBitmap(Bitmap.createBitmap(imgBitmap, 0, y * (i - 1), width, y + h), 0, y * ($num - i), null);
151 | }
152 | let baos = new ByteArrayOutputStream();
153 | newImgBitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
154 | return new ByteArrayInputStream(baos.toByteArray());
155 | },picUrl);
156 | }
157 | function extraPic(hiker, host,ctype) {
158 | if(!ctype){var ctype='';}
159 | var extra = $.toString((host, hiker,ctype) => ({
160 | chapterList: hiker ? 'hiker://files/_cache/chapterList.txt' : chapterList,
161 | info: {
162 | bookName: MY_URL.split('/')[2],
163 | ruleName: 'photo',
164 | bookTopPic: 'https://api.xinac.net/icon/?url=' + host,
165 | parseCode: downloadlazy,
166 | defaultView: '1'
167 | },
168 | longClick: [{
169 | title: '样式',
170 | js: $.toString((host,ctype) => {
171 | var Type = ["movie_1", "movie_2", "movie_3", "pic_1", "pic_2", "pic_3", "pic_1_full", "pic_1_center", "pic_1_card", "pic_2_card", "pic_3_square", "card_pic_1", "card_pic_2", "card_pic_3", "card_pic_3_center"];
172 | if (getItem(host+ctype + 'type')) {
173 | var index = Type.indexOf(getItem(host +ctype + 'type'));
174 | Type[index]='👉'+getItem(host +ctype+ 'type');
175 | }
176 | showSelectOptions({
177 | title: "选择样式",
178 | col: 2,
179 | options: Type,
180 | js: $.toString((host,ctype) => {
181 | setItem(host +ctype+ 'type', input.replace('👉',''));
182 | refreshPage();
183 | }, host,ctype)
184 | });
185 | return "hiker://empty";
186 | }, host,ctype),
187 | },{
188 | title: '下载',
189 | js: `'hiker://page/download.view?rule=本地资源管理'`,
190 | }, {
191 | title: '书架',
192 | js: `'hiker://page/Main.view?rule=本地资源管理'`,
193 | }, {
194 | title: '首页',
195 | js: $.toString((host) => {
196 | host = host;
197 | putMyVar(host + 'page', '1');
198 | refreshPage(false);
199 | return 'hiker://empty';
200 | }, host),
201 | }, {
202 | title: '当前第' + page + '页',
203 | js: '',
204 | }, {
205 | title: '跳转',
206 | js: $.toString((host) => {
207 | return $('').input((host) => {
208 | putMyVar(host + 'page', input);
209 | putMyVar(host + 'moveto', '0');
210 | refreshPage(false);
211 | }, host);
212 | }, host),
213 | }, ]
214 | }), host, hiker,ctype);
215 | return extra;
216 | }
217 | function imageDecss(key, iv, kiType, mode) {
218 | const CryptoUtil = $.require("hiker://assets/crypto-java.js");
219 | let key = CryptoUtil.Data.parseUTF8(key);
220 | if (kiType == 'base64') {
221 | let textData = CryptoUtil.Data.parseInputStream(input).base64Decode();
222 | } else {
223 | let textData = CryptoUtil.Data.parseInputStream(input);
224 | }
225 | if (iv) {
226 | let iv = CryptoUtil.Data.parseUTF8("8209658041411076");
227 | }
228 | let encrypted = CryptoUtil.AES.decrypt(textData, key, {
229 | mode: mode,
230 | iv: iv
231 | });
232 | if (kiType == 'base64') {
233 | let base64Text = encrypted.toString().split("base64,")[1];
234 | let encrypted0 = CryptoUtil.Data.parseBase64(base64Text, _base64.NO_WRAP);
235 | }
236 | return encrypted0.toInputStream();
237 | }
238 | function imgDecs(key, iv, kiType, mode) {
239 | return $.toString((key, iv, kiType, mode) => {
240 | if(key){var javaImport = new JavaImporter();
241 | javaImport.importPackage(
242 | Packages.com.example.hikerview.utils,
243 | Packages.java.lang,
244 | Packages.java.security,
245 | Packages.javax.crypto,
246 | Packages.javax.crypto.spec
247 | );
248 | with(javaImport) {
249 | let bytes = FileUtil.toBytes(input);
250 | if (!mode) {
251 | mode = 'AES/CBC/PKCS5Padding';
252 | }
253 | if (!kiType) {
254 | kiType = "String";
255 | }
256 |
257 | function hexStringToBytes(cipherText) {
258 | //cipherText = String(cipherText);
259 | let str = cipherText.toLowerCase();
260 | let length = str.length;
261 | let bArr = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, length / 2);
262 | for (let i = 0, o = 0; i < length; i += 2, o++) {
263 | let a = str[i + 1],
264 | b = str[i];
265 | if (b != "0") {
266 | a = b + a;
267 | }
268 | let hexInt = java.lang.Integer.parseInt(new java.lang.String(a), 16);
269 | let inty = hexInt > 127 ? hexInt - 255 - 1 : hexInt;
270 | bArr[o] = inty;
271 | }
272 |
273 | return bArr;
274 | }
275 |
276 | function getBytes(str) {
277 | let bytes;
278 | if (kiType === "Base64") {
279 | bytes = _base64.decode(str, _base64.NO_WRAP);
280 | } else if (kiType === "Hex") {
281 | bytes = hexStringToBytes(str);
282 | } else {
283 | bytes = String(str).getBytes("UTF-8");
284 | }
285 | return bytes;
286 | }
287 | key = getBytes(key);
288 | iv = getBytes(iv);
289 |
290 | let algorithm = mode.split("/")[0];
291 |
292 | function decryptData(_bArr) {
293 | let secretKeySpec = new SecretKeySpec(key, algorithm);
294 | let ivParameterSpec = new IvParameterSpec(iv);
295 | let cipher = Cipher.getInstance(mode);
296 | cipher.init(2, secretKeySpec, ivParameterSpec);
297 | return cipher.doFinal(_bArr);
298 | }
299 | bytes = decryptData(bytes);
300 | return FileUtil.toInputStream(bytes);
301 | }}else{ try {
302 | const CryptoUtil = $.require("hiker://assets/crypto-java.js");
303 | let textData = CryptoUtil.Data.parseInputStream(input);
304 | let base64Text = textData.toString().split("base64,")[1];
305 | let encrypted0 = CryptoUtil.Data.parseBase64(base64Text, _base64.NO_WRAP);
306 | return encrypted0.toInputStream();
307 | } catch (e) {
308 | return;
309 | }}
310 | }, key, iv, kiType, mode);
311 | }
312 | function hexStringToBytes(cipherText) {
313 | var javaImport = new JavaImporter();
314 | javaImport.importPackage(
315 | Packages.com.example.hikerview.utils,
316 | Packages.java.lang,
317 | Packages.java.security,
318 | Packages.java.util,
319 | Packages.java.io,
320 | Packages.java.text,
321 | Packages.javax.crypto,
322 | Packages.javax.crypto.spec,
323 | );
324 | with(javaImport) {
325 | cipherText = String(cipherText);
326 | let str = cipherText.toLowerCase();
327 | bArr = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 16);
328 | for (let i = 0, o = 0; i < 32; i += 2, o++) {
329 | let a = str[i + 1],
330 | b = str[i];
331 | if (b != "0") {
332 | a = b + a;
333 | }
334 | let hexInt = java.lang.Integer.parseInt(new java.lang.String(a), 16);
335 | let inty = hexInt > 127 ? hexInt - 255 - 1 : hexInt;
336 | bArr[o] = inty;
337 | }
338 | return bArr;}
339 | }
340 | function pageMoveto(host, page, ctype) {
341 | if(!ctype){var ctype='';}
342 | var extra = {
343 | longClick: [{
344 | title: '样式',
345 | js: $.toString((host,ctype) => {
346 | var Type = ["movie_1", "movie_2", "movie_3", "pic_1", "pic_2", "pic_3", "pic_1_full", "pic_1_center", "pic_1_card", "pic_2_card", "pic_3_square", "card_pic_1", "card_pic_2", "card_pic_3", "card_pic_3_center"];
347 | if (getItem(host + 'type')) {
348 | var index = Type.indexOf(getItem(host +ctype+ 'type'));
349 | Type[index] = '👉' + getItem(host +ctype+ 'type');
350 | }
351 | showSelectOptions({
352 | title: "选择样式",
353 | col: 2,
354 | options: Type,
355 | js: $.toString((host,ctype) => {
356 | setItem(host +ctype+ 'type', input.replace('👉', ''));
357 | refreshPage();
358 | }, host,ctype)
359 | });
360 | return "hiker://empty";
361 | }, host,ctype),
362 | }, {
363 | title: '书架',
364 | js: `'hiker://page/Main.view?rule=本地资源管理'`,
365 | }, {
366 | title: '首页',
367 | js: $.toString((host) => {
368 | host = host;
369 | putMyVar(host + 'page', '1');
370 | refreshPage(false);
371 | return 'hiker://empty';
372 | }, host),
373 | }, {
374 | title: '当前第' + page + '页',
375 | js: '',
376 | }, {
377 | title: '跳转',
378 | js: $.toString((host) => {
379 | return $('').input((host) => {
380 | putMyVar(host + 'page', input);
381 | refreshPage(false);
382 | }, host);
383 | }, host),
384 | }, ]
385 | };
386 | return extra;
387 | }
388 | function searchMain(page, d, desc) {
389 | if (page == 1) {
390 | d.push({
391 | title: '🔍',
392 | url: $.toString((r) => {
393 | putVar('keyword', input);
394 | return 'hiker://search?rule=' + r + '&s=' + input;
395 | }, MY_RULE.title),
396 | desc: desc ? desc : '搜你想要的...',
397 | col_type: 'input',
398 | extra: {
399 | defaultValue: getVar('keyword', ''),
400 | }
401 | });
402 | }
403 | return d;
404 | }
405 | function classTop(index, data, host, d,mode,v,c,f) {
406 | if(!v){
407 | v=0;
408 | }
409 | if(!c){
410 | c='c';
411 | }if(!f){
412 | f='scroll_button';
413 | }else{f='flex_button'}
414 | var c_title = data.title.split('&');
415 | if (data.id == '') {
416 | var c_id = c_title;
417 | } else if (data.id == '@@@') {
418 | var c_id = data.title.replace(/^.*?&/,'&').split('&');
419 |
420 | }else{
421 | var c_id = data.id.split('&');
422 | }
423 | c_title.forEach((title, index_c, data) => {
424 | d.push({
425 | title: index_c == getMyVar(host +c+ 'index' + index, (mode||index == v ? '0' : '-1')) ? strong(title, 'FF6699') : title,
426 | col_type: f,
427 | url: $('#noLoading#').lazyRule((index, id, index_c, host,mode,title,v,c) => {
428 | if(mode){
429 | putMyVar(host + c + index, id);
430 |
431 | }else{
432 | putMyVar(host + c , id);
433 | for (let n = v; n <= 20; n++) {
434 | putMyVar(host +c+ 'index' + n, '-1');
435 | }}
436 | clearMyVar(host + 'page');
437 | clearMyVar(host+'url');
438 | putMyVar(host +c+ 'index' + index, index_c);
439 | refreshPage(false);
440 | return 'hiker://empty';
441 | }, index, c_id[index_c], index_c, host,mode,title,v,c),
442 | });
443 | });
444 | d.push({
445 | col_type: 'blank_block',
446 | });
447 | return d;
448 | }
449 | $.toString(()=>{
450 |
451 | });
452 |
453 |
454 |
455 | function downPic() {
456 | var s=`if (list.length != 0) {
457 | d.push({
458 | title: '⬇️下载⬇️',
459 | desc: '',
460 | url: 'hiker://page/download.view?rule=本地资源管理',
461 | extra: {
462 | chapterList: chapterList,
463 | info: {
464 | bookName: host.split('/')[2],
465 | ruleName: 'photo',
466 | bookTopPic: 'https://api.xinac.net/icon/?url=' + host,
467 | parseCode: downloadlazy,
468 | defaultView: '1',
469 | },
470 | }
471 | });
472 | }`;
473 | return s;
474 | }
475 | function dtfl() {
476 | var dt = `
477 | const empty = 'hiker://empty'
478 | addListener('onClose', $.toString((host) => {
479 | clearMyVar(host+'url');
480 | clearMyVar(host+'t');
481 | },host));
482 | try {
483 | var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类));
484 | } catch (e) {
485 | var categories = pdfa(html, 大类定位);
486 | }
487 | let init_cate = [];
488 | for (let i = 0; i < 20; i++) {
489 | init_cate.push('0');
490 | }
491 | const fold = getMyVar('fold', '1');
492 | const cate_temp_json = getMyVar(host+'t', JSON.stringify(init_cate));
493 | const cate_temp = JSON.parse(cate_temp_json);
494 | if (parseInt(MY_PAGE) === 1) {
495 | d.push({
496 | title: fold === '1' ? strong('∨', 'FF0000') : strong('∧', '1aad19'),
497 | url: $('#noLoading#').lazyRule((fold) => {
498 | putMyVar('fold', fold === '1' ? '0' : '1');
499 | refreshPage(false);
500 | return 'hiker://empty'
501 | }, fold),
502 | col_type: 'scroll_button',
503 | });
504 | /*d.push({
505 | title: '🗑️',
506 | url: $('#noLoading#').lazyRule((fold,host) => {
507 | clearMyVar(host+'url');
508 | clearMyVar(host+'t');
509 | refreshPage();
510 | return 'hiker://empty';
511 | },fold,host ),
512 | col_type: 'scroll_button',
513 | });*/
514 | categories.forEach((category, index) => {
515 | if (index === 0) {
516 | if (typeof(小类定位_主) != 'undefined') {
517 | var sub_categories = pdfa(category, 小类定位_主);
518 | } else {
519 | var sub_categories = pdfa(category, 小类定位);
520 | }
521 | } else {
522 | var sub_categories = pdfa(category, 小类定位);
523 | }
524 | if (index === 0) {
525 | sub_categories.forEach((item, key) => {
526 | let title = pdfh(item, 分类标题);
527 | d.push({
528 | title: key.toString() == cate_temp[index] ? ss(title, 分类颜色) : ss(title,666666),
529 | url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params,host) => {
530 | let new_cate = [];
531 | params.cate_temp.forEach((cate, index) => {
532 | new_cate.push(index === 0 ? params.key.toString() : '0');
533 | })
534 | putMyVar(host+'t', JSON.stringify(new_cate));
535 | putMyVar(host+'url', input);
536 | refreshPage(true);
537 | return 'hiker://empty';
538 | }, {
539 | cate_temp: cate_temp,
540 | key: key,
541 | page: MY_PAGE,
542 | },host),
543 | col_type: 'scroll_button',
544 | });
545 | });
546 | d.push({
547 | col_type: 'blank_block'
548 | });
549 | } else if (fold === '1') {
550 | sub_categories.forEach((item, key) => {
551 | let title = pdfh(item, 分类标题);
552 | d.push({
553 | title: key.toString() == cate_temp[index] ? ss(title, 分类颜色) : ss(title,666666),
554 | url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params,host) => {
555 | params.cate_temp[params.index] = params.key.toString();
556 | putMyVar(host+'t', JSON.stringify(params.cate_temp));
557 | putMyVar(host+'url', input);
558 | refreshPage(true);
559 | return 'hiker://empty';
560 | }, {
561 | cate_temp: cate_temp,
562 | index: index,
563 | key: key,
564 | page: MY_PAGE,
565 | },host),
566 | col_type: 'scroll_button',
567 | });
568 | });
569 | d.push({
570 | col_type: 'blank_block'
571 | });
572 | }
573 | });
574 | }`;
575 | return dt;
576 | }
577 | function gfs(size) {
578 | if (!size)
579 | return 0;
580 | var num = 1024.00; //byte
581 | if (size < num)
582 | return size + "B";
583 | if (size < Math.pow(num, 2))
584 | return (size / num).toFixed(2) + "K"; //kb
585 | if (size < Math.pow(num, 3))
586 | return (size / Math.pow(num, 2)).toFixed(2) + "M"; //M
587 | if (size < Math.pow(num, 4))
588 | return (size / Math.pow(num, 3)).toFixed(2) + "G"; //G
589 | return (size / Math.pow(num, 4)).toFixed(2) + "T"; //T
590 | }
591 | function mline(n) {
592 | var a = `
593 | for (var k = 1; k <= ${n}; k++) {
594 | d.push({
595 | col_type: 'line',
596 | });
597 | }`;
598 | return a;
599 | }function mblank(n) {
600 | var a = `
601 | for (var k = 1; k <= ${n}; k++) {
602 | d.push({
603 | col_type: 'big_big_blank_block',
604 | });
605 | }`;
606 | return a;
607 | }
608 | function cm(s, n) {
609 | if (n == 3) {
610 | if(s.length==1){
611 | s= '00' + s;
612 | }else if(s.length==2){
613 | s= '0' + s;
614 | }
615 | }
616 | if (n == 2) {
617 | s = s.length == 2 ? s:'0' + s;
618 | }
619 | return s;
620 | }
621 | function ct(num) {
622 | num = parseInt(num);
623 | if (num >= 10000) {
624 | return (num / 10000).toFixed(1) + 'w';
625 | } else {
626 | return num;
627 | }
628 | }
629 | function rulePage(type, page) {
630 | return $("hiker://empty#noRecordHistory##noHistory#" + (page ? "?page=fypage" : "")).rule((type) => {
631 | require('https://gitcode.net/src48597962/hk/-/raw/d6231c661b38513ddbe64d1712669b0db4b2a9b3/SrcJuPublic.js');
632 | getYiData(type);
633 | }, type);
634 | }
635 | function rp(data) {
636 | var m = [],
637 | n = [];
638 |
639 | function x(a, b) {
640 | var a;
641 | var b;
642 | m.push(a);
643 | n.push(b);
644 | }
645 | x(/菗/gi, "抽");
646 | x(/嗕/gi, "辱");
647 | x(/蓅/gi, "流");
648 | x(/茭/gi, "交");
649 | x(/zhang/gi, "胀");
650 | x(/chun2/gi, "唇");
651 | x(/chun/gi, "春");
652 | x(/chuang/gi, "床");
653 | x(/chuan/gi, "喘");
654 | x(/chou/gi, "抽");
655 | x(/chi/gi, "耻");
656 | x(/chao/gi, "潮");
657 | x(/chan/gi, "缠");
658 | x(/cha/gi, "插");
659 | x(/yu/gi, "欲");
660 | x(/yù/gi, "欲");
661 | x(/you/gi, "诱");
662 | x(/ying/gi, "迎");
663 | x(/yin3/gi, "吟");
664 | x(/yin2/gi, "淫");
665 | x(/yin/gi, "阴");
666 | x(/yīn/gi, "阴");
667 | x(/ye/gi, "液");
668 | x(/yao/gi, "腰");
669 | x(/yang2/gi, "痒");
670 | x(/yang/gi, "阳");
671 | x(/yan/gi, "艳");
672 | x(/ya/gi, "压");
673 | x(/xue/gi, "穴");
674 | x(/xiong/gi, "胸");
675 | x(/xing/gi, "性");
676 | x(/xìng/gi, "性");
677 | x(/xie2/gi, "邪");
678 | x(/xie/gi, "泄");
679 | x(/xi/gi, "吸");
680 | x(/wei/gi, "慰");
681 | x(/tuo/gi, "脱");
682 | x(/tun2/gi, "臀");
683 | x(/tun/gi, "吞");
684 | x(/ting/gi, "挺");
685 | x(/tian/gi, "舔");
686 | x(/shun/gi, "吮");
687 | x(/shuang/gi, "爽");
688 | x(/shu/gi, "熟");
689 | x(/shi/gi, "湿");
690 | x(/she/gi, "射");
691 | x(/se/gi, "色");
692 | x(/sè/gi, "色");
693 | x(/sao/gi, "骚");
694 | x(/sai/gi, "塞");
695 | x(/rui/gi, "蕊");
696 | x(/ru2/gi, "蠕");
697 | x(/ru/gi, "乳");
698 | x(/rou2/gi, "揉");
699 | x(/rou/gi, "肉");
700 | x(/ri/gi, "日");
701 | x(/qiang/gi, "枪");
702 | x(/qi2/gi, "妻");
703 | x(/qi/gi, "骑");
704 | x(/pi/gi, "屁");
705 | x(/pen/gi, "喷");
706 | x(/nue/gi, "虐");
707 | x(/nong/gi, "弄");
708 | x(/niao/gi, "尿");
709 | x(/nen/gi, "嫩");
710 | x(/nai/gi, "奶");
711 | x(/min/gi, "敏");
712 | x(/mi2/gi, "迷");
713 | x(/mi/gi, "蜜");
714 | x(/mao/gi, "毛");
715 | x(/man/gi, "满");
716 | x(/luo/gi, "裸");
717 | x(/luan/gi, "乱");
718 | x(/lu/gi, "撸");
719 | x(/lou/gi, "露");
720 | x(/liu/gi, "流");
721 | x(/liao/gi, "撩");
722 | x(/lang/gi, "浪");
723 | x(/kua/gi, "胯");
724 | x(/ku/gi, "裤");
725 | x(/jing/gi, "精");
726 | x(/jin/gi, "禁");
727 | x(/jiao/gi, "交");
728 | x(/jian2/gi, "奸");
729 | x(/jiān/gi, "奸");
730 | x(/jian/gi, "贱");
731 | x(/ji3/gi, "妓");
732 | x(/ji2/gi, "鸡");
733 | x(/ji/gi, "激");
734 | x(/jī/gi, "激");
735 | x(/huan/gi, "欢");
736 | x(/gun/gi, "棍");
737 | x(/gui/gi, "龟");
738 | x(/gong/gi, "宫");
739 | x(/gen/gi, "根");
740 | x(/gao2/gi, "睪");
741 | x(/gao/gi, "搞");
742 | x(/gang/gi, "肛");
743 | x(/gan/gi, "感");
744 | x(/fu/gi, "阜");
745 | x(/feng/gi, "缝");
746 | x(/dong2/gi, "胴");
747 | x(/dong/gi, "洞");
748 | x(/diao/gi, "屌");
749 | x(/dang2/gi, "党");
750 | x(/dang/gi, "荡");
751 | x(/dàng/gi, "荡");
752 | x(/cuo/gi, "搓");
753 | x(/cu/gi, "粗");
754 | x(/cao2/gi, "肏");
755 | x(/cao/gi, "操");
756 | x(/bo/gi, "勃");
757 | x(/bō/gi, "波");
758 | x(/bi2/gi, "屄");
759 | x(/bi/gi, "逼");
760 | x(/bao/gi, "饱");
761 | x(/bang/gi, "棒");
762 | x(/ai/gi, "爱");
763 | x(/[MMmm]\.[88].+[MMmm]/g, "");
764 | x(/[wwWW]{3}\.[Gg].+?[SSss]\...[MMmm]/g, "");
765 | x(/(
){2,}/g, "
");
766 | data = data.replace(//g, '$1');
767 | data = data.replace(/
/g, '$1');
768 | data = data.replace(/
/g, '$1');
769 | for (var i in m) {
770 | data = data.replace(m[i], n[i]);
771 | }
772 | data=data.replace(/ {1,}/g,' ');
773 | return data;
774 | }
775 | function ver() {
776 | return ;
777 | }
778 | function gra(arr, num) {
779 | var sData = arr.slice(0);
780 | var i = arr.length;
781 | var min = i - num;
782 | var item, index;
783 | while (i-- > min) {
784 | index = Math.floor((i + 1) * Math.random());
785 | item = sData[index];
786 | sData[index] = sData[i];
787 | sData[i] = item;
788 | }
789 | return sData.slice(min);
790 | }
791 | function imgDec(key,iv,a,b){
792 | if(!b){
793 | b='PKCS5Padding';
794 | }
795 | var sss = `
796 | function imgDecrypt() {
797 | var javaImport = new JavaImporter();
798 | javaImport.importPackage(
799 | Packages.com.example.hikerview.utils,
800 | Packages.java.lang,
801 | Packages.java.security,
802 | Packages.java.util,
803 | Packages.java.io,
804 | Packages.java.text,
805 | Packages.javax.crypto,
806 | Packages.javax.crypto.spec,
807 | );
808 | with(javaImport) {
809 | let bytes = FileUtil.toBytes(input);
810 | function decryptData(bArr) {
811 | if(/B@/.test("${key}")){
812 | var secretKeySpec = new SecretKeySpec(String("${key}"), "${a}");
813 | var ivParameterSpec = new IvParameterSpec(String("${iv}"));
814 | }else{
815 | var secretKeySpec = new SecretKeySpec(String("${key}").getBytes(), "${a}");
816 | var ivParameterSpec = new IvParameterSpec(String("${iv}").getBytes());
817 | }
818 | var cipher = Cipher.getInstance("${a}"+"/CBC/"+"${b}");
819 | cipher.init(2, secretKeySpec, ivParameterSpec);
820 | return cipher.doFinal(bArr);
821 | }
822 | bytes = decryptData(bytes);
823 | return FileUtil.toInputStream(bytes);
824 | }
825 | }
826 | `;
827 | putVar('sss', sss);
828 | var imgdec = $.toString(() => {
829 | eval(getVar('sss'));
830 | return imgDecrypt();
831 | });
832 | putVar('imgdec', imgdec);
833 | return imgdec;
834 | }
835 |
836 | function toerji(item,sname,stype) {
837 | let info = storage0.getMyVar('主页源信息');
838 | let extra = item.extra || {};
839 | extra.name = extra.name || extra.pageTitle || item.title;
840 | extra.img = extra.img || item.pic_url || item.img;
841 | extra.stype = extra.stype||stype||'漫画';
842 | extra.pageTitle = extra.pageTitle || extra.name;
843 | if (item.url && !/js:|select:|\(|\)|=>|@/.test(item.url)) {
844 | extra.surl = item.url.replace(/hiker:\/\/empty|#immersiveTheme#|#autoCache#|#noRecordHistory#|#noHistory#|#noLoading#|#/g, "");
845 | extra.sname = sname;
846 | }
847 | if ((item.col_type != "scroll_button") || item.extra) {
848 | item.extra = extra;
849 | }
850 | item.url = (extra.surl || !item.url) ? $('hiker://empty#immersiveTheme##autoCache#').rule(() => {
851 | require(config.依赖);
852 | erji();
853 | }) : item.url
854 | return item;
855 | }
856 | function en(key, iv, data, mode, encoding) {
857 | eval(getCryptoJS());
858 | if (!mode) mode = 'AES/ECB/PKCS7Padding';
859 | var s0 = mode.split('/')[0];
860 | var s1 = mode.split('/')[1];
861 | var s2 = mode.split('/')[2];
862 | s2 = s2.replace(/Padding/, '').replace(/KCS/, 'kcs');
863 | key = CryptoJS.enc.Utf8.parse(key);
864 | if (iv) iv = CryptoJS.enc.Utf8.parse(iv);
865 |
866 | function En() {
867 | if (iv) {
868 | var encrypted = CryptoJS[s0].encrypt(data, key, {
869 | iv: iv,
870 | mode: CryptoJS.mode[s1],
871 | padding: CryptoJS.pad[s2]
872 | });
873 | } else {
874 | var encrypted = CryptoJS[s0].encrypt(data, key, {
875 | mode: CryptoJS.mode[s1],
876 | padding: CryptoJS.pad[s2]
877 | });
878 | }
879 | if (!encoding) {
880 | return encrypted.toString();
881 | } else {
882 | return encrypted.toString(CryptoJS.enc.Base64);
883 | }
884 | };
885 | return En(data, encoding);
886 | }
887 |
888 | function de(key, iv, data, mode, encoding) {
889 | eval(getCryptoJS());
890 | if (!mode) mode = 'AES/ECB/PKCS7Padding';
891 | var s0 = mode.split('/')[0];
892 | var s1 = mode.split('/')[1];
893 | var s2 = mode.split('/')[2];
894 | s2 = s2.replace(/Padding/, '').replace(/KCS/, 'kcs');
895 | key = CryptoJS.enc.Utf8.parse(key);
896 | if (iv) iv = CryptoJS.enc.Utf8.parse(iv);
897 |
898 | function De() {
899 | if (iv) {
900 | var decrypted = CryptoJS[s0].decrypt(data, key, {
901 | iv: iv,
902 | mode: CryptoJS.mode[s1],
903 | padding: CryptoJS.pad[s2]
904 | });
905 | } else {
906 | var decrypted = CryptoJS[s0].decrypt(data, key, {
907 | mode: CryptoJS.mode[s1],
908 | padding: CryptoJS.pad[s2]
909 | });
910 | }
911 | if (!encoding) {
912 | return decrypted.toString(CryptoJS.enc.Utf8);
913 | } else {
914 | return decrypted.toString(CryptoJS.enc.Base64);
915 | }
916 | };
917 | return De(data, encoding);
918 | }
919 |
920 | function im() {
921 | return '#immersiveTheme##autoCache#';
922 | }
923 |
924 | function urla(u,host) {
925 | if (u.indexOf("http") < 0) {
926 | if (u.substr(0, 2) != '//') {
927 | if (u.substr(0, 1) != '/') u = host + '/' + u;
928 | else u = host + u;
929 | } else {
930 | u = 'https:' + u;
931 | }
932 | }
933 | return encodeURI(u);
934 | }
935 |
936 | function rn(c) {
937 | return c.replace(/\[.+?]|丨|~|\//g, '|')
938 | .replace(/\(.+?\)/g, '')
939 | .replace(/第.+?(章|话) ?-?/g, '|')
940 | .replace(/\| {1,}| {1,}\|/g, '|')
941 | .replace(/(\|){1,}/g, '|')
942 | .replace(/[\[\?!]]/g, '')
943 | .replace(/^\||\|$/g, '');
944 | }
945 | function r(c) {
946 | return c.replace(/(/g, '(').replace(/)/g, ')').replace(/|/g, '|').replace(/?/g, '?').replace(/!/g, '!');
947 | }
948 | function colorCode(d) {
949 | var str = Array.from(d.toString().replace('#', ''));
950 | if (str.length != 6) {
951 | return false;
952 | } else {
953 | for (var k in str) {
954 | if (!((str[k] >= '0' && str[k] <= '9') || (str[k] >= 'a' && str[k] <= 'f') || (str[k] >= 'A' && str[k] <= 'F'))) {
955 | return false;
956 | }
957 | }
958 | return true;
959 | }
960 | }
961 | function ss(d, c) {if (colorCode(d) && !colorCode(c)) {
962 | var tmp = d;
963 | d = c;
964 | c = tmp;
965 | }
966 | return '‘‘’’' + d + '';
967 | }
968 | function ssR(d, c) {if (colorCode(d) && !colorCode(c)) {
969 | var tmp = d;
970 | d = c;
971 | c = tmp;
972 | }
973 | return '' + d + '';
974 | }
975 |
976 | function sb(d, c) {if (colorCode(d) && !colorCode(c)) {
977 | var tmp = d;
978 | d = c;
979 | c = tmp;
980 | }
981 | return '‘‘’’' + d + '';
982 | }
983 |
984 | function sbR(d, c) {if (colorCode(d) && !colorCode(c)) {
985 | var tmp = d;
986 | d = c;
987 | c = tmp;
988 | }
989 | return '' + d + '';
990 | }
991 |
992 | function color(d, c) {if (colorCode(d) && !colorCode(c)) {
993 | var tmp = d;
994 | d = c;
995 | c = tmp;
996 | }
997 | return '‘‘’’' + d + '';
998 | }
999 |
1000 | function colorR(d, c) {if (colorCode(d) && !colorCode(c)) {
1001 | var tmp = d;
1002 | d = c;
1003 | c = tmp;
1004 | }
1005 | return '' + d + '';
1006 | }
1007 |
1008 | function small(d, c) {if (colorCode(d) && !colorCode(c)) {
1009 | var tmp = d;
1010 | d = c;
1011 | c = tmp;
1012 | }
1013 | return '‘‘’’' + d + '';
1014 | }
1015 |
1016 | function smallR(d, c) {if (colorCode(d) && !colorCode(c)) {
1017 | var tmp = d;
1018 | d = c;
1019 | c = tmp;
1020 | }
1021 | return '' + d + '';
1022 | }
1023 |
1024 | function big(d, c) {if (colorCode(d) && !colorCode(c)) {
1025 | var tmp = d;
1026 | d = c;
1027 | c = tmp;
1028 | }
1029 | return '‘‘’’' + d + '';
1030 | }
1031 |
1032 | function bigR(d, c) {if (colorCode(d) && !colorCode(c)) {
1033 | var tmp = d;
1034 | d = c;
1035 | c = tmp;
1036 | }
1037 | return '' + d + '';
1038 | }
1039 |
1040 | function strong(d, c) {
1041 | if (colorCode(d) && !colorCode(c)) {
1042 | var tmp = d;
1043 | d = c;
1044 | c = tmp;
1045 | }
1046 | return '‘‘’’' + d + '';
1047 | }
1048 |
1049 | function strongR(d, c) {if (colorCode(d) && !colorCode(c)) {
1050 | var tmp = d;
1051 | d = c;
1052 | c = tmp;
1053 | }
1054 | return '' + d + '';
1055 | }
1056 |
1057 | function jp(d) {
1058 | return JSON.parse(fetch('hiker://page/' + d + '?rule=' + MY_RULE.title)).rule;
1059 | }
1060 |
1061 | function e(d) {
1062 | var s = JSON.parse(fetch('hiker://page/' + d + '?rule=' + MY_RULE.title)).rule;
1063 | return eval(s);
1064 | }
1065 |
1066 | function fy(s) {
1067 | var strT = [];
1068 | var urls = [];
1069 |
1070 | for (var list of s) {
1071 | list = list.split(' ').slice(0, 9);
1072 | var strTmp = '';
1073 | for (var k in list) {
1074 | var s = strTmp + ' ' + list[k];
1075 | if (s.length > 45) {
1076 | break
1077 | }else{
1078 | strTmp=strTmp + ' ' + list[k];
1079 | }
1080 | }
1081 | urls.push({
1082 | url: 'https://www.iciba.com/_next/data/Oo2lhUMf85DZ7OJMbFn8g/word.json?w=' + strTmp,
1083 | options: {
1084 | headers: {
1085 | 'User-Agent': PC_UA,
1086 | }
1087 | }
1088 | })
1089 | }
1090 | var strs = bf(urls);
1091 | strs.forEach((item, index) => {
1092 | if (/"translate_result"/.test(item)) {
1093 | var str = item.match(/"translate_result":"(.*?)"/)[1];
1094 | } else {
1095 | var str = s[index];
1096 | }
1097 | strT.push(str);
1098 | });
1099 | return strT;
1100 | }
1101 |
1102 | function sp(cc) {
1103 | var str = '',
1104 | ss = JTPYStr(),
1105 | tt = FTPYStr();
1106 | for (var i = 0; i < cc.length; i++) {
1107 | if (cc.charCodeAt(i) > 10000 && tt.indexOf(cc.charAt(i)) != -1) str += ss.charAt(tt.indexOf(cc.charAt(i)));
1108 | else str += cc.charAt(i);
1109 | }
1110 | return str;
1111 | }
1112 |
1113 | function tr(cc) {
1114 | var str = '',
1115 | ss = JTPYStr(),
1116 | tt = FTPYStr();
1117 | for (var i = 0; i < cc.length; i++) {
1118 | if (cc.charCodeAt(i) > 10000 && ss.indexOf(cc.charAt(i)) != -1) str += tt.charAt(ss.indexOf(cc.charAt(i)));
1119 | else str += cc.charAt(i);
1120 | }
1121 | return str;
1122 | }
1123 |
1124 | function JTPYStr() {
1125 | return '欲泛签奸恶你侄占译发绝铺系苏雇回仆里锕皑蔼碍爱嗳嫒瑷暧霭谙铵鹌肮袄奥媪骜鳌坝罢钯摆败呗颁办绊钣帮绑镑谤剥饱宝报鲍鸨龅辈贝钡狈备惫鹎贲锛绷笔毕毙币闭荜哔滗铋筚跸边编贬变辩辫苄缏笾标骠飑飙镖镳鳔鳖别瘪濒滨宾摈傧缤槟殡膑镔髌鬓饼禀拨钵铂驳饽钹鹁补钸财参蚕残惭惨灿骖黪苍舱仓沧厕侧册测恻层诧锸侪钗搀掺蝉馋谗缠铲产阐颤冁谄谶蒇忏婵骣觇禅镡场尝长偿肠厂畅伥苌怅阊鲳钞车彻砗尘陈衬伧谌榇碜龀撑称惩诚骋枨柽铖铛痴迟驰耻齿炽饬鸱冲冲虫宠铳畴踌筹绸俦帱雠橱厨锄雏础储触处刍绌蹰传钏疮闯创怆锤缍纯鹑绰辍龊辞词赐鹚聪葱囱从丛苁骢枞凑辏蹿窜撺错锉鹾达哒鞑带贷骀绐担单郸掸胆惮诞弹殚赕瘅箪当挡党荡档谠砀裆捣岛祷导盗焘灯邓镫敌涤递缔籴诋谛绨觌镝颠点垫电巅钿癫钓调铫鲷谍叠鲽钉顶锭订铤丢铥东动栋冻岽鸫窦犊独读赌镀渎椟牍笃黩锻断缎簖兑队对怼镦吨顿钝炖趸夺堕铎鹅额讹恶饿谔垩阏轭锇锷鹗颚颛鳄诶儿尔饵贰迩铒鸸鲕发罚阀珐矾钒烦贩饭访纺钫鲂飞诽废费绯镄鲱纷坟奋愤粪偾丰枫锋风疯冯缝讽凤沣肤辐抚辅赋复负讣妇缚凫驸绂绋赙麸鲋鳆钆该钙盖赅杆赶秆赣尴擀绀冈刚钢纲岗戆镐睾诰缟锆搁鸽阁铬个纥镉颍给亘赓绠鲠龚宫巩贡钩沟苟构购够诟缑觏蛊顾诂毂钴锢鸪鹄鹘剐挂鸹掴关观馆惯贯诖掼鹳鳏广犷规归龟闺轨诡贵刽匦刿妫桧鲑鳜辊滚衮绲鲧锅国过埚呙帼椁蝈铪骇韩汉阚绗颉号灏颢阂鹤贺诃阖蛎横轰鸿红黉讧荭闳鲎壶护沪户浒鹕哗华画划话骅桦铧怀坏欢环还缓换唤痪焕涣奂缳锾鲩黄谎鳇挥辉毁贿秽会烩汇讳诲绘诙荟哕浍缋珲晖荤浑诨馄阍获货祸钬镬击机积饥迹讥鸡绩缉极辑级挤几蓟剂济计记际继纪讦诘荠叽哜骥玑觊齑矶羁虿跻霁鲚鲫夹荚颊贾钾价驾郏浃铗镓蛲歼监坚笺间艰缄茧检碱硷拣捡简俭减荐槛鉴践贱见键舰剑饯渐溅涧谏缣戋戬睑鹣笕鲣鞯将浆蒋桨奖讲酱绛缰胶浇骄娇搅铰矫侥脚饺缴绞轿较挢峤鹪鲛阶节洁结诫届疖颌鲒紧锦仅谨进晋烬尽劲荆茎卺荩馑缙赆觐鲸惊经颈静镜径痉竞净刭泾迳弪胫靓纠厩旧阄鸠鹫驹举据锯惧剧讵屦榉飓钜锔窭龃鹃绢锩镌隽觉决绝谲珏钧军骏皲开凯剀垲忾恺铠锴龛闶钪铐颗壳课骒缂轲钶锞颔垦恳龈铿抠库裤喾块侩郐哙脍宽狯髋矿旷况诓诳邝圹纩贶亏岿窥馈溃匮蒉愦聩篑阃锟鲲扩阔蛴蜡腊莱来赖崃徕涞濑赉睐铼癞籁蓝栏拦篮阑兰澜谰揽览懒缆烂滥岚榄斓镧褴琅阆锒捞劳涝唠崂铑铹痨乐鳓镭垒类泪诔缧篱狸离鲤礼丽厉励砾历沥隶俪郦坜苈莅蓠呖逦骊缡枥栎轹砺锂鹂疠粝跞雳鲡鳢俩联莲连镰怜涟帘敛脸链恋炼练蔹奁潋琏殓裢裣鲢粮凉两辆谅魉疗辽镣缭钌鹩猎临邻鳞凛赁蔺廪檩辚躏龄铃灵岭领绫棂蛏鲮馏刘浏骝绺镏鹨龙聋咙笼垄拢陇茏泷珑栊胧砻楼娄搂篓偻蒌喽嵝镂瘘耧蝼髅芦卢颅庐炉掳卤虏鲁赂禄录陆垆撸噜闾泸渌栌橹轳辂辘氇胪鸬鹭舻鲈峦挛孪滦乱脔娈栾鸾銮抡轮伦仑沦纶论囵萝罗逻锣箩骡骆络荦猡泺椤脶镙驴吕铝侣屡缕虑滤绿榈褛锊呒妈玛码蚂马骂吗唛嬷杩买麦卖迈脉劢瞒馒蛮满谩缦镘颡鳗猫锚铆贸麽没镁门闷们扪焖懑钔锰梦眯谜弥觅幂芈谧猕祢绵缅渑腼黾庙缈缪灭悯闽闵缗鸣铭谬谟蓦馍殁镆谋亩钼呐钠纳难挠脑恼闹铙讷馁内拟腻铌鲵撵辇鲶酿鸟茑袅聂啮镊镍陧蘖嗫颟蹑柠狞宁拧泞苎咛聍钮纽脓浓农侬哝驽钕诺傩疟欧鸥殴呕沤讴怄瓯盘蹒庞抛疱赔辔喷鹏纰罴铍骗谝骈飘缥频贫嫔苹凭评泼颇钋扑铺朴谱镤镨栖脐齐骑岂启气弃讫蕲骐绮桤碛颀颃鳍牵钎铅迁签谦钱钳潜浅谴堑佥荨悭骞缱椠钤枪呛墙蔷强抢嫱樯戗炝锖锵镪羟跄锹桥乔侨翘窍诮谯荞缲硗跷窃惬锲箧钦亲寝锓轻氢倾顷请庆揿鲭琼穷茕蛱巯赇虮鳅趋区躯驱龋诎岖阒觑鸲颧权劝诠绻辁铨却鹊确阕阙悫让饶扰绕荛娆桡热韧认纫饪轫荣绒嵘蝾缛铷颦软锐蚬闰润洒萨飒鳃赛伞毵糁丧骚扫缫涩啬铯穑杀刹纱铩鲨筛晒酾删闪陕赡缮讪姗骟钐鳝墒伤赏垧殇觞烧绍赊摄慑设厍滠畲绅审婶肾渗诜谂渖声绳胜师狮湿诗时蚀实识驶势适释饰视试谥埘莳弑轼贳铈鲥寿兽绶枢输书赎属术树竖数摅纾帅闩双谁税顺说硕烁铄丝饲厮驷缌锶鸶耸怂颂讼诵擞薮馊飕锼苏诉肃谡稣虽随绥岁谇孙损笋荪狲缩琐锁唢睃獭挞闼铊鳎台态钛鲐摊贪瘫滩坛谭谈叹昙钽锬顸汤烫傥饧铴镗涛绦讨韬铽腾誊锑题体屉缇鹈阗条粜龆鲦贴铁厅听烃铜统恸头钭秃图钍团抟颓蜕饨脱鸵驮驼椭箨鼍袜娲腽弯湾顽万纨绾网辋韦违围为潍维苇伟伪纬谓卫诿帏闱沩涠玮韪炜鲔温闻纹稳问阌瓮挝蜗涡窝卧莴龌呜钨乌诬无芜吴坞雾务误邬庑怃妩骛鹉鹜锡牺袭习铣戏细饩阋玺觋虾辖峡侠狭厦吓硖鲜纤贤衔闲显险现献县馅羡宪线苋莶藓岘猃娴鹇痫蚝籼跹厢镶乡详响项芗饷骧缃飨萧嚣销晓啸哓潇骁绡枭箫协挟携胁谐写泻谢亵撷绁缬锌衅兴陉荥凶汹锈绣馐鸺虚嘘须许叙绪续诩顼轩悬选癣绚谖铉镟学谑泶鳕勋询寻驯训讯逊埙浔鲟压鸦鸭哑亚讶垭娅桠氩阉烟盐严岩颜阎艳厌砚彦谚验厣赝俨兖谳恹闫酽魇餍鼹鸯杨扬疡阳痒养样炀瑶摇尧遥窑谣药轺鹞鳐爷页业叶靥谒邺晔烨医铱颐遗仪蚁艺亿忆义诣议谊译异绎诒呓峄饴怿驿缢轶贻钇镒镱瘗舣荫阴银饮隐铟瘾樱婴鹰应缨莹萤营荧蝇赢颖茔莺萦蓥撄嘤滢潆璎鹦瘿颏罂哟拥佣痈踊咏镛优忧邮铀犹诱莸铕鱿舆鱼渔娱与屿语狱誉预驭伛俣谀谕蓣嵛饫阈妪纡觎欤钰鹆鹬龉鸳渊辕园员圆缘远橼鸢鼋约跃钥粤悦阅钺郧匀陨运蕴酝晕韵郓芸恽愠纭韫殒氲杂灾载攒暂赞瓒趱錾赃脏驵凿枣责择则泽赜啧帻箦贼谮赠综缯轧铡闸栅诈斋债毡盏斩辗崭栈战绽谵张涨帐账胀赵诏钊蛰辙锗这谪辄鹧贞针侦诊镇阵浈缜桢轸赈祯鸩挣睁狰争帧症郑证诤峥钲铮筝织职执纸挚掷帜质滞骘栉栀轵轾贽鸷蛳絷踬踯觯钟终种肿众锺诌轴皱昼骤纣绉猪诸诛烛瞩嘱贮铸驻伫槠铢专砖转赚啭馔颞桩庄装妆壮状锥赘坠缀骓缒谆准着浊诼镯兹资渍谘缁辎赀眦锱龇鲻踪总纵偬邹诹驺鲰诅组镞钻缵躜鳟翱并卜沉丑淀迭斗范干皋硅柜后伙秸杰诀夸里凌么霉捻凄扦圣尸抬涂洼喂污锨咸蝎彝涌游吁御愿岳云灶扎札筑于志注凋讠谫郄勐凼坂垅垴埯埝苘荬荮莜莼菰藁揸吒吣咔咝咴噘噼嚯幞岙嵴彷徼犸狍馀馇馓馕愣憷懔丬溆滟混漤潴澹甯纟绔绱珉枧桊桉槔橥轱轷赍肷胨飚煳煅熘愍淼砜磙眍钚钷铘铞锃锍锎';
1126 | }
1127 |
1128 | function FTPYStr() {
1129 | return '慾氾籤姦噁妳姪佔訳発絶舖係甦僱迴僕裡錒皚藹礙愛噯嬡璦曖靄諳銨鵪骯襖奧媼驁鰲壩罷鈀擺敗唄頒辦絆鈑幫綁鎊謗剝飽寶報鮑鴇齙輩貝鋇狽備憊鵯賁錛繃筆畢斃幣閉蓽嗶潷鉍篳蹕邊編貶變辯辮芐緶籩標驃颮飆鏢鑣鰾鱉別癟瀕濱賓擯儐繽檳殯臏鑌髕鬢餅稟撥缽鉑駁餑鈸鵓補鈽財參蠶殘慚慘燦驂黲蒼艙倉滄廁側冊測惻層詫鍤儕釵攙摻蟬饞讒纏鏟產闡顫囅諂讖蕆懺嬋驏覘禪鐔場嘗長償腸廠暢倀萇悵閶鯧鈔車徹硨塵陳襯傖諶櫬磣齔撐稱懲誠騁棖檉鋮鐺癡遲馳恥齒熾飭鴟沖衝蟲寵銃疇躊籌綢儔幬讎櫥廚鋤雛礎儲觸處芻絀躕傳釧瘡闖創愴錘綞純鶉綽輟齪辭詞賜鶿聰蔥囪從叢蓯驄樅湊輳躥竄攛錯銼鹺達噠韃帶貸駘紿擔單鄲撣膽憚誕彈殫賧癉簞當擋黨蕩檔讜碭襠搗島禱導盜燾燈鄧鐙敵滌遞締糴詆諦綈覿鏑顛點墊電巔鈿癲釣調銚鯛諜疊鰈釘頂錠訂鋌丟銩東動棟凍崠鶇竇犢獨讀賭鍍瀆櫝牘篤黷鍛斷緞籪兌隊對懟鐓噸頓鈍燉躉奪墮鐸鵝額訛惡餓諤堊閼軛鋨鍔鶚顎顓鱷誒兒爾餌貳邇鉺鴯鮞發罰閥琺礬釩煩販飯訪紡鈁魴飛誹廢費緋鐨鯡紛墳奮憤糞僨豐楓鋒風瘋馮縫諷鳳灃膚輻撫輔賦復負訃婦縛鳧駙紱紼賻麩鮒鰒釓該鈣蓋賅桿趕稈贛尷搟紺岡剛鋼綱崗戇鎬睪誥縞鋯擱鴿閣鉻個紇鎘潁給亙賡綆鯁龔宮鞏貢鉤溝茍構購夠詬緱覯蠱顧詁轂鈷錮鴣鵠鶻剮掛鴰摑關觀館慣貫詿摜鸛鰥廣獷規歸龜閨軌詭貴劊匭劌媯檜鮭鱖輥滾袞緄鯀鍋國過堝咼幗槨蟈鉿駭韓漢闞絎頡號灝顥閡鶴賀訶闔蠣橫轟鴻紅黌訌葒閎鱟壺護滬戶滸鶘嘩華畫劃話驊樺鏵懷壞歡環還緩換喚瘓煥渙奐繯鍰鯇黃謊鰉揮輝毀賄穢會燴匯諱誨繪詼薈噦澮繢琿暉葷渾諢餛閽獲貨禍鈥鑊擊機積饑跡譏雞績緝極輯級擠幾薊劑濟計記際繼紀訐詰薺嘰嚌驥璣覬齏磯羈蠆躋霽鱭鯽夾莢頰賈鉀價駕郟浹鋏鎵蟯殲監堅箋間艱緘繭檢堿鹼揀撿簡儉減薦檻鑒踐賤見鍵艦劍餞漸濺澗諫縑戔戩瞼鶼筧鰹韉將漿蔣槳獎講醬絳韁膠澆驕嬌攪鉸矯僥腳餃繳絞轎較撟嶠鷦鮫階節潔結誡屆癤頜鮚緊錦僅謹進晉燼盡勁荊莖巹藎饉縉贐覲鯨驚經頸靜鏡徑痙競凈剄涇逕弳脛靚糾廄舊鬮鳩鷲駒舉據鋸懼劇詎屨櫸颶鉅鋦窶齟鵑絹錈鐫雋覺決絕譎玨鈞軍駿皸開凱剴塏愾愷鎧鍇龕閌鈧銬顆殼課騍緙軻鈳錁頷墾懇齦鏗摳庫褲嚳塊儈鄶噲膾寬獪髖礦曠況誆誑鄺壙纊貺虧巋窺饋潰匱蕢憒聵簣閫錕鯤擴闊蠐蠟臘萊來賴崍徠淶瀨賚睞錸癩籟藍欄攔籃闌蘭瀾讕攬覽懶纜爛濫嵐欖斕鑭襤瑯閬鋃撈勞澇嘮嶗銠鐒癆樂鰳鐳壘類淚誄縲籬貍離鯉禮麗厲勵礫歷瀝隸儷酈壢藶蒞蘺嚦邐驪縭櫪櫟轢礪鋰鸝癘糲躒靂鱺鱧倆聯蓮連鐮憐漣簾斂臉鏈戀煉練蘞奩瀲璉殮褳襝鰱糧涼兩輛諒魎療遼鐐繚釕鷯獵臨鄰鱗凜賃藺廩檁轔躪齡鈴靈嶺領綾欞蟶鯪餾劉瀏騮綹鎦鷚龍聾嚨籠壟攏隴蘢瀧瓏櫳朧礱樓婁摟簍僂蔞嘍嶁鏤瘺耬螻髏蘆盧顱廬爐擄鹵虜魯賂祿錄陸壚擼嚕閭瀘淥櫨櫓轤輅轆氌臚鸕鷺艫鱸巒攣孿灤亂臠孌欒鸞鑾掄輪倫侖淪綸論圇蘿羅邏鑼籮騾駱絡犖玀濼欏腡鏍驢呂鋁侶屢縷慮濾綠櫚褸鋝嘸媽瑪碼螞馬罵嗎嘜嬤榪買麥賣邁脈勱瞞饅蠻滿謾縵鏝顙鰻貓錨鉚貿麼沒鎂門悶們捫燜懣鍆錳夢瞇謎彌覓冪羋謐獼禰綿緬澠靦黽廟緲繆滅憫閩閔緡鳴銘謬謨驀饃歿鏌謀畝鉬吶鈉納難撓腦惱鬧鐃訥餒內擬膩鈮鯢攆輦鯰釀鳥蔦裊聶嚙鑷鎳隉蘗囁顢躡檸獰寧擰濘苧嚀聹鈕紐膿濃農儂噥駑釹諾儺瘧歐鷗毆嘔漚謳慪甌盤蹣龐拋皰賠轡噴鵬紕羆鈹騙諞駢飄縹頻貧嬪蘋憑評潑頗釙撲鋪樸譜鏷鐠棲臍齊騎豈啟氣棄訖蘄騏綺榿磧頎頏鰭牽釬鉛遷簽謙錢鉗潛淺譴塹僉蕁慳騫繾槧鈐槍嗆墻薔強搶嬙檣戧熗錆鏘鏹羥蹌鍬橋喬僑翹竅誚譙蕎繰磽蹺竊愜鍥篋欽親寢鋟輕氫傾頃請慶撳鯖瓊窮煢蛺巰賕蟣鰍趨區軀驅齲詘嶇闃覷鴝顴權勸詮綣輇銓卻鵲確闋闕愨讓饒擾繞蕘嬈橈熱韌認紉飪軔榮絨嶸蠑縟銣顰軟銳蜆閏潤灑薩颯鰓賽傘毿糝喪騷掃繅澀嗇銫穡殺剎紗鎩鯊篩曬釃刪閃陜贍繕訕姍騸釤鱔墑傷賞坰殤觴燒紹賒攝懾設厙灄畬紳審嬸腎滲詵諗瀋聲繩勝師獅濕詩時蝕實識駛勢適釋飾視試謚塒蒔弒軾貰鈰鰣壽獸綬樞輸書贖屬術樹豎數攄紓帥閂雙誰稅順說碩爍鑠絲飼廝駟緦鍶鷥聳慫頌訟誦擻藪餿颼鎪蘇訴肅謖穌雖隨綏歲誶孫損筍蓀猻縮瑣鎖嗩脧獺撻闥鉈鰨臺態鈦鮐攤貪癱灘壇譚談嘆曇鉭錟頇湯燙儻餳鐋鏜濤絳討韜鋱騰謄銻題體屜緹鵜闐條糶齠鰷貼鐵廳聽烴銅統慟頭鈄禿圖釷團摶頹蛻飩脫鴕馱駝橢籜鼉襪媧膃彎灣頑萬紈綰網輞韋違圍為濰維葦偉偽緯謂衛諉幃闈溈潿瑋韙煒鮪溫聞紋穩問閿甕撾蝸渦窩臥萵齷嗚鎢烏誣無蕪吳塢霧務誤鄔廡憮嫵騖鵡鶩錫犧襲習銑戲細餼鬩璽覡蝦轄峽俠狹廈嚇硤鮮纖賢銜閑顯險現獻縣餡羨憲線莧薟蘚峴獫嫻鷴癇蠔秈躚廂鑲鄉詳響項薌餉驤緗饗蕭囂銷曉嘯嘵瀟驍綃梟簫協挾攜脅諧寫瀉謝褻擷紲纈鋅釁興陘滎兇洶銹繡饈鵂虛噓須許敘緒續詡頊軒懸選癬絢諼鉉鏇學謔澩鱈勛詢尋馴訓訊遜塤潯鱘壓鴉鴨啞亞訝埡婭椏氬閹煙鹽嚴巖顏閻艷厭硯彥諺驗厴贗儼兗讞懨閆釅魘饜鼴鴦楊揚瘍陽癢養樣煬瑤搖堯遙窯謠藥軺鷂鰩爺頁業葉靨謁鄴曄燁醫銥頤遺儀蟻藝億憶義詣議誼譯異繹詒囈嶧飴懌驛縊軼貽釔鎰鐿瘞艤蔭陰銀飲隱銦癮櫻嬰鷹應纓瑩螢營熒蠅贏穎塋鶯縈鎣攖嚶瀅瀠瓔鸚癭頦罌喲擁傭癰踴詠鏞優憂郵鈾猶誘蕕銪魷輿魚漁娛與嶼語獄譽預馭傴俁諛諭蕷崳飫閾嫗紆覦歟鈺鵒鷸齬鴛淵轅園員圓緣遠櫞鳶黿約躍鑰粵悅閱鉞鄖勻隕運蘊醞暈韻鄆蕓惲慍紜韞殞氳雜災載攢暫贊瓚趲鏨贓臟駔鑿棗責擇則澤賾嘖幘簀賊譖贈綜繒軋鍘閘柵詐齋債氈盞斬輾嶄棧戰綻譫張漲帳賬脹趙詔釗蟄轍鍺這謫輒鷓貞針偵診鎮陣湞縝楨軫賑禎鴆掙睜猙爭幀癥鄭證諍崢鉦錚箏織職執紙摯擲幟質滯騭櫛梔軹輊贄鷙螄縶躓躑觶鐘終種腫眾鍾謅軸皺晝驟紂縐豬諸誅燭矚囑貯鑄駐佇櫧銖專磚轉賺囀饌顳樁莊裝妝壯狀錐贅墜綴騅縋諄準著濁諑鐲茲資漬諮緇輜貲眥錙齜鯔蹤總縱傯鄒諏騶鯫詛組鏃鉆纘躦鱒翺並蔔沈醜澱叠鬥範幹臯矽櫃後夥稭傑訣誇裏淩麽黴撚淒扡聖屍擡塗窪餵汙鍁鹹蠍彜湧遊籲禦願嶽雲竈紮劄築於誌註雕訁譾郤猛氹阪壟堖垵墊檾蕒葤蓧蒓菇槁摣咤唚哢噝噅撅劈謔襆嶴脊仿僥獁麅餘餷饊饢楞怵懍爿漵灩溷濫瀦淡寧糸絝緔瑉梘棬案橰櫫軲軤賫膁腖飈糊煆溜湣渺碸滾瞘鈈鉕鋣銱鋥鋶鐦';
1130 | }
1131 | function data_xchina() {
1132 | var data = `var cvideo = [
1133 | [{
1134 | name: '全部成人影片',
1135 | url: domain + '/videos/1.html'
1136 | }],
1137 | [{
1138 | name: '中文AV(7643)',
1139 | url: domain + '/videos/series-63824a975d8ae/1.html'
1140 | }, {
1141 | name: '麻豆传媒(2765)',
1142 | url: domain + '/videos/series-5f904550b8fcc/1.html'
1143 | }, {
1144 | name: '天美传媒(682)',
1145 | url: domain + '/videos/series-60153c49058ce/1.html'
1146 | }, {
1147 | name: '果冻传媒(545)',
1148 | url: domain + '/videos/series-5fe840718d665/1.html'
1149 | }, {
1150 | name: '精东影业(473)',
1151 | url: domain + '/videos/series-60126bcfb97fa/1.html'
1152 | }, {
1153 | name: '糖心Vlog(481)',
1154 | url: domain + '/videos/series-61014080dbfde/1.html'
1155 | }, {
1156 | name: '星空传媒(431)',
1157 | url: domain + '/videos/series-6054e93356ded/1.html'
1158 | }, {
1159 | name: '杏吧原版(250)',
1160 | url: domain + '/videos/series-6072997559b46/1.html'
1161 | }, {
1162 | name: '性视界(258)',
1163 | url: domain + '/videos/series-63490362dac45/1.html'
1164 | }, {
1165 | name: '扣扣传媒(189)',
1166 | url: domain + '/videos/series-6230974ada989/1.html'
1167 | },{
1168 | name: '萝莉社(154)',
1169 | url: domain + '/videos/series-5fe8403919165/1.html'
1170 | }, {
1171 | name: 'OnlyFans(118)',
1172 | url: domain + '/videos/series-61bf6e439fed6/1.html'
1173 | }, {
1174 | name: 'SA国际传媒(116)',
1175 | url: domain + '/videos/series-6360ca9706ecb/1.html'
1176 | },{
1177 | name: '爱豆传媒(112)',
1178 | url: domain + '/videos/series-63d134c7a0a15/1.html'
1179 | }, {
1180 | name: '葫芦影业(47)',
1181 | url: domain + '/videos/series-6193d27975579/1.html'
1182 | }, {
1183 | name: 'EDMosaic(41)',
1184 | url: domain + '/videos/series-63732f5c3d36b/1.html'
1185 | }, {
1186 | name: '其他中文AV(65)',
1187 | url: domain + '/videos/series-63986aec205d8/1.html'
1188 | }, {
1189 | name: '乐播传媒(34)',
1190 | url: domain + '/videos/series-60589daa8ff97/1.html'
1191 | }, {
1192 | name: '乌托邦(43)',
1193 | url: domain + '/videos/series-637750ae0ee71/1.html'
1194 | }, {
1195 | name: '91茄子(28)',
1196 | url: domain + '/videos/series-639c8d983b7d5/1.html'
1197 | }, {
1198 | name: '爱神传媒(22)',
1199 | url: domain + '/videos/series-6405b6842705b/1.html'
1200 | }, {
1201 | name: '抖阴(18)',
1202 | url: domain + '/videos/series-6248705dab604/1.html'
1203 | }, {
1204 | name: '起点传媒(14)',
1205 | url: domain + '/videos/series-639377d93a682/1.html'
1206 | }, {
1207 | name: '哔哩传媒(14)',
1208 | url: domain + '/videos/series-64458e7da05e6/1.html'
1209 | }, {
1210 | name: '大象传媒(13)',
1211 | url: domain + '/videos/series-60c2555958858/1.html'
1212 | }, {
1213 | name: '乌鸦传媒(11)',
1214 | url: domain + '/videos/series-601fdc25ab544/1.html'
1215 | }, {
1216 | name: 'MisAV(10)',
1217 | url: domain + '/videos/series-62263c03a735c/1.html'
1218 | }, {
1219 | name: '映秀传媒(10)',
1220 | url: domain + '/videos/series-6447fc202ffdf/1.html'
1221 | }, {
1222 | name: 'TWAV(8)',
1223 | url: domain + '/videos/series-62263c03a735c/1.html'
1224 | }, {
1225 | name: 'mini传媒(7)',
1226 | url: domain + '/videos/series-60da356dc166c/1.html'
1227 | }, {
1228 | name: '西瓜影视(6)',
1229 | url: domain + '/videos/series-648e1071386ef/1.html'
1230 | },{
1231 | name: 'CCAV(5)',
1232 | url: domain + '/videos/series-61b88a26d1e61/1.html'
1233 | }, {
1234 | name: '开心鬼传媒(4)',
1235 | url: domain + '/videos/series-609e4c6e7a174/1.html'
1236 | }],
1237 | [{
1238 | name: '模特私拍(916)',
1239 | url: domain + '/videos/series-5fe8403919165/1.html'
1240 | }, {
1241 | name: '其他模特私拍(374)',
1242 | url: domain + '/videos/series-63963534a9e49/1.html'
1243 | }, {
1244 | name: 'PANS视频(454)',
1245 | url: domain + '/videos/series-63963186ae145/1.html'
1246 | }, {
1247 | name: '果哥作品(49)',
1248 | url: domain + '/videos/series-6396315ed2e49/1.html'
1249 | }, {
1250 | name: '相约中国(24)',
1251 | url: domain + '/videos/series-63ed0f22e9177/1.html'
1252 | }, {
1253 | name: '风吟鸟唱作品(13)',
1254 | url: domain + '/videos/series-6396319e6b823/1.html'
1255 | }],
1256 | [{
1257 | name: '业余拍摄(646)',
1258 | url: domain + '/videos/series-617d3e7acdcc8/1.html'
1259 | }, {
1260 | name: '探花现场(584)',
1261 | url: domain + '/videos/series-63965bf7b7f51/1.html'
1262 | }, {
1263 | name: '主播现场(74)',
1264 | url: domain + '/videos/series-63965bd5335fc/1.html'
1265 | }],
1266 | [{
1267 | name: '日本AV(1419)',
1268 | url: domain + '/videos/series-6206216719462/1.html'
1269 | }, {
1270 | name: '有码AV(994)',
1271 | url: domain + '/videos/series-6395aba3deb74/1.html'
1272 | }, {
1273 | name: '无码AV(425)',
1274 | url: domain + '/videos/series-6395ab7fee104/1.html'
1275 | }],
1276 | [{
1277 | name: '其他影片(214)',
1278 | url: domain + '/videos/series-60192e83c9e05/1.html'
1279 | }, {
1280 | name: '其他亚洲影片(140)',
1281 | url: domain + '/videos/series-63963ea949a82/1.html'
1282 | }, {
1283 | name: '门事件(53)',
1284 | url: domain + '/videos/series-63963de3f2a0f/1.html'
1285 | }, {
1286 | name: '其他欧美影片(13)',
1287 | url: domain + '/videos/series-6396404e6bdb5/1.html'
1288 | }],
1289 | [{
1290 | name: '情色电影(104)',
1291 | url: domain + '/videos/series-61c4d9b653b6d/1.html'
1292 | }, {
1293 | name: '华语电影(52)',
1294 | url: domain + '/videos/series-6396492fdb1a0/1.html'
1295 | }, {
1296 | name: '日韩电影(51)',
1297 | url: domain + '/videos/series-6396494584b57/1.html'
1298 | }]
1299 | ];
1300 | var sort_data = [{
1301 | name: '更新时间',
1302 | url: ''
1303 | }, {
1304 | name: '观看最多',
1305 | url: '/sort-read'
1306 | }, {
1307 | name: '评论最多',
1308 | url: '/sort-comment'
1309 | }, {
1310 | name: '最近评论',
1311 | url: '/sort-recent'
1312 | },{
1313 | name: '时长最长',
1314 | url: '/sort-length'
1315 | }];
1316 | var cphoto = [
1317 | [{
1318 | name: '专辑',
1319 | url: ''
1320 | }, {
1321 | name: '秀人网尺度主题',
1322 | url: domain + '/photos/album-1/1.html'
1323 | }, {
1324 | name: '大尺度主题',
1325 | url: domain + '/photos/album-2/1.html'
1326 | }, {
1327 | name: '秀性爱主题',
1328 | url: domain + '/photos/album-3/1.html'
1329 | }, {
1330 | name: '露出主题',
1331 | url: domain + '/photos/album-4/1.html'
1332 | }, {
1333 | name: 'Cosplay主题',
1334 | url: domain + '/photos/album-5/1.html'
1335 | }, {
1336 | name: '道具主题',
1337 | url: domain + '/photos/album-6/1.html'
1338 | }, {
1339 | name: '捆绑主题',
1340 | url: domain + '/photos/album-7/1.html'
1341 | }, {
1342 | name: '白虎主题',
1343 | url: domain + '/photos/album-8/1.html'
1344 | }, {
1345 | name: '女同主题',
1346 | url: domain + '/photos/album-9/1.html'
1347 | }, ],
1348 | [{
1349 | name: '人体摄影分类',
1350 | url: ''
1351 | }, {
1352 | name: '全部人体摄影(4862)',
1353 | url: domain + '/photos/kind-2/1.html'
1354 | }, {
1355 | name: '未分类人体摄影(2811)',
1356 | url: domain + '/photos/series-618e4909ea9b6/1.html'
1357 | }, {
1358 | name: '丽图100(434)',
1359 | url: domain + '/photos/series-5f1d784995865/1.html'
1360 | }, {
1361 | name: 'AI图区(38)',
1362 | url: domain + '/photos/series-6443d480eb757/1.html'
1363 | }, {
1364 | name: '摄影师作品(287)',
1365 | url: domain + '/photos/series-6395a1e929f23/1.html'
1366 | }, {
1367 | name: 'CHOKmoson脱神(33)',
1368 | url: domain + '/photos/series-63c7ccc347a68/1.html'
1369 | }, {
1370 | name: '王动作品(32)',
1371 | url: domain + '/photos/series-5f26a5c1d39e9/1.html'
1372 | }, {
1373 | name: '风吟鸟唱(31)',
1374 | url: domain + '/photos/series-63b54e804a694/1.html'
1375 | }, {
1376 | name: '宇航员(13)',
1377 | url: domain + '/photos/series-63b548623b10d/1.html'
1378 | }, {
1379 | name: '唐兴(9)',
1380 | url: domain + '/photos/series-63bdcc1007f87/1.html'
1381 | }, {
1382 | name: 'TIANWEN(鳼岛)(8)',
1383 | url: domain + '/photos/series-63bdcbdb38f2a/1.html'
1384 | }, {
1385 | name: 'L.P.VISION(6)',
1386 | url: domain + '/photos/series-63b14e571521d/1.html'
1387 | }, {
1388 | name: '轰趴猫(265)',
1389 | url: domain + '/photos/series-5f1ae6caae922/1.html'
1390 | }, {
1391 | name: 'PANS新版(431)',
1392 | url: domain + '/photos/series-6310ce9b90056/1.html'
1393 | }, {
1394 | name: '相约中国(233)',
1395 | url: domain + '/photos/series-5f1dcdeaee582/1.html'
1396 | }, {
1397 | name: '潘多拉(192)',
1398 | url: domain + '/photos/series-5f23c44cd66bd/1.html'
1399 | }, {
1400 | name: '韩国模特养成(106)',
1401 | url: domain + '/photos/series-5f1d345bf2a1d/1.html'
1402 | }, {
1403 | name: '潘多拉(189)',
1404 | url: domain + '/photos/series-5f23c44cd66bd/1.html'
1405 | }, {
1406 | name: '推女郎(90)',
1407 | url: domain + '/photos/series-5f14a5eb5b0d7/1.html'
1408 | }, {
1409 | name: '无忌影社(92)',
1410 | url: domain + '/photos/series-619a92aa1fa7a/1.html'
1411 | }, {
1412 | name: 'JVID(75)',
1413 | url: domain + '/photos/series-637b2029d2347/1.html'
1414 | }, {
1415 | name: '深夜企划(44)',
1416 | url: domain + '/photos/series-638e5a60b1770/1.html'
1417 | }, {
1418 | name: '北京天使(41)',
1419 | url: domain + '/photos/series-622c7f95220a4/1.html'
1420 | }, {
1421 | name: 'A4U(34)',
1422 | url: domain + '/photos/series-5f60b98248a81/1.html'
1423 | }, {
1424 | name: 'DDY(28)',
1425 | url: domain + '/photos/series-5f15f727df393/1.html'
1426 | }, {
1427 | name: '东莞V女郎(26)',
1428 | url: domain + '/photos/series-5f22ea422221c/1.html'
1429 | }, {
1430 | name: 'FantasyFactory(28)',
1431 | url: domain + '/photos/series-5f889afb37619/1.html'
1432 | }, {
1433 | name: 'ISS系列(25)',
1434 | url: domain + '/photos/series-646c69b675f3d/1.html'
1435 | }, {
1436 | name: 'TPimage(23)',
1437 | url: domain + '/photos/series-5f7a0a80d3d66/1.html'
1438 | }, {
1439 | name: 'SK丝库(21)',
1440 | url: domain + '/photos/series-5f382ba894af4/1.html'
1441 | }, {
1442 | name: 'Loozy(18)',
1443 | url: domain + '/photos/series-62888afad416b/1.html'
1444 | }, {
1445 | name: '美尤网(15)',
1446 | url: domain + '/photos/series-5f23c8a10708a/1.html'
1447 | }, {
1448 | name: 'SuperPoseBook(25)',
1449 | url: domain + '/photos/series-62a0a15911f16/1.html'
1450 | }, {
1451 | name: 'HT95(11)',
1452 | url: domain + '/photos/series-5f382ba894af4/1.html'
1453 | }, {
1454 | name: 'Graphis(9)',
1455 | url: domain + '/photos/series-6450b47c9db0b/1.html'
1456 | }, {
1457 | name: '伊甸园写真(7)',
1458 | url: domain + '/photos/series-63cf9666a9239/1.html'
1459 | }],
1460 | [{
1461 | name: '性感写真分类',
1462 | url: ''
1463 | }, {
1464 | name: '全部性感写真()',
1465 | url: domain + '/photos/kind-1/1.html'
1466 | }, {
1467 | name: '秀人网旗下(10329)',
1468 | url: domain + '/photos/series-63959b9c87149/1.html'
1469 | }, {
1470 | name: '秀人网(6604)',
1471 | url: domain + '/photos/series-5f1476781eab4/1.html'
1472 | }, {
1473 | name: '蜜桃传媒(971)',
1474 | url: domain + '/photos/series-5fe8403919165/1.html'
1475 | }, {
1476 | name: '爱蜜社(674)',
1477 | url: domain + '/photos/series-5f71afc92d8ab/1.html'
1478 | }, {
1479 | name: '模范学院(560)',
1480 | url: domain + '/photos/series-5f181625966a6/1.html'
1481 | }, {
1482 | name: '花漾(510)',
1483 | url: domain + '/photos/series-5fc4ce40386af/1.html'
1484 | }, {
1485 | name: '美媛馆(504)',
1486 | url: domain + '/photos/series-5f1495dbda4de/1.html'
1487 | }, {
1488 | name: '语画界(504)',
1489 | url: domain + '/photos/series-601ef80997845/1.html'
1490 | }, {
1491 | name: '尤蜜荟(299)',
1492 | url: domain + '/photos/series-5f184ff551888/1.html'
1493 | }, {
1494 | name: '蜜桃社(149)',
1495 | url: domain + '/photos/series-5f1dd5a7ebe9a/1.html'
1496 | }, {
1497 | name: '瑞丝馆(88)',
1498 | url: domain + '/photos/series-61263de287e2f/1.html'
1499 | }, {
1500 | name: 'FEILIN嗲囡囡(88)',
1501 | url: domain + '/photos/series-5f14a3105d3e8/1.html'
1502 | }, {
1503 | name: '爱尤物(77)',
1504 | url: domain + '/photos/series-5f148046cb2c7/1.html'
1505 | }, {
1506 | name: '尤物馆(175)',
1507 | url: domain + '/photos/series-60673bec9dd11/1.html'
1508 | }, {
1509 | name: '星颜社(61)',
1510 | url: domain + '/photos/series-6141c88882a36/1.html'
1511 | }, {
1512 | name: '影私荟(22)',
1513 | url: domain + '/photos/series-63d435352808c/1.html'
1514 | }, {
1515 | name: '魅妍社(3)',
1516 | url: domain + '/photos/series-60f4691dd2f2d/1.html'
1517 | }, {
1518 | name: '模特联盟(3)',
1519 | url: domain + '/photos/series-6218cfb82b6cd/1.html'
1520 | }, {
1521 | name: '未分类性感写真(453)',
1522 | url: domain + '/photos/series-618e48e381edf/1.html'
1523 | }, {
1524 | name: 'ArtGravia(144)',
1525 | url: domain + '/photos/series-60a4a953ca563/1.html'
1526 | }, {
1527 | name: '爱丝(132)',
1528 | url: domain + '/photos/series-5f15f389e993e/1.html'
1529 | }, {
1530 | name: '果团网(132)',
1531 | url: domain + '/photos/series-5f1817b42772b/1.html'
1532 | }, {
1533 | name: 'PANS写真(115)',
1534 | url: domain + '/photos/series-5f1482b3a68d6/1.html'
1535 | }, {
1536 | name: '妖精社(99)',
1537 | url: domain + '/photos/series-5f4b5f4eb8b71/1.html'
1538 | }, {
1539 | name: '蜜丝(73)',
1540 | url: domain + '/photos/series-5f2089564c6c2/1.html'
1541 | }, {
1542 | name: '头条女神(53)',
1543 | url: domain + '/photos/series-5f14806585bef/1.html'
1544 | }, {
1545 | name: 'Pure Media(55)',
1546 | url: domain + '/photos/series-6224e755e21f4/1.html'
1547 | }, {
1548 | name: '尤美(39)',
1549 | url: domain + '/photos/series-61b997728043b/1.html'
1550 | }, {
1551 | name: 'SLADY猎女神(20)',
1552 | url: domain + '/photos/series-605ed5233ca57/1.html'
1553 | }, {
1554 | name: '推女神(11)',
1555 | url: domain + '/photos/series-5f20324cad61d/1.html'
1556 | }]
1557 | ];
1558 | var cfiction = [{
1559 | name: '全部小说(15511)',
1560 | url: domain + '/fictions/1.html'
1561 | }, {
1562 | name: '编辑推荐(3591)',
1563 | url: domain + '/fictions/tag-编辑推荐/1.html'
1564 | }, {
1565 | name: '人妻女友(4688)',
1566 | url: domain + '/fictions/tag-%e4%ba%ba%e5%a6%bb女友/1.html'
1567 | }, {
1568 | name: '学生校园(1400)',
1569 | url: domain + '/fictions/tag-学生校园/1.html'
1570 | }, {
1571 | name: '伴侣交换(237)',
1572 | url: domain + '/fictions/tag-伴侣交换/1.html'
1573 | }, {
1574 | name: '都市生活(3232)',
1575 | url: domain + '/fictions/tag-都市生活/1.html'
1576 | }, {
1577 | name: '动漫游戏(72)',
1578 | url: domain + '/fictions/tag-动漫游戏/1.html'
1579 | }, {
1580 | name: '名人明星(86)',
1581 | url: domain + '/fictions/tag-名人明星/1.html'
1582 | }, {
1583 | name: '经验故事(536)',
1584 | url: domain + '/fictions/tag-经验故事/1.html'
1585 | }, {
1586 | name: '古典玄幻(1052)',
1587 | url: domain + '/fictions/tag-古典玄幻/1.html'
1588 | }, {
1589 | name: '家庭乱伦(3903)',
1590 | url: domain + '/fictions/tag-家庭%e4%b9%b1%e4%bc%a6/1.html'
1591 | }, {
1592 | name: '多人群交(1733)',
1593 | url: domain + '/fictions/tag-多人群交/1.html'
1594 | }, {
1595 | name: '公司职场(977)',
1596 | url: domain + '/fictions/tag-公司职场/1.html'
1597 | }, {
1598 | name: '露出暴露(265)',
1599 | url: domain + '/fictions/tag-露出暴露/1.html'
1600 | }, {
1601 | name: '强暴性虐(1505))',
1602 | url: domain + '/fictions/tag-强暴性虐/1.html'
1603 | }, {
1604 | name: '西方主题(139)',
1605 | url: domain + '/fictions/tag-西方主题/1.html'
1606 | }, {
1607 | name: '同性主题(125)',
1608 | url: domain + '/fictions/tag-同性主题/1.html'
1609 | }, {
1610 | name: '绿帽主题(1261)',
1611 | url: domain + '/fictions/tag-绿帽主题/1.html'
1612 | }, {
1613 | name: '长篇连载(3511)',
1614 | url: domain + '/fictions/tag-长篇连载/1.html'
1615 | }, {
1616 | name: '经典回忆(99)',
1617 | url: domain + '/fictions/tag-经典回忆/1.html'
1618 | }, {
1619 | name: '有声小说(59)',
1620 | url: domain + '/fictions/tag-有声小说/1.html'
1621 | }];
1622 | var sort_fiction = [{
1623 | name: '篇幅不限',
1624 | url: ''
1625 | }, {
1626 | name: '短篇',
1627 | url: '/length-1'
1628 | }, {
1629 | name: '中长篇',
1630 | url: '/length-2'
1631 | }, {
1632 | name: '超长篇',
1633 | url: '/length-3'
1634 | }];
1635 | var cmodel = [{
1636 | name: '全部模特(1660)',
1637 | url: domain + '/models/1.html'
1638 | }, {
1639 | name: '华人模特(1020)',
1640 | url: domain + '/models/type-4/1.html'
1641 | }, {
1642 | name: '韩国模特(64)',
1643 | url: domain + '/models/type-5/1.html'
1644 | }, {
1645 | name: '华人女优(445)',
1646 | url: domain + '/models/type-7/1.html'
1647 | }, {
1648 | name: '日本女优(800)',
1649 | url: domain + '/models/type-8/1.html'
1650 | }, {
1651 | name: '日本男优(157)',
1652 | url: domain + '/models/type-9/1.html'
1653 | }, {
1654 | name: '名人明星(5)',
1655 | url: domain + '/models/type-10/1.html'
1656 | }];
1657 | var sort_model = [{
1658 | name: '浏览最多',
1659 | url: ''
1660 | }, {
1661 | name: '作品最多',
1662 | url: '/sort-works'
1663 | }, {
1664 | name: '最新加入',
1665 | url: '/sort-recently'
1666 | }];
1667 | var ctorrent = [{
1668 | name: '最新资源',
1669 | url: domain + '/torrents/1.html'
1670 | }, {
1671 | name: '视频下载(网盘)',
1672 | url: domain + '/torrents/category-KVideo/1.html'
1673 | }, {
1674 | name: '套图下载(网盘)',
1675 | url: domain + '/torrents/category-KPhoto/1.html'
1676 | }, {
1677 | name: '国产原版(磁链)',
1678 | url: domain + '/torrents/category-U3C3/1.html'
1679 | }, {
1680 | name: '视频下载(磁链)',
1681 | url: domain + '/torrents/category-Video/1.html'
1682 | }, {
1683 | name: '图片下载(磁链)',
1684 | url: domain + '/torrents/category-Photo/1.html'
1685 | }, {
1686 | name: '游戏下载(磁链)',
1687 | url: domain + '/torrents/category-Game/1.html'
1688 | }, {
1689 | name: '图书下载(磁链)',
1690 | url: domain + '/torrents/category-Book/1.html'
1691 | }, {
1692 | name: '其他下载(磁链)',
1693 | url: domain + '/torrents/category-Other/1.html'
1694 | }];
1695 | var sort1_torrent = [{
1696 | name: '新表',
1697 | url: ''
1698 | }, {
1699 | name: '新表',
1700 | url: '/tb-1'
1701 | }];
1702 | var sort2_torrent = [{
1703 | name: '更新时间',
1704 | url: ''
1705 | }, {
1706 | name: '下载最多',
1707 | url: '/sort-read'
1708 | }];`;
1709 | return data;
1710 | }
1711 |
1712 | function data_yituyu() {
1713 | var data=`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`;
1714 |
1715 | return data;
1716 | }
1717 |
--------------------------------------------------------------------------------
/yxip/clashmeta-sub-gitlab-main.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yuanwangokk/subscription/28ab457e49e269654d1bec00d00b9084f0d3f33c/yxip/clashmeta-sub-gitlab-main.zip
--------------------------------------------------------------------------------
/yxip/doc.openwrt.cc.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yuanwangokk/subscription/28ab457e49e269654d1bec00d00b9084f0d3f33c/yxip/doc.openwrt.cc.zip
--------------------------------------------------------------------------------
/yxip/warp-yxip:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | RED="\033[31m"
4 | GREEN="\033[32m"
5 | YELLOW="\033[33m"
6 | PLAIN='\033[0m'
7 |
8 | red() {
9 | echo -e "\033[31m\033[01m$1\033[0m"
10 | }
11 |
12 | green() {
13 | echo -e "\033[32m\033[01m$1\033[0m"
14 | }
15 |
16 | yellow() {
17 | echo -e "\033[33m\033[01m$1\033[0m"
18 | }
19 |
20 | # 选择客户端 CPU 架构
21 | archAffix(){
22 | case "$(uname -m)" in
23 | i386 | i686 ) echo '386' ;;
24 | x86_64 | amd64 ) echo 'amd64' ;;
25 | armv8 | arm64 | aarch64 ) echo 'arm64' ;;
26 | s390x ) echo 's390x' ;;
27 | * ) red "不支持的CPU架构!" && exit 1 ;;
28 | esac
29 | }
30 |
31 | endpointyx(){
32 | # 下载优选工具软件,感谢某匿名网友的分享的优选工具
33 | wget https://gitlab.com/Misaka-blog/warp-script/-/raw/main/files/warp-yxip/warp-linux-$(archAffix) -O warp
34 |
35 | # 取消 Linux 自带的线程限制,以便生成优选 Endpoint IP
36 | ulimit -n 102400
37 |
38 | # 启动 WARP Endpoint IP 优选工具
39 | chmod +x warp && ./warp >/dev/null 2>&1
40 |
41 | # 显示前十个优选 Endpoint IP 及使用方法
42 | green "当前最优 Endpoint IP 结果如下,并已保存至 result.csv中:"
43 | cat result.csv | awk -F, '$3!="timeout ms" {print} ' | sort -t, -nk2 -nk3 | uniq | head -11 | awk -F, '{print "端点 "$1" 丢包率 "$2" 平均延迟 "$3}'
44 | echo ""
45 | yellow "使用方法如下:"
46 | yellow "1. 将 WireGuard 节点的默认的 Endpoint IP:engage.cloudflareclient.com:2408 替换成本地网络最优的 Endpoint IP"
47 |
48 | # 删除 WARP Endpoint IP 优选工具及其附属文件
49 | rm -f warp ip.txt
50 | }
51 |
52 | endpoint4(){
53 | # 生成优选 WARP IPv4 Endpoint IP 段列表
54 | n=0
55 | iplist=100
56 | while true; do
57 | temp[$n]=$(echo 162.159.192.$(($RANDOM % 256)))
58 | n=$(($n + 1))
59 | if [ $n -ge $iplist ]; then
60 | break
61 | fi
62 | temp[$n]=$(echo 162.159.193.$(($RANDOM % 256)))
63 | n=$(($n + 1))
64 | if [ $n -ge $iplist ]; then
65 | break
66 | fi
67 | temp[$n]=$(echo 162.159.195.$(($RANDOM % 256)))
68 | n=$(($n + 1))
69 | if [ $n -ge $iplist ]; then
70 | break
71 | fi
72 | temp[$n]=$(echo 162.159.204.$(($RANDOM % 256)))
73 | n=$(($n + 1))
74 | if [ $n -ge $iplist ]; then
75 | break
76 | fi
77 | temp[$n]=$(echo 188.114.96.$(($RANDOM % 256)))
78 | n=$(($n + 1))
79 | if [ $n -ge $iplist ]; then
80 | break
81 | fi
82 | temp[$n]=$(echo 188.114.97.$(($RANDOM % 256)))
83 | n=$(($n + 1))
84 | if [ $n -ge $iplist ]; then
85 | break
86 | fi
87 | temp[$n]=$(echo 188.114.98.$(($RANDOM % 256)))
88 | n=$(($n + 1))
89 | if [ $n -ge $iplist ]; then
90 | break
91 | fi
92 | temp[$n]=$(echo 188.114.99.$(($RANDOM % 256)))
93 | n=$(($n + 1))
94 | if [ $n -ge $iplist ]; then
95 | break
96 | fi
97 | done
98 | while true; do
99 | if [ $(echo ${temp[@]} | sed -e 's/ /\n/g' | sort -u | wc -l) -ge $iplist ]; then
100 | break
101 | else
102 | temp[$n]=$(echo 162.159.192.$(($RANDOM % 256)))
103 | n=$(($n + 1))
104 | fi
105 | if [ $(echo ${temp[@]} | sed -e 's/ /\n/g' | sort -u | wc -l) -ge $iplist ]; then
106 | break
107 | else
108 | temp[$n]=$(echo 162.159.193.$(($RANDOM % 256)))
109 | n=$(($n + 1))
110 | fi
111 | if [ $(echo ${temp[@]} | sed -e 's/ /\n/g' | sort -u | wc -l) -ge $iplist ]; then
112 | break
113 | else
114 | temp[$n]=$(echo 162.159.195.$(($RANDOM % 256)))
115 | n=$(($n + 1))
116 | fi
117 | if [ $(echo ${temp[@]} | sed -e 's/ /\n/g' | sort -u | wc -l) -ge $iplist ]; then
118 | break
119 | else
120 | temp[$n]=$(echo 162.159.204.$(($RANDOM % 256)))
121 | n=$(($n + 1))
122 | fi
123 | if [ $(echo ${temp[@]} | sed -e 's/ /\n/g' | sort -u | wc -l) -ge $iplist ]; then
124 | break
125 | else
126 | temp[$n]=$(echo 188.114.96.$(($RANDOM % 256)))
127 | n=$(($n + 1))
128 | fi
129 | if [ $(echo ${temp[@]} | sed -e 's/ /\n/g' | sort -u | wc -l) -ge $iplist ]; then
130 | break
131 | else
132 | temp[$n]=$(echo 188.114.97.$(($RANDOM % 256)))
133 | n=$(($n + 1))
134 | fi
135 | if [ $(echo ${temp[@]} | sed -e 's/ /\n/g' | sort -u | wc -l) -ge $iplist ]; then
136 | break
137 | else
138 | temp[$n]=$(echo 188.114.98.$(($RANDOM % 256)))
139 | n=$(($n + 1))
140 | fi
141 | if [ $(echo ${temp[@]} | sed -e 's/ /\n/g' | sort -u | wc -l) -ge $iplist ]; then
142 | break
143 | else
144 | temp[$n]=$(echo 188.114.99.$(($RANDOM % 256)))
145 | n=$(($n + 1))
146 | fi
147 | done
148 |
149 | # 将生成的 IP 段列表放到 ip.txt 里,待程序优选
150 | echo ${temp[@]} | sed -e 's/ /\n/g' | sort -u > ip.txt
151 |
152 | # 启动优选程序
153 | endpointyx
154 | }
155 |
156 | endpoint6(){
157 | # 生成优选 WARP IPv6 Endpoint IP 段列表
158 | n=0
159 | iplist=100
160 | while true; do
161 | temp[$n]=$(echo [2606:4700:d0::$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2))):$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2))):$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2))):$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2)))])
162 | n=$(($n + 1))
163 | if [ $n -ge $iplist ]; then
164 | break
165 | fi
166 | temp[$n]=$(echo [2606:4700:d1::$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2))):$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2))):$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2))):$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2)))])
167 | n=$(($n + 1))
168 | if [ $n -ge $iplist ]; then
169 | break
170 | fi
171 | done
172 | while true; do
173 | if [ $(echo ${temp[@]} | sed -e 's/ /\n/g' | sort -u | wc -l) -ge $iplist ]; then
174 | break
175 | else
176 | temp[$n]=$(echo [2606:4700:d0::$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2))):$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2))):$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2))):$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2)))])
177 | n=$(($n + 1))
178 | fi
179 | if [ $(echo ${temp[@]} | sed -e 's/ /\n/g' | sort -u | wc -l) -ge $iplist ]; then
180 | break
181 | else
182 | temp[$n]=$(echo [2606:4700:d1::$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2))):$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2))):$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2))):$(printf '%x\n' $(($RANDOM * 2 + $RANDOM % 2)))])
183 | n=$(($n + 1))
184 | fi
185 | done
186 |
187 | # 将生成的 IP 段列表放到 ip.txt 里,待程序优选
188 | echo ${temp[@]} | sed -e 's/ /\n/g' | sort -u > ip.txt
189 |
190 | # 启动优选程序
191 | endpointyx
192 | }
193 |
194 | menu(){
195 | clear
196 | echo "#############################################################"
197 | echo -e "# ${RED}WARP Endpoint IP 一键优选脚本${PLAIN} #"
198 | echo -e "# ${GREEN}作者${PLAIN}: MisakaNo の 小破站 #"
199 | echo -e "# ${GREEN}博客${PLAIN}: https://blog.misaka.rest #"
200 | echo -e "# ${GREEN}GitHub 项目${PLAIN}: https://github.com/Misaka-blog #"
201 | echo -e "# ${GREEN}GitLab 项目${PLAIN}: https://gitlab.com/Misaka-blog #"
202 | echo -e "# ${GREEN}Telegram 频道${PLAIN}: https://t.me/misakanocchannel #"
203 | echo -e "# ${GREEN}Telegram 群组${PLAIN}: https://t.me/misakanoc #"
204 | echo -e "# ${GREEN}YouTube 频道${PLAIN}: https://www.youtube.com/@misaka-blog #"
205 | echo "#############################################################"
206 | echo ""
207 | echo -e " ${GREEN}1.${PLAIN} WARP IPv4 Endpoint IP 优选 ${YELLOW}(默认)${PLAIN}"
208 | echo -e " ${GREEN}2.${PLAIN} WARP IPv6 Endpoint IP 优选"
209 | echo " -------------"
210 | echo -e " ${GREEN}0.${PLAIN} 退出脚本"
211 | echo ""
212 | read -rp "请输入选项 [0-2]: " menuInput
213 | case $menuInput in
214 | 2 ) endpoint6 ;;
215 | 0 ) exit 1 ;;
216 | * ) endpoint4 ;;
217 | esac
218 | }
219 |
220 | menu
221 |
--------------------------------------------------------------------------------
/yxip/x-ui.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | red='\033[0;31m'
4 | green='\033[0;32m'
5 | yellow='\033[0;33m'
6 | plain='\033[0m'
7 |
8 | cur_dir=$(pwd)
9 |
10 | # check root
11 | [[ $EUID -ne 0 ]] && echo -e "${red}错误:${plain} 必须使用root用户运行此脚本!\n" && exit 1
12 |
13 | # check os
14 | if [[ -f /etc/redhat-release ]]; then
15 | release="centos"
16 | elif cat /etc/issue | grep -Eqi "debian"; then
17 | release="debian"
18 | elif cat /etc/issue | grep -Eqi "ubuntu"; then
19 | release="ubuntu"
20 | elif cat /etc/issue | grep -Eqi "centos|red hat|redhat"; then
21 | release="centos"
22 | elif cat /proc/version | grep -Eqi "debian"; then
23 | release="debian"
24 | elif cat /proc/version | grep -Eqi "ubuntu"; then
25 | release="ubuntu"
26 | elif cat /proc/version | grep -Eqi "centos|red hat|redhat"; then
27 | release="centos"
28 | else
29 | echo -e "${red}未检测到系统版本,请联系脚本作者!${plain}\n" && exit 1
30 | fi
31 |
32 | arch=$(arch)
33 |
34 | if [[ $arch == "i386" || $arch == "i686" ]]; then
35 | arch="386"
36 | elif [[ $arch == "x86_64" || $arch == "x64" || $arch == "amd64" ]]; then
37 | arch="amd64"
38 | elif [[ $arch == "aarch64" || $arch == "arm64" ]]; then
39 | arch="arm64"
40 | elif [[ $arch == "s390x" ]]; then
41 | arch="s390x"
42 | else
43 | arch="amd64"
44 | echo -e "${red}检测架构失败,使用默认架构: ${arch}${plain}"
45 | fi
46 |
47 | echo "架构: ${arch}"
48 |
49 | if [ $(getconf WORD_BIT) != '32' ] && [ $(getconf LONG_BIT) != '64' ]; then
50 | echo "本软件不支持 32 位系统(x86),请使用 64 位系统(x86_64),如果检测有误,请联系作者"
51 | exit -1
52 | fi
53 |
54 | os_version=""
55 |
56 | # os version
57 | if [[ -f /etc/os-release ]]; then
58 | os_version=$(awk -F'[= ."]' '/VERSION_ID/{print $3}' /etc/os-release)
59 | fi
60 | if [[ -z "$os_version" && -f /etc/lsb-release ]]; then
61 | os_version=$(awk -F'[= ."]+' '/DISTRIB_RELEASE/{print $2}' /etc/lsb-release)
62 | fi
63 |
64 | if [[ x"${release}" == x"centos" ]]; then
65 | if [[ ${os_version} -le 6 ]]; then
66 | echo -e "${red}请使用 CentOS 7 或更高版本的系统!${plain}\n" && exit 1
67 | fi
68 | elif [[ x"${release}" == x"ubuntu" ]]; then
69 | if [[ ${os_version} -lt 16 ]]; then
70 | echo -e "${red}请使用 Ubuntu 16 或更高版本的系统!${plain}\n" && exit 1
71 | fi
72 | elif [[ x"${release}" == x"debian" ]]; then
73 | if [[ ${os_version} -lt 8 ]]; then
74 | echo -e "${red}请使用 Debian 8 或更高版本的系统!${plain}\n" && exit 1
75 | fi
76 | fi
77 |
78 | install_base() {
79 | if [[ x"${release}" == x"centos" ]]; then
80 | yum install wget curl tar -y
81 | else
82 | apt-get update
83 | apt install wget curl tar -y
84 | fi
85 | }
86 |
87 | #This function will be called when user installed x-ui out of sercurity
88 | config_after_install() {
89 | echo -e "${yellow}出于安全考虑,安装/更新完成后需要强制修改端口与账户密码${plain}"
90 | read -p "确认是否继续? [y/n]: " config_confirm
91 | if [[ x"${config_confirm}" == x"y" || x"${config_confirm}" == x"Y" ]]; then
92 | read -p "请设置您的账户名(如未填写则随机8位字符): " config_account
93 | [[ -z $config_account ]] && config_account=$(date +%s%N | md5sum | cut -c 1-8)
94 | echo -e "${yellow}您的账户名将设定为:${config_account}${plain}"
95 | read -p "请设置您的账户密码(如未填写则随机8位字符): " config_password
96 | [[ -z $config_password ]] && config_password=$(date +%s%N | md5sum | cut -c 1-8)
97 | echo -e "${yellow}您的账户密码将设定为:${config_password}${plain}"
98 | read -p "请设置面板访问端口(如未填写则随机端口号): " config_port
99 | [[ -z $config_port ]] && config_port=$(shuf -i 2000-65535 -n 1)
100 | until [[ -z $(ss -ntlp | awk '{print $4}' | sed 's/.*://g' | grep -w "$port") ]]; do
101 | if [[ -n $(ss -ntlp | awk '{print $4}' | sed 's/.*://g' | grep -w "$port") ]]; then
102 | echo -e "${red} $config_port ${plain} 端口已经其他程序占用,请更换面板端口号"
103 | read -p "请设置面板访问端口(如未填写则随机端口号): " config_port
104 | [[ -z $config_port ]] && config_port=$(shuf -i 2000-65535 -n 1)
105 | fi
106 | done
107 | echo -e "${yellow}您的面板访问端口将设定为:${config_port}${plain}"
108 | echo -e "${yellow}确认设定,设定中${plain}"
109 | /usr/local/x-ui/x-ui setting -username ${config_account} -password ${config_password}
110 | echo -e "${yellow}账户密码设定完成${plain}"
111 | /usr/local/x-ui/x-ui setting -port ${config_port}
112 | echo -e "${yellow}面板端口设定完成${plain}"
113 | else
114 | config_port=$(/usr/local/x-ui/x-ui setting -show | sed -n 4p | awk -F ": " '{print $2}')
115 | echo -e "${red}已取消, 所有设置项均为默认设置, 请及时修改${plain}"
116 | fi
117 | }
118 |
119 | install_x-ui() {
120 | systemctl stop x-ui
121 | cd /usr/local/
122 |
123 | if [ $# == 0 ]; then
124 | last_version=$(curl -Ls "https://api.github.com/repos/sing-web/x-ui/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
125 | if [[ ! -n "$last_version" ]]; then
126 | echo -e "${red}检测 x-ui 版本失败,可能是超出 Github API 限制,请稍后再试,或手动指定 x-ui 版本安装${plain}"
127 | exit 1
128 | fi
129 | echo -e "检测到 x-ui 最新版本:${last_version},开始安装"
130 | wget -N --no-check-certificate -O /usr/local/x-ui-linux-${arch}.tar.gz https://github.com/sing-web/x-ui/releases/download/${last_version}/x-ui-linux-${arch}.tar.gz
131 | if [[ $? -ne 0 ]]; then
132 | echo -e "${red}下载 x-ui 失败,请确保你的服务器能够下载 Github 的文件${plain}"
133 | exit 1
134 | fi
135 | else
136 | last_version=$1
137 | url="https://github.com/sing-web/x-ui/releases/download/${last_version}/x-ui-linux-${arch}.tar.gz"
138 | echo -e "开始安装 x-ui $1"
139 | wget -N --no-check-certificate -O /usr/local/x-ui-linux-${arch}.tar.gz ${url}
140 | if [[ $? -ne 0 ]]; then
141 | echo -e "${red}下载 x-ui $1 失败,请确保此版本存在${plain}"
142 | exit 1
143 | fi
144 | fi
145 |
146 | if [[ -e /usr/local/x-ui/ ]]; then
147 | rm /usr/local/x-ui/ -rf
148 | fi
149 |
150 | tar zxvf x-ui-linux-${arch}.tar.gz
151 | rm x-ui-linux-${arch}.tar.gz -f
152 | cd x-ui
153 | chmod +x x-ui bin/xray-linux-${arch}
154 | cp -f x-ui.service /etc/systemd/system/
155 | wget --no-check-certificate -O /usr/bin/x-ui https://raw.githubusercontent.com/sing-web/x-ui/main/x-ui_CN.sh
156 | chmod +x /usr/local/x-ui/x-ui.sh
157 | chmod +x /usr/bin/x-ui
158 | config_after_install
159 | #echo -e "如果是全新安装,默认网页端口为 ${green}54321${plain},用户名和密码默认都是 ${green}admin${plain}"
160 | #echo -e "请自行确保此端口没有被其他程序占用,${yellow}并且确保 54321 端口已放行${plain}"
161 | # echo -e "若想将 54321 修改为其它端口,输入 x-ui 命令进行修改,同样也要确保你修改的端口也是放行的"
162 | #echo -e ""
163 | #echo -e "如果是更新面板,则按你之前的方式访问面板"
164 | #echo -e ""
165 | systemctl daemon-reload
166 | systemctl enable x-ui
167 | systemctl start x-ui
168 |
169 | systemctl stop warp-go >/dev/null 2>&1
170 | wg-quick down wgcf >/dev/null 2>&1
171 | ipv4=$(curl -s4m8 ip.p3terx.com -k | sed -n 1p)
172 | ipv6=$(curl -s6m8 ip.p3terx.com -k | sed -n 1p)
173 | systemctl start warp-go >/dev/null 2>&1
174 | wg-quick up wgcf >/dev/null 2>&1
175 | echo -e "${green}x-ui ${last_version}${plain} 安装完成,面板已启动"
176 | echo -e ""
177 | echo -e "x-ui 管理脚本使用方法: "
178 | echo -e "----------------------------------------------"
179 | echo -e "x-ui - 显示管理菜单 (功能更多)"
180 | echo -e "x-ui start - 启动 x-ui 面板"
181 | echo -e "x-ui stop - 停止 x-ui 面板"
182 | echo -e "x-ui restart - 重启 x-ui 面板"
183 | echo -e "x-ui status - 查看 x-ui 状态"
184 | echo -e "x-ui enable - 设置 x-ui 开机自启"
185 | echo -e "x-ui disable - 取消 x-ui 开机自启"
186 | echo -e "x-ui log - 查看 x-ui 日志"
187 | echo -e "x-ui update - 更新 x-ui 面板"
188 | echo -e "x-ui install - 安装 x-ui 面板"
189 | echo -e "x-ui uninstall - 卸载 x-ui 面板"
190 | echo -e "----------------------------------------------"
191 | echo ""
192 | if [[ -n $ipv4 ]]; then
193 | echo -e "${yellow}面板IPv4访问地址为:${plain} ${green}http://$ipv4:$config_port ${plain}"
194 | fi
195 | if [[ -n $ipv6 ]]; then
196 | echo -e "${yellow}面板IPv6访问地址为:${plain} ${green}http://[$ipv6]:$config_port ${plain}"
197 | fi
198 | echo -e "请自行确保此端口没有被其他程序占用,${yellow}并且确保${plain} ${red} $config_port ${plain} ${yellow}端口已放行${plain}"
199 | }
200 |
201 | echo -e "${green}开始安装${plain}"
202 | install_base
203 | install_x-ui $1
--------------------------------------------------------------------------------
/yxip/脚本.txt:
--------------------------------------------------------------------------------
1 | hysteria-1
2 | bash <(curl -fsSL https://git.io/hysteria.sh)
3 |
4 |
5 | hysteria-2
6 | wget -N --no-check-certificate https://raw.githubusercontent.com/Misaka-blog/hysteria-install/main/hy2/hysteria.sh && bash hysteria.sh
7 |
8 |
9 |
10 | 流媒体检测
11 | bash <(curl -L -s check.unlock.media)
12 |
13 |
14 |
15 | 流媒体解锁脚本
16 | bash <(curl -sSL https://gitlab.com/fscarmen/warp_unlock/-/raw/main/unlock.sh)
17 |
18 |
19 |
20 |
21 | xui
22 | bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)
23 |
24 |
25 |
26 | argo
27 | bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/argox/main/argox.sh)
28 |
29 |
30 |
31 |
32 |
33 | 科技lioN
34 | curl -sS -O https://raw.githubusercontent.com/kejilion/sh/main/kejilion.sh && chmod +x kejilion.sh && ./kejilion.sh
35 |
36 |
37 | vps融合怪
38 | curl -L https://gitlab.com/spiritysdx/za/-/raw/main/ecs.sh -o ecs.sh && chmod +x ecs.sh && bash ecs.sh
39 |
40 |
41 |
42 | ubuntu/debian 系统安装 Curl 方法: apt-get update -y && apt-get install curl -y
43 | centos 系统安装 Curl 方法: yum update -y && yum install curl -y%0D%0A安装好 curl 之后就能安装脚本了
44 |
45 | 调用ipv6
46 | bash <(curl -Lso- https://sh.vps.dance/ip46.sh)
47 |
--------------------------------------------------------------------------------