diff --git a/.github/workflows/release_docker.yml b/.github/workflows/release_docker.yml index 7cd05549..23969795 100644 --- a/.github/workflows/release_docker.yml +++ b/.github/workflows/release_docker.yml @@ -3,9 +3,10 @@ name: release_docker on: push: tags: - - 'v*' + - "v*" branches: - main + - feat/123pan pull_request: branches: - main @@ -15,11 +16,11 @@ concurrency: cancel-in-progress: true env: - REGISTRY: 'xhofe/alist' - REGISTRY_USERNAME: 'xhofe' + REGISTRY: "alliot/alist" + REGISTRY_USERNAME: "alliot" REGISTRY_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} - ARTIFACT_NAME: 'binaries_docker_release' - RELEASE_PLATFORMS: 'linux/amd64,linux/arm64,linux/arm/v7,linux/386,linux/arm/v6,linux/s390x,linux/ppc64le,linux/riscv64' + ARTIFACT_NAME: "binaries_docker_release" + RELEASE_PLATFORMS: "linux/amd64,linux/arm64" IMAGE_PUSH: ${{ github.event_name == 'push' }} IMAGE_IS_PROD: ${{ github.ref_type == 'tag' }} IMAGE_TAGS_BETA: | @@ -39,7 +40,7 @@ jobs: - uses: actions/setup-go@v5 with: - go-version: 'stable' + go-version: "stable" - name: Cache Musl id: cache-musl @@ -98,7 +99,7 @@ jobs: - uses: actions/download-artifact@v4 with: name: ${{ env.ARTIFACT_NAME }} - path: 'build/' + path: "build/" - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -134,4 +135,4 @@ jobs: build-args: ${{ matrix.build_arg }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - platforms: ${{ env.RELEASE_PLATFORMS }} \ No newline at end of file + platforms: ${{ env.RELEASE_PLATFORMS }} diff --git a/build.sh b/build.sh index 2dee8e20..de593374 100644 --- a/build.sh +++ b/build.sh @@ -113,7 +113,7 @@ BuildDockerMultiplatform() { docker_lflags="--extldflags '-static -fpic' $ldflags" export CGO_ENABLED=1 - OS_ARCHES=(linux-amd64 linux-arm64 linux-386 linux-s390x linux-riscv64 linux-ppc64le) + OS_ARCHES=(linux-amd64 linux-arm64) CGO_ARGS=(x86_64-linux-musl-gcc aarch64-linux-musl-gcc i486-linux-musl-gcc s390x-linux-musl-gcc riscv64-linux-musl-gcc powerpc64le-linux-musl-gcc) for i in "${!OS_ARCHES[@]}"; do os_arch=${OS_ARCHES[$i]} diff --git a/drivers/123/util.go b/drivers/123/util.go index 7e5a2397..ae2ec5da 100644 --- a/drivers/123/util.go +++ b/drivers/123/util.go @@ -194,19 +194,67 @@ func (d *Pan123) login() error { // return &authKey, nil //} +// 初始化随机数种子 +func init() { + rand.Seed(time.Now().UnixNano()) +} + +// 生成随机HTTP头函数 +func generateRandomHeaders() (map[string]string, error) { + // 定义操作系统和版本 + deviceOS := []struct { + brand string + os string + versions []string + }{ + {"Apple", "iOS", []string{"12.0", "13.4", "14.0", "15.0"}}, + {"Xiaomi", "Android", []string{"13.0.3", "14.0.0", "14.0.5"}}, + {"Samsung", "Android", []string{"13.0.3", "14.0.0", "14.0.5"}}, + {"Google", "Android", []string{"13.0.3", "14.0.0", "14.0.5"}}, + {"Oneplus", "Android", []string{"13.0.3", "14.0.0", "14.0.5"}}, + {"Vivo", "Android", []string{"13.0.3", "14.0.0", "14.0.5"}}, + {"Oppo", "Android", []string{"13.0.3", "14.0.0", "14.0.5"}}, + } + + // 定义应用版本 + appXVersions := []string{"2.4.7", "2.5.0", "2.5.2", "2.5.3", "2.5.4", "2.5.5"} + appVersions := []string{"62", "76", "77", "78"} + + // 随机选择应用版本 + appXVer := appXVersions[rand.Intn(len(appXVersions))] + appVer := appVersions[rand.Intn(len(appVersions))] + + // 随机选择设备品牌和操作系统 + selectedDevice := deviceOS[rand.Intn(len(deviceOS))] + osVersion := selectedDevice.versions[rand.Intn(len(selectedDevice.versions))] + + // 生成 User-Agent 字符串 + userAgent := fmt.Sprintf("123pan/v%s (%s_%s;%s)", appXVer, selectedDevice.os, osVersion, selectedDevice.brand) + + // 返回 HTTP 请求头 + headers := map[string]string{ + "origin": "https://www.123pan.com", + "referer": "https://www.123pan.com/", + "user-agent": userAgent, + "app-version": appVer, + "platform": strings.ToLower(selectedDevice.os), + "x-app-version": appXVer, + } + + return headers, nil +} + + func (d *Pan123) Request(url string, method string, callback base.ReqCallback, resp interface{}) ([]byte, error) { isRetry := false do: req := base.RestyClient.R() - req.SetHeaders(map[string]string{ - "origin": "https://www.123pan.com", - "referer": "https://www.123pan.com/", - "authorization": "Bearer " + d.AccessToken, - "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) alist-client", - "platform": "web", - "app-version": "3", - //"user-agent": base.UserAgent, - }) + headers, err := generateRandomHeaders() + if err != nil { + return nil, err + } + headers["authorization"] = "Bearer " + d.AccessToken + req.SetHeaders(headers) if callback != nil { callback(req) }