@@ -95,36 +95,66 @@ func (d *LanZou) _post(url string, callback base.ReqCallback, resp interface{},
95
95
}
96
96
}
97
97
98
+ // 修复点:所有请求都自动处理 acw_sc__v2 验证和 down_ip=1
98
99
func (d * LanZou ) request (url string , method string , callback base.ReqCallback , up bool ) ([]byte , error ) {
99
100
var req * resty.Request
100
- if up {
101
- once .Do (func () {
102
- upClient = base .NewRestyClient ().SetTimeout (120 * time .Second )
103
- })
104
- req = upClient .R ()
105
- } else {
106
- req = base .RestyClient .R ()
107
- }
101
+ var vs string
102
+ for retry := 0 ; retry < 3 ; retry ++ {
103
+ if up {
104
+ once .Do (func () {
105
+ upClient = base .NewRestyClient ().SetTimeout (120 * time .Second )
106
+ })
107
+ req = upClient .R ()
108
+ } else {
109
+ req = base .RestyClient .R ()
110
+ }
108
111
109
- req .SetHeaders (map [string ]string {
110
- "Referer" : "https://pc.woozooo.com" ,
111
- "User-Agent" : d .UserAgent ,
112
- })
112
+ req .SetHeaders (map [string ]string {
113
+ "Referer" : "https://pc.woozooo.com" ,
114
+ "User-Agent" : d .UserAgent ,
115
+ })
113
116
114
- if d .Cookie != "" {
115
- req .SetHeader ("cookie" , d .Cookie )
116
- }
117
+ // 下载直链时需要加 down_ip=1
118
+ if strings .Contains (url , "/file/" ) {
119
+ cookie := d .Cookie
120
+ if cookie != "" {
121
+ cookie += "; "
122
+ }
123
+ cookie += "down_ip=1"
124
+ if vs != "" {
125
+ cookie += "; acw_sc__v2=" + vs
126
+ }
127
+ req .SetHeader ("cookie" , cookie )
128
+ } else if d .Cookie != "" {
129
+ cookie := d .Cookie
130
+ if vs != "" {
131
+ cookie += "; acw_sc__v2=" + vs
132
+ }
133
+ req .SetHeader ("cookie" , cookie )
134
+ } else if vs != "" {
135
+ req .SetHeader ("cookie" , "acw_sc__v2=" + vs )
136
+ }
117
137
118
- if callback != nil {
119
- callback (req )
120
- }
138
+ if callback != nil {
139
+ callback (req )
140
+ }
121
141
122
- res , err := req .Execute (method , url )
123
- if err != nil {
124
- return nil , err
142
+ res , err := req .Execute (method , url )
143
+ if err != nil {
144
+ return nil , err
145
+ }
146
+ bodyStr := res .String ()
147
+ log .Debugf ("lanzou request: url=>%s ,stats=>%d ,body => %s\n " , res .Request .URL , res .StatusCode (), bodyStr )
148
+ if strings .Contains (bodyStr , "acw_sc__v2" ) {
149
+ vs , err = CalcAcwScV2 (bodyStr )
150
+ if err != nil {
151
+ return nil , err
152
+ }
153
+ continue
154
+ }
155
+ return res .Body (), err
125
156
}
126
- log .Debugf ("lanzou request: url=>%s ,stats=>%d ,body => %s\n " , res .Request .URL , res .StatusCode (), res .String ())
127
- return res .Body (), err
157
+ return nil , errors .New ("acw_sc__v2 validation error" )
128
158
}
129
159
130
160
func (d * LanZou ) Login () ([]* http.Cookie , error ) {
@@ -445,7 +475,7 @@ func (d *LanZou) getFilesByShareUrl(shareID, pwd string, sharePageData string) (
445
475
SetCookie (& http.Cookie {
446
476
Name : "acw_sc__v2" ,
447
477
Value : vs ,
448
- }).Get (downloadUrl )
478
+ }).SetHeader ( "cookie" , "down_ip=1" ). Get (downloadUrl )
449
479
if err != nil {
450
480
return nil , err
451
481
}
@@ -494,6 +524,7 @@ func (d *LanZou) getFilesByShareUrl(shareID, pwd string, sharePageData string) (
494
524
for i := 0 ; i < 3 ; i ++ {
495
525
data , err = d .post (fmt .Sprint (baseUrl , "/ajax.php" ), func (req * resty.Request ) {
496
526
req .SetFormData (param )
527
+ req .SetHeader ("cookie" , "down_ip=1" )
497
528
if vs != "" {
498
529
req .SetCookie (& http.Cookie {
499
530
Name : "acw_sc__v2" ,
0 commit comments