diff --git a/drivers/lanzou/help.go b/drivers/lanzou/help.go index f2599b283..e702ebcac 100644 --- a/drivers/lanzou/help.go +++ b/drivers/lanzou/help.go @@ -170,23 +170,17 @@ var findKVReg = regexp.MustCompile(`'(.+?)':('?([^' },]*)'?)`) // 拆分kv // 根据key查询js变量 func findJSVarFunc(key, data string) string { - var values []string - if key != "sasign" { - values = regexp.MustCompile(`var ` + key + `\s*=\s*['"]?(.+?)['"]?;`).FindStringSubmatch(data) - } else { - matches := regexp.MustCompile(`var `+key+`\s*=\s*['"]?(.+?)['"]?;`).FindAllStringSubmatch(data, -1) - if len(matches) == 3 { - values = matches[1] - } else { - if len(matches) > 0 { - values = matches[0] - } - } - } - if len(values) == 0 { + re := regexp.MustCompile(`var\s+` + regexp.QuoteMeta(key) + `\s*=\s*['"]?([^'"]*)['"]?\s*;`) + matches := re.FindAllStringSubmatch(data, -1) + if len(matches) == 0 { return "" } - return values[1] + for i := len(matches) - 1; i >= 0; i-- { + if matches[i][1] != "" { + return matches[i][1] + } + } + return matches[len(matches)-1][1] } var findFunction = regexp.MustCompile(`(?ims)^function[^{]+`) diff --git a/drivers/lanzou/util.go b/drivers/lanzou/util.go index b0545bbd5..22ea45146 100644 --- a/drivers/lanzou/util.go +++ b/drivers/lanzou/util.go @@ -313,7 +313,7 @@ var findSubFolderReg = regexp.MustCompile(`(?i)(?:folderlink|mbxfolder).+href="/ var findDownPageParamReg = regexp.MustCompile(` 1 { - fileID = fileIDs[1] - } else { + matches := findFileIDReg.FindStringSubmatch(sharePageData) + if len(matches) < 2 { return nil, fmt.Errorf("not find file id") } + ajaxUrl := d.ShareUrl + matches[0][1:len(matches[0])-1] var resp FileShareInfoAndUrlResp[string] - _, err = d.post(d.ShareUrl+"/ajaxm.php?file="+fileID, func(req *resty.Request) { req.SetFormData(param) }, &resp) + _, err = d.post(ajaxUrl, func(req *resty.Request) { req.SetFormData(param) }, &resp) if err != nil { return nil, err } @@ -444,15 +442,13 @@ func (d *LanZou) getFilesByShareUrl(shareID, pwd string, sharePageData string) ( return nil, err } - fileIDs := findFileIDReg.FindStringSubmatch(nextPageData) - var fileID string - if len(fileIDs) > 1 { - fileID = fileIDs[1] - } else { + matches := findFileIDReg.FindStringSubmatch(nextPageData) + if len(matches) < 2 { return nil, fmt.Errorf("not find file id") } + ajaxUrl := d.ShareUrl + matches[0][1:len(matches[0])-1] var resp FileShareInfoAndUrlResp[int] - _, err = d.post(d.ShareUrl+"/ajaxm.php?file="+fileID, func(req *resty.Request) { req.SetFormData(param) }, &resp) + _, err = d.post(ajaxUrl, func(req *resty.Request) { req.SetFormData(param) }, &resp) if err != nil { return nil, err }