5
5
import cn .qaiu .parser .PanBase ;
6
6
import cn .qaiu .util .CastUtil ;
7
7
import cn .qaiu .util .FileSizeConverter ;
8
+ import cn .qaiu .util .HeaderUtils ;
8
9
import cn .qaiu .util .JsExecUtils ;
9
10
import io .vertx .core .Future ;
10
11
import io .vertx .core .MultiMap ;
@@ -49,7 +50,7 @@ public Future<String> parse() {
49
50
try {
50
51
String jsText = getJsByPwd (pwd , html , "document.getElementById('rpt')" );
51
52
ScriptObjectMirror scriptObjectMirror = JsExecUtils .executeDynamicJs (jsText , "down_p" );
52
- getDownURL (sUrl , client , CastUtil . cast ( scriptObjectMirror . get ( "data" )) );
53
+ getDownURL (sUrl , client , scriptObjectMirror );
53
54
} catch (ScriptException | NoSuchMethodException e ) {
54
55
fail (e , "js引擎执行失败" );
55
56
}
@@ -68,7 +69,7 @@ public Future<String> parse() {
68
69
}
69
70
try {
70
71
ScriptObjectMirror scriptObjectMirror = JsExecUtils .executeDynamicJs (jsText , null );
71
- getDownURL (sUrl , client , CastUtil . cast ( scriptObjectMirror . get ( "data" )) );
72
+ getDownURL (sUrl , client , scriptObjectMirror );
72
73
} catch (ScriptException | NoSuchMethodException e ) {
73
74
fail (e , "js引擎执行失败" );
74
75
}
@@ -104,22 +105,53 @@ private String getJsText(String html) {
104
105
return html .substring (startPos , endPos ).replaceAll ("<!--.*-->" , "" );
105
106
}
106
107
107
- private void getDownURL (String key , WebClient client , Map <String , Object > signMap ) {
108
+ private void getDownURL (String key , WebClient client , Map <String , ?> obj ) {
109
+ if (obj == null ) {
110
+ fail ("需要访问密码" );
111
+ return ;
112
+ }
113
+ Map <?, ?> signMap = (Map <?, ?>)obj .get ("data" );
114
+ String url0 = obj .get ("url" ).toString ();
108
115
MultiMap map = MultiMap .caseInsensitiveMultiMap ();
109
- signMap .forEach ((k , v ) -> map .set (k , v .toString ()));
110
- MultiMap headers = getHeaders (key );
116
+ signMap .forEach ((k , v ) -> {
117
+ map .add ((String ) k , v .toString ());
118
+ });
119
+ MultiMap headers = HeaderUtils .parseHeaders ("""
120
+ Accept: application/json, text/javascript, */*
121
+ Accept-Encoding: gzip, deflate, br, zstd
122
+ Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
123
+ Cache-Control: no-cache
124
+ Connection: keep-alive
125
+ Content-Type: application/x-www-form-urlencoded
126
+ Pragma: no-cache
127
+ Sec-Fetch-Dest: empty
128
+ Sec-Fetch-Mode: cors
129
+ Sec-Fetch-Site: same-origin
130
+ User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0
131
+ X-Requested-With: XMLHttpRequest
132
+ sec-ch-ua: "Chromium";v="134", "Not:A-Brand";v="24", "Microsoft Edge";v="134"
133
+ sec-ch-ua-mobile: ?0
134
+ sec-ch-ua-platform: "Windows"
135
+ """ );
111
136
112
- String url = SHARE_URL_PREFIX + "/ajaxm.php" ;
137
+ headers .set ("referer" , key );
138
+ // action=downprocess&signs=%3Fctdf&websignkey=I5gl&sign=BWMGOF1sBTRWXwI9BjZdYVA7BDhfNAIyUG9UawJtUGMIPlAhACkCa1UyUTAAYFxvUj5XY1E7UGFXaFVq&websign=&kd=1&ves=1
139
+ String url = SHARE_URL_PREFIX + url0 ;
113
140
client .postAbs (url ).putHeaders (headers ).sendForm (map ).onSuccess (res2 -> {
114
- JsonObject urlJson = asJson (res2 );
115
- if (urlJson .getInteger ("zt" ) != 1 ) {
116
- fail (urlJson .getString ("inf" ));
117
- return ;
141
+ try {
142
+ JsonObject urlJson = asJson (res2 );
143
+ if (urlJson .getInteger ("zt" ) != 1 ) {
144
+ fail (urlJson .getString ("inf" ));
145
+ return ;
146
+ }
147
+ String downUrl = urlJson .getString ("dom" ) + "/file/" + urlJson .getString ("url" );
148
+ headers .remove ("Referer" );
149
+ client .getAbs (downUrl ).putHeaders (headers ).send ()
150
+ .onSuccess (res3 -> promise .complete (res3 .headers ().get ("Location" )))
151
+ .onFailure (handleFail (downUrl ));
152
+ } catch (Exception e ) {
153
+ fail ("解析异常" );
118
154
}
119
- String downUrl = urlJson .getString ("dom" ) + "/file/" + urlJson .getString ("url" );
120
- client .getAbs (downUrl ).putHeaders (headers ).send ()
121
- .onSuccess (res3 -> promise .complete (res3 .headers ().get ("Location" )))
122
- .onFailure (handleFail (downUrl ));
123
155
}).onFailure (handleFail (url ));
124
156
}
125
157
0 commit comments