如何在Python中获取请求头URL值?APKMirror下载重定向问题解决
解决APKMirror下载APK时curl无法跟随直链的问题
问题分析
APKMirror的下载页面不会直接重定向到APK直链,而是需要携带正确的请求头和Cookie触发download.php的真实下载跳转,单纯用-L参数无法满足站点的验证要求。
解决方法
1. 使用curl携带必要请求头和Cookie
先在浏览器开发者工具中复制download.php请求的完整请求头(包括User-Agent、Cookie、Referer),再用curl模拟:
curl -L \ -H "User-Agent: 你的浏览器User-Agent" \ -H "Referer: https://www.apkmirror.com/apk/google-inc/youtube/youtube-19-16-39-release/youtube-19-16-39-android-apk-download/" \ -H "Cookie: 从浏览器复制的Cookie内容" \ "https://www.apkmirror.com/apk/google-inc/youtube/youtube-19-16-39-release/youtube-19-16-39-android-apk-download/download/?key=15b5cb3061082b309a0c30f1d2e410704e909596&forcebaseapk=true" \ -o youtube.apk
- 注意:Cookie需要包含APKMirror的会话标识(比如
__cfduid、apkmirror_session这类字段),直接从浏览器请求头复制即可。 -o youtube.apk指定保存文件名,避免内容输出到控制台。
2. Python + requests模拟下载
用Python结合requests和BeautifulSoup,通过会话保持Cookie自动处理验证和跳转:
import requests from bs4 import BeautifulSoup headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } session = requests.Session() # 先访问下载页面获取会话Cookie和页面内容 download_page_url = "https://www.apkmirror.com/apk/google-inc/youtube/youtube-19-16-39-release/youtube-19-16-39-android-apk-download/" response = session.get(download_page_url, headers=headers) soup = BeautifulSoup(response.text, "html.parser") # 获取带key参数的下载链接 download_link = soup.find("a", {"class": "accent_color"})["href"] full_download_url = "https://www.apkmirror.com" + download_link # 触发下载并保存文件 response = session.get(full_download_url, headers=headers, allow_redirects=True) with open("youtube.apk", "wb") as f: f.write(response.content)
3. Selenium自动化下载
完全模拟浏览器行为,绕过站点验证:
from selenium import webdriver from selenium.webdriver.common.by import By import time options = webdriver.ChromeOptions() options.add_experimental_option("prefs", { "download.default_directory": "/你的本地下载路径", "download.prompt_for_download": False }) driver = webdriver.Chrome(options=options) driver.get("https://www.apkmirror.com/apk/google-inc/youtube/youtube-19-16-39-release/youtube-19-16-39-android-apk-download/") # 点击下载按钮(需根据页面实际元素调整选择器) download_button = driver.find_element(By.CSS_SELECTOR, "a.accent_color") download_button.click() # 等待下载完成 time.sleep(10) driver.quit()
- 注意:页面可能有广告弹窗,需先处理弹窗再点击下载按钮。
关键注意点
- 必须携带符合浏览器规范的
User-Agent,避免被识别为爬虫。 - Cookie是会话验证的核心,无Cookie的请求会被重定向回下载页面。
- 下载链接的
key参数有有效期,过期后需重新获取。
内容的提问来源于stack exchange,提问作者ali90i
相关产品推荐
相关产品推荐

