@@ -38,9 +38,9 @@ class QRCodeHandler {
3838 } else {
3939 return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' . replace ( / [ x y ] / g, function ( c ) {
4040 const r = ( Math . random ( ) * 16 ) | 0 ,
41- v = c == 'x' ? r : ( r & 0x3 ) | 0x8 ;
41+ v = c == 'x' ? r : ( r & 0x3 ) | 0x8 ;
4242 return v . toString ( 16 ) ;
43- } ) ;
43+ } ) ;
4444 }
4545 }
4646
@@ -57,32 +57,32 @@ class QRCodeHandler {
5757 const result = [ ] ;
5858 let currentCookie = '' ;
5959 let inExpires = false ;
60-
60+
6161 for ( let i = 0 ; i < cookieString . length ; i ++ ) {
6262 const char = cookieString [ i ] ;
63-
63+
6464 // 判断是否进入或退出 `expires` 属性
6565 if ( cookieString . slice ( i , i + 8 ) . toLowerCase ( ) === 'expires=' ) {
66- inExpires = true ;
66+ inExpires = true ;
6767 }
6868 if ( inExpires && char === ';' ) {
69- inExpires = false ;
69+ inExpires = false ;
7070 }
71-
71+
7272 // 检测到逗号分隔符并且不在 `expires` 属性中,表示一个 Cookie 条目结束
7373 if ( char === ',' && ! inExpires ) {
74- result . push ( currentCookie . trim ( ) ) ;
75- currentCookie = '' ;
74+ result . push ( currentCookie . trim ( ) ) ;
75+ currentCookie = '' ;
7676 } else {
77- currentCookie += char ;
77+ currentCookie += char ;
7878 }
7979 }
80-
80+
8181 // 添加最后一个 Cookie 条目
8282 if ( currentCookie . trim ( ) ) {
8383 result . push ( currentCookie . trim ( ) ) ;
8484 }
85-
85+
8686 return result ;
8787 } ;
8888
@@ -172,7 +172,7 @@ class QRCodeHandler {
172172 async _checkQuarkStatus ( ) {
173173 const state = this . platformStates [ QRCodeHandler . PLATFORM_QUARK ] ;
174174 if ( ! state ) {
175- return { status : QRCodeHandler . STATUS_EXPIRED } ;
175+ return { status : QRCodeHandler . STATUS_EXPIRED } ;
176176 }
177177
178178 try {
@@ -238,9 +238,9 @@ class QRCodeHandler {
238238 } ;
239239 } else if ( resData . data . status === 50004002 ) { // token过期
240240 this . platformStates [ QRCodeHandler . PLATFORM_QUARK ] = null ;
241- return { status : QRCodeHandler . STATUS_EXPIRED } ;
241+ return { status : QRCodeHandler . STATUS_EXPIRED } ;
242242 } else {
243- return { status : QRCodeHandler . STATUS_NEW } ;
243+ return { status : QRCodeHandler . STATUS_NEW } ;
244244 }
245245 } catch ( e ) {
246246 this . platformStates [ QRCodeHandler . PLATFORM_QUARK ] = null ;
@@ -291,7 +291,7 @@ class QRCodeHandler {
291291 async _checkAliStatus ( ) {
292292 const state = this . platformStates [ QRCodeHandler . PLATFORM_ALI ] ;
293293 if ( ! state ) {
294- return { status : QRCodeHandler . STATUS_EXPIRED } ;
294+ return { status : QRCodeHandler . STATUS_EXPIRED } ;
295295 }
296296
297297 try {
@@ -325,29 +325,30 @@ class QRCodeHandler {
325325 const resData = res . data ;
326326
327327 if ( ! resData . data . content || ! resData . data . content . data ) {
328- return { status : QRCodeHandler . STATUS_EXPIRED } ;
328+ return { status : QRCodeHandler . STATUS_EXPIRED } ;
329329 }
330330
331331 const status = resData . data . content . data . qrCodeStatus ;
332332
333333 if ( status === "CONFIRMED" ) {
334334 if ( resData . data . content . data . bizExt ) {
335335 const bizExt = JSON . parse ( atob ( resData . data . content . data . bizExt ) ) ;
336+ console . log ( bizExt . pds_login_result ) ;
336337 return {
337338 status : QRCodeHandler . STATUS_CONFIRMED ,
338339 token : bizExt . pds_login_result . refreshToken
339340 } ;
340341 }
341- return { status : QRCodeHandler . STATUS_EXPIRED } ;
342+ return { status : QRCodeHandler . STATUS_EXPIRED } ;
342343 } else if ( status === "SCANED" ) {
343- return { status : QRCodeHandler . STATUS_SCANED } ;
344+ return { status : QRCodeHandler . STATUS_SCANED } ;
344345 } else if ( status === "CANCELED" ) {
345346 this . platformStates [ QRCodeHandler . PLATFORM_ALI ] = null ;
346- return { status : QRCodeHandler . STATUS_CANCELED } ;
347+ return { status : QRCodeHandler . STATUS_CANCELED } ;
347348 } else if ( status === "NEW" ) {
348- return { status : QRCodeHandler . STATUS_NEW } ;
349+ return { status : QRCodeHandler . STATUS_NEW } ;
349350 } else {
350- return { status : QRCodeHandler . STATUS_EXPIRED } ;
351+ return { status : QRCodeHandler . STATUS_EXPIRED } ;
351352 }
352353 } catch ( e ) {
353354 this . platformStates [ QRCodeHandler . PLATFORM_ALI ] = null ;
@@ -401,7 +402,7 @@ class QRCodeHandler {
401402 async _checkUCStatus ( ) {
402403 const state = this . platformStates [ QRCodeHandler . PLATFORM_UC ] ;
403404 if ( ! state ) {
404- return { status : QRCodeHandler . STATUS_EXPIRED } ;
405+ return { status : QRCodeHandler . STATUS_EXPIRED } ;
405406 }
406407
407408 try {
@@ -445,17 +446,35 @@ class QRCodeHandler {
445446 const cookieResData = cookieRes . data ;
446447 const cookies = cookieResData . headers [ 'set-cookie' ] ;
447448 const cookies2array = this . formatCookiesToList ( cookies ) ;
448- const mainCookies = this . formatCookie ( cookies2array ) ;
449+ let mainCookies = this . formatCookie ( cookies2array ) ;
450+ const cookieSelfRes = await axios ( {
451+ url : "/http" ,
452+ method : "POST" ,
453+ data : {
454+ url : "https://pc-api.uc.cn/1/clouddrive/config?pr=UCBrowser&fr=pc" ,
455+ headers : {
456+ ...QRCodeHandler . HEADERS ,
457+ Origin : 'https://drive.uc.cn' ,
458+ Referer : 'https://drive.uc.cn/' ,
459+ Cookie : mainCookies
460+ }
461+ }
462+ } ) ;
463+ const cookieResDataSelf = cookieSelfRes . data ;
464+ const cookiesSelf = Array . isArray ( cookieResDataSelf . headers [ 'set-cookie' ] ) ? cookieResDataSelf . headers [ 'set-cookie' ] . join ( '; ' ) : cookieResDataSelf . headers [ 'set-cookie' ] ;
465+ const cookies2arraySelf = this . formatCookiesToList ( cookiesSelf ) ;
466+ const mainCookiesSelf = this . formatCookie ( cookies2arraySelf ) ;
467+ if ( mainCookiesSelf ) mainCookies += ';' + mainCookiesSelf ;
449468 this . platformStates [ QRCodeHandler . PLATFORM_UC ] = null ;
450469 return {
451470 status : QRCodeHandler . STATUS_CONFIRMED ,
452471 cookie : mainCookies
453472 } ;
454473 } else if ( resData . data . status === 50004002 ) { // token过期
455474 this . platformStates [ QRCodeHandler . PLATFORM_UC ] = null ;
456- return { status : QRCodeHandler . STATUS_EXPIRED } ;
475+ return { status : QRCodeHandler . STATUS_EXPIRED } ;
457476 } else {
458- return { status : QRCodeHandler . STATUS_NEW } ;
477+ return { status : QRCodeHandler . STATUS_NEW } ;
459478 }
460479 } catch ( e ) {
461480 this . platformStates [ QRCodeHandler . PLATFORM_UC ] = null ;
@@ -505,7 +524,7 @@ class QRCodeHandler {
505524 async _checkBiliStatus ( ) {
506525 const state = this . platformStates [ QRCodeHandler . PLATFORM_BILI ] ;
507526 if ( ! state ) {
508- return { status : QRCodeHandler . STATUS_EXPIRED } ;
527+ return { status : QRCodeHandler . STATUS_EXPIRED } ;
509528 }
510529
511530 try {
@@ -530,9 +549,9 @@ class QRCodeHandler {
530549 }
531550
532551 if ( resData . data . data . code === 86101 ) { // 未扫码
533- return { status : QRCodeHandler . STATUS_NEW } ;
552+ return { status : QRCodeHandler . STATUS_NEW } ;
534553 } else if ( resData . data . data . code === 86090 ) { // 已扫码未确认
535- return { status : QRCodeHandler . STATUS_SCANED } ;
554+ return { status : QRCodeHandler . STATUS_SCANED } ;
536555 } else if ( resData . data . data . code === 0 ) { // 已确认
537556 const url = resData . data . data . url ;
538557 let cookie = "" ;
@@ -547,7 +566,7 @@ class QRCodeHandler {
547566 } ;
548567 } else { // 二维码过期
549568 this . platformStates [ QRCodeHandler . PLATFORM_BILI ] = null ;
550- return { status : QRCodeHandler . STATUS_EXPIRED } ;
569+ return { status : QRCodeHandler . STATUS_EXPIRED } ;
551570 }
552571 } catch ( e ) {
553572 this . platformStates [ QRCodeHandler . PLATFORM_BILI ] = null ;
0 commit comments