Skip to content

Commit ae4e604

Browse files
committed
update:更新版本号,增加异步导入机制
1 parent b402d71 commit ae4e604

16 files changed

+230
-132
lines changed

Diff for: README.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ nodejs作为服务端的drpy实现。全面升级异步写法
1111

1212
## 更新记录
1313

14-
### 20241212
14+
### 20241213
1515

16-
更新至V1.0.9
16+
更新至V1.0.10
1717

18-
1. 尝试修复已知问题
18+
1. 替换axios单文件为node库
19+
2. drpyS支持异步导入模块
1920

2021
[点此查看完整更新记录](docs/updateRecord.md)
2122

Diff for: custom.json

+14-14
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"key": "drpyS_PTT[优]",
55
"name": "PTT[优](DS)",
66
"type": 4,
7-
"api": "http://192.168.31.49:5757/api/PTT[优]",
7+
"api": "http://127.0.0.1:5757/api/PTT[优]",
88
"searchable": 1,
99
"filterable": 1,
1010
"quickSearch": 0,
@@ -14,7 +14,7 @@
1414
"key": "drpyS_xvideos[密]",
1515
"name": "xvideos[密](DS)",
1616
"type": 4,
17-
"api": "http://192.168.31.49:5757/api/xvideos[密]",
17+
"api": "http://127.0.0.1:5757/api/xvideos[密]",
1818
"searchable": 1,
1919
"filterable": 1,
2020
"quickSearch": 0,
@@ -24,7 +24,7 @@
2424
"key": "drpyS_人人视频",
2525
"name": "人人视频(DS)",
2626
"type": 4,
27-
"api": "http://192.168.31.49:5757/api/人人视频",
27+
"api": "http://127.0.0.1:5757/api/人人视频",
2828
"searchable": 1,
2929
"filterable": 1,
3030
"quickSearch": 0,
@@ -34,7 +34,7 @@
3434
"key": "drpyS_动漫巴士[漫]",
3535
"name": "动漫巴士[漫](DS)",
3636
"type": 4,
37-
"api": "http://192.168.31.49:5757/api/动漫巴士[漫]",
37+
"api": "http://127.0.0.1:5757/api/动漫巴士[漫]",
3838
"searchable": 1,
3939
"filterable": 1,
4040
"quickSearch": 0,
@@ -44,7 +44,7 @@
4444
"key": "drpyS_央视大全[官]",
4545
"name": "央视大全[官](DS)",
4646
"type": 4,
47-
"api": "http://192.168.31.49:5757/api/央视大全[官]",
47+
"api": "http://127.0.0.1:5757/api/央视大全[官]",
4848
"searchable": 1,
4949
"filterable": 1,
5050
"quickSearch": 0,
@@ -54,7 +54,7 @@
5454
"key": "drpyS_星芽短剧",
5555
"name": "星芽短剧(DS)",
5656
"type": 4,
57-
"api": "http://192.168.31.49:5757/api/星芽短剧",
57+
"api": "http://127.0.0.1:5757/api/星芽短剧",
5858
"searchable": 1,
5959
"filterable": 1,
6060
"quickSearch": 0,
@@ -64,7 +64,7 @@
6464
"key": "drpyS_番茄小说[书]",
6565
"name": "番茄小说[书](DS)",
6666
"type": 4,
67-
"api": "http://192.168.31.49:5757/api/番茄小说[书]",
67+
"api": "http://127.0.0.1:5757/api/番茄小说[书]",
6868
"searchable": 1,
6969
"filterable": 1,
7070
"quickSearch": 0,
@@ -74,7 +74,7 @@
7474
"key": "drpyS_老白故事[听]",
7575
"name": "老白故事[听](DS)",
7676
"type": 4,
77-
"api": "http://192.168.31.49:5757/api/老白故事[听]",
77+
"api": "http://127.0.0.1:5757/api/老白故事[听]",
7878
"searchable": 1,
7979
"filterable": 1,
8080
"quickSearch": 0,
@@ -84,7 +84,7 @@
8484
"key": "drpyS_腾云驾雾[官]",
8585
"name": "腾云驾雾[官](DS)",
8686
"type": 4,
87-
"api": "http://192.168.31.49:5757/api/腾云驾雾[官]",
87+
"api": "http://127.0.0.1:5757/api/腾云驾雾[官]",
8888
"searchable": 1,
8989
"filterable": 1,
9090
"quickSearch": 0,
@@ -94,7 +94,7 @@
9494
"key": "drpyS_色花堂[密+]",
9595
"name": "色花堂[密+](DS)",
9696
"type": 4,
97-
"api": "http://192.168.31.49:5757/api/色花堂[密+]",
97+
"api": "http://127.0.0.1:5757/api/色花堂[密+]",
9898
"searchable": 1,
9999
"filterable": 1,
100100
"quickSearch": 0,
@@ -104,7 +104,7 @@
104104
"key": "drpyS_色花堂[密]",
105105
"name": "色花堂[密](DS)",
106106
"type": 4,
107-
"api": "http://192.168.31.49:5757/api/色花堂[密]",
107+
"api": "http://127.0.0.1:5757/api/色花堂[密]",
108108
"searchable": 1,
109109
"filterable": 1,
110110
"quickSearch": 0,
@@ -114,7 +114,7 @@
114114
"key": "drpyS_草榴社区[密]",
115115
"name": "草榴社区[密](DS)",
116116
"type": 4,
117-
"api": "http://192.168.31.49:5757/api/草榴社区[密]",
117+
"api": "http://127.0.0.1:5757/api/草榴社区[密]",
118118
"searchable": 1,
119119
"filterable": 1,
120120
"quickSearch": 0,
@@ -124,7 +124,7 @@
124124
"key": "drpyS_金牌影院",
125125
"name": "金牌影院(DS)",
126126
"type": 4,
127-
"api": "http://192.168.31.49:5757/api/金牌影院",
127+
"api": "http://127.0.0.1:5757/api/金牌影院",
128128
"searchable": 1,
129129
"filterable": 1,
130130
"quickSearch": 0,
@@ -134,7 +134,7 @@
134134
"key": "drpyS_黑料不打烊[密]",
135135
"name": "黑料不打烊[密](DS)",
136136
"type": 4,
137-
"api": "http://192.168.31.49:5757/api/黑料不打烊[密]",
137+
"api": "http://127.0.0.1:5757/api/黑料不打烊[密]",
138138
"searchable": 1,
139139
"filterable": 1,
140140
"quickSearch": 0,

Diff for: docs/updateRecord.md

+19-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,31 @@
11
# drpyS更新记录
22

3+
### 20241213
4+
5+
更新至V1.0.10
6+
7+
1. axios变动,libs_drpy目录保留esm版axios,public目录保留全平台版axios。req封装采用node的axios。解决请求的set-cookie不正确问题
8+
2. 增加异步导入模块功能$.import。支持远程模块(请务必保证模块的正确性,不然可能导致后端服务挂掉)
9+
用法示例,详见_fq3.js
10+
11+
```javascript
12+
const {getIp} = await $.import('http://127.0.0.1:5757/public/ip.js');
13+
var rule = {
14+
class_parse: async () => {
15+
log('ip:', await getIp());
16+
},
17+
}
18+
```
19+
320
### 20241212
421

522
更新至V1.0.9
623

724
1. drpyS加解密工具增加文本大小限制,目前默认为100KB,防止垃圾大数据恶意攻击接口服务
825
2. 修复央视大全本地代理接口没有动态获取导致可能外网播放地址出现127开头内网地址无法播放的问题
926
3. 升级axios单文件版到1.7.9
10-
4. 往libsSanbox注入eval函数(非直接注入,仅针对海阔,直接注入会用不了),暂时解决海阔不支持vm里执行eval的问题,但是问题来了,存在作用域问题不要轻易使用,暂时无法解决。(已检测此eval不可以逃逸vm和直接获取drpyS内的变量,勉强能用)
27+
4. 往libsSanbox注入eval函数(非直接注入,仅针对海阔,直接注入会用不了),暂时解决海阔不支持vm里执行eval的问题,但是问题来了,存在作用域问题不要轻易使用,暂时无法解决。(
28+
已检测此eval不可以逃逸vm和直接获取drpyS内的变量,勉强能用)
1129
5. 尝试$.require支持网络导入远程js依赖,要求1s内的数据(千万不要导入自己服务的静态文件,会导致阻塞)
1230

1331
### 20241211

Diff for: index.json

+14-14
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"key": "drpyS_PTT[优]",
55
"name": "PTT[优](DS)",
66
"type": 4,
7-
"api": "http://192.168.31.49:5757/api/PTT[优]",
7+
"api": "http://127.0.0.1:5757/api/PTT[优]",
88
"searchable": 1,
99
"filterable": 1,
1010
"quickSearch": 0,
@@ -14,7 +14,7 @@
1414
"key": "drpyS_xvideos[密]",
1515
"name": "xvideos[密](DS)",
1616
"type": 4,
17-
"api": "http://192.168.31.49:5757/api/xvideos[密]",
17+
"api": "http://127.0.0.1:5757/api/xvideos[密]",
1818
"searchable": 1,
1919
"filterable": 1,
2020
"quickSearch": 0,
@@ -24,7 +24,7 @@
2424
"key": "drpyS_人人视频",
2525
"name": "人人视频(DS)",
2626
"type": 4,
27-
"api": "http://192.168.31.49:5757/api/人人视频",
27+
"api": "http://127.0.0.1:5757/api/人人视频",
2828
"searchable": 1,
2929
"filterable": 1,
3030
"quickSearch": 0,
@@ -34,7 +34,7 @@
3434
"key": "drpyS_动漫巴士[漫]",
3535
"name": "动漫巴士[漫](DS)",
3636
"type": 4,
37-
"api": "http://192.168.31.49:5757/api/动漫巴士[漫]",
37+
"api": "http://127.0.0.1:5757/api/动漫巴士[漫]",
3838
"searchable": 1,
3939
"filterable": 1,
4040
"quickSearch": 0,
@@ -44,7 +44,7 @@
4444
"key": "drpyS_央视大全[官]",
4545
"name": "央视大全[官](DS)",
4646
"type": 4,
47-
"api": "http://192.168.31.49:5757/api/央视大全[官]",
47+
"api": "http://127.0.0.1:5757/api/央视大全[官]",
4848
"searchable": 1,
4949
"filterable": 1,
5050
"quickSearch": 0,
@@ -54,7 +54,7 @@
5454
"key": "drpyS_星芽短剧",
5555
"name": "星芽短剧(DS)",
5656
"type": 4,
57-
"api": "http://192.168.31.49:5757/api/星芽短剧",
57+
"api": "http://127.0.0.1:5757/api/星芽短剧",
5858
"searchable": 1,
5959
"filterable": 1,
6060
"quickSearch": 0,
@@ -64,7 +64,7 @@
6464
"key": "drpyS_番茄小说[书]",
6565
"name": "番茄小说[书](DS)",
6666
"type": 4,
67-
"api": "http://192.168.31.49:5757/api/番茄小说[书]",
67+
"api": "http://127.0.0.1:5757/api/番茄小说[书]",
6868
"searchable": 1,
6969
"filterable": 1,
7070
"quickSearch": 0,
@@ -74,7 +74,7 @@
7474
"key": "drpyS_老白故事[听]",
7575
"name": "老白故事[听](DS)",
7676
"type": 4,
77-
"api": "http://192.168.31.49:5757/api/老白故事[听]",
77+
"api": "http://127.0.0.1:5757/api/老白故事[听]",
7878
"searchable": 1,
7979
"filterable": 1,
8080
"quickSearch": 0,
@@ -84,7 +84,7 @@
8484
"key": "drpyS_腾云驾雾[官]",
8585
"name": "腾云驾雾[官](DS)",
8686
"type": 4,
87-
"api": "http://192.168.31.49:5757/api/腾云驾雾[官]",
87+
"api": "http://127.0.0.1:5757/api/腾云驾雾[官]",
8888
"searchable": 1,
8989
"filterable": 1,
9090
"quickSearch": 0,
@@ -94,7 +94,7 @@
9494
"key": "drpyS_色花堂[密+]",
9595
"name": "色花堂[密+](DS)",
9696
"type": 4,
97-
"api": "http://192.168.31.49:5757/api/色花堂[密+]",
97+
"api": "http://127.0.0.1:5757/api/色花堂[密+]",
9898
"searchable": 1,
9999
"filterable": 1,
100100
"quickSearch": 0,
@@ -104,7 +104,7 @@
104104
"key": "drpyS_色花堂[密]",
105105
"name": "色花堂[密](DS)",
106106
"type": 4,
107-
"api": "http://192.168.31.49:5757/api/色花堂[密]",
107+
"api": "http://127.0.0.1:5757/api/色花堂[密]",
108108
"searchable": 1,
109109
"filterable": 1,
110110
"quickSearch": 0,
@@ -114,7 +114,7 @@
114114
"key": "drpyS_草榴社区[密]",
115115
"name": "草榴社区[密](DS)",
116116
"type": 4,
117-
"api": "http://192.168.31.49:5757/api/草榴社区[密]",
117+
"api": "http://127.0.0.1:5757/api/草榴社区[密]",
118118
"searchable": 1,
119119
"filterable": 1,
120120
"quickSearch": 0,
@@ -124,7 +124,7 @@
124124
"key": "drpyS_金牌影院",
125125
"name": "金牌影院(DS)",
126126
"type": 4,
127-
"api": "http://192.168.31.49:5757/api/金牌影院",
127+
"api": "http://127.0.0.1:5757/api/金牌影院",
128128
"searchable": 1,
129129
"filterable": 1,
130130
"quickSearch": 0,
@@ -134,7 +134,7 @@
134134
"key": "drpyS_黑料不打烊[密]",
135135
"name": "黑料不打烊[密](DS)",
136136
"type": 4,
137-
"api": "http://192.168.31.49:5757/api/黑料不打烊[密]",
137+
"api": "http://127.0.0.1:5757/api/黑料不打烊[密]",
138138
"searchable": 1,
139139
"filterable": 1,
140140
"quickSearch": 0,

Diff for: js/_fq3.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
const {getIp} = $.require('http://127.0.0.1:5757/public/ip.js');
1+
const {getIp} = await $.import('http://127.0.0.1:5757/public/ip.js');
22

3-
var rule = {
3+
const rule = {
44
类型: '小说',
55
title: '番茄小说[书]',
66
desc: '番茄小说纯js版本',
77
host: 'https://fanqienovel.com/',
88
homeUrl: 'https://fanqienovel.com/api/author/book/category_list/v0/',
99
url: '/api/author/library/book_list/v0/?page_count=18&page_index=(fypage-1)&gender=-1&category_id=fyclass&creation_status=-1&word_count=-1&sort=0#fyfilter',
1010
class_parse: async () => {
11-
log('ip:', getIp());
11+
log('ip:', await getIp());
1212
},
1313
headers: {
1414
'User-Agent': 'PC_UA',

Diff for: js/黑料不打烊[密].js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: libs/drpyS.js

+13-2
Original file line numberDiff line numberDiff line change
@@ -223,27 +223,38 @@ export async function init(filePath, env, refresh) {
223223
module: {}, // 模块支持
224224
exports: {}, // 模块支持
225225
rule: {}, // 用于存放导出的 rule 对象
226+
_asyncGetRule: null,
226227
...utilsSanbox,
227228
...drpySanbox,
228229
...drpyCustomSanbox,
229230
...libsSanbox,
230231
};
231-
if (typeof fetchByHiker !== 'undefined'){ // 临时解决海阔不支持eval问题,但是这个eval存在作用域问题,跟非海阔环境的有很大区别,属于残废版本
232+
if (typeof fetchByHiker !== 'undefined') { // 临时解决海阔不支持eval问题,但是这个eval存在作用域问题,跟非海阔环境的有很大区别,属于残废版本
232233
sandbox.eval = function (code) {
233234
return vm.runInContext(code, sandbox);
234235
};
235236
}
237+
236238
// 创建一个上下文
237239
const context = vm.createContext(sandbox);
238240

239241
// 注入扩展代码到沙箱中
240242
const polyfillsScript = new vm.Script(es6_extend_code);
241243
polyfillsScript.runInContext(context);
242244

245+
// 设置沙箱到全局 $
246+
sandbox.$.setSandbox(sandbox);
243247
// 执行文件内容,将其放入沙箱中
244248
const js_code = getOriginalJs(fileContent);
245-
const ruleScript = new vm.Script(js_code);
249+
const js_code_wrapper = `
250+
_asyncGetRule = (async function() {
251+
${js_code}
252+
return rule;
253+
})();
254+
`;
255+
const ruleScript = new vm.Script(js_code_wrapper);
246256
ruleScript.runInContext(context);
257+
sandbox.rule = await sandbox._asyncGetRule;
247258

248259
// rule注入完毕后添加自定义req扩展request方法进入规则,这个代码里可以直接获取rule的任意对象,而且还是独立隔离的
249260
const reqExtendScript = new vm.Script(req_extend_code);

Diff for: libs_drpy/axios.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: libs_drpy/drpyBatchFetch.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import PQueue from 'p-queue';
22
import Queue from 'queue';
3-
// import axios from './axios.min.js';
4-
import './axios.min.js';
3+
import axios from 'axios';
54

65
export const batchFetch1 = async (items, maxWorkers = 5, timeoutConfig = 5000) => {
76
let t1 = (new Date()).getTime();

Diff for: libs_drpy/drpyInject.js

+1-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
// import axios, {toFormData} from 'axios';
1+
import axios, {toFormData} from 'axios';
22
// import axios, {toFormData} from './axios.min.js';
3-
import './axios.min.js';
4-
5-
const {toFormData} = axios;
6-
// console.log('type of toFormData:', typeof toFormData);
73
import crypto from 'crypto';
84
import https from 'https';
95
import fs from 'node:fs';
@@ -20,7 +16,6 @@ import {batchFetch3} from './hikerBatchFetch.js';
2016

2117
globalThis.batchFetch = batchFetch3;
2218
globalThis.axios = axios;
23-
2419
globalThis.hlsParser = hlsParser;
2520

2621

Diff for: libs_drpy/hikerBatchFetch.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import DsQueue from './dsQueue.js';
22
import fastq from "fastq";
3-
// import axios from './axios.min.js';
4-
import './axios.min.js';
3+
import axios from 'axios';
54

65
export const batchFetch3 = async (items, maxWorkers = 5, timeoutConfig = 5000) => {
76
let t1 = (new Date()).getTime();

0 commit comments

Comments
 (0)