Windows 10环境下如何用脚本获取下载按钮的最新文件下载链接
获取Apkpure动态下载链接的脚本实现
核心原理
访问https://d.apkpure.com/b/APK/{包名}?version=latest时,服务器返回的HTML页面中包含临时有效的真实下载链接。我们需要模拟浏览器请求头获取页面内容,再从HTML中提取出这个动态链接。
1. Bash + curl 实现
# 替换成目标APP包名 PACKAGE_NAME="org.telegram.messenger" BASE_URL="https://d.apkpure.com/b/APK/${PACKAGE_NAME}?version=latest" # 模拟浏览器请求头获取页面,提取真实下载链接 DOWNLOAD_URL=$(curl -s -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" "$BASE_URL" | grep -o 'https://[^"]*\.apk' | head -n 1) # 验证链接并下载 if [ -n "$DOWNLOAD_URL" ]; then echo "获取到下载链接: $DOWNLOAD_URL" curl -O -J -L -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" "$DOWNLOAD_URL" else echo "无法获取有效下载链接" fi
2. PowerShell 实现
# 替换成目标APP包名 $packageName = "org.telegram.messenger" $baseUrl = "https://d.apkpure.com/b/APK/$packageName`?version=latest" # 设置浏览器请求头 $headers = @{ "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } # 获取页面内容并提取下载链接 $pageContent = Invoke-WebRequest -Uri $baseUrl -Headers $headers -UseBasicParsing | Select-Object -ExpandProperty Content $downloadUrl = [regex]::Match($pageContent, 'https://[^"]*\.apk').Value # 下载文件 if ($downloadUrl) { Write-Host "获取到下载链接: $downloadUrl" Invoke-WebRequest -Uri $downloadUrl -Headers $headers -OutFile "$packageName.apk" } else { Write-Host "无法获取有效下载链接" }
3. Python 实现
import requests import re # 目标APP包名 package_name = "org.telegram.messenger" base_url = f"https://d.apkpure.com/b/APK/{package_name}?version=latest" # 模拟浏览器请求头 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } # 获取页面并提取链接 response = requests.get(base_url, headers=headers) download_url = re.search(r'https://[^"]*\.apk', response.text) if download_url: download_url = download_url.group() print(f"获取到下载链接: {download_url}") # 下载文件 apk_response = requests.get(download_url, headers=headers, stream=True) with open(f"{package_name}.apk", "wb") as f: for chunk in apk_response.iter_content(chunk_size=8192): f.write(chunk) print("下载完成") else: print("无法获取有效下载链接")
注意事项
- 必须添加User-Agent请求头,否则服务器会返回无效页面或拒绝请求
- 真实下载链接是临时的,每次请求都会生成新的,需每次先获取再下载
- 若后续Apkpure页面结构变化,可能需要调整正则表达式或提取逻辑
内容的提问来源于stack exchange,提问作者Hans-Martin Rottenschlager
相关产品推荐
相关产品推荐

