You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何绕过AMD网站检测,用Python requests下载GPU驱动?

问题描述

我尝试使用Python requests访问AMD显卡驱动的下载链接,但网站检测到我未使用浏览器,将我重定向至论坛页面。我已尝试在请求头中嵌入网站Cookie但无效,以下是我的代码:

from requests import get
from bs4 import BeautifulSoup

header = {
    "user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Mobile Safari/537.36"}

url = 'https://www.amd.com/fr/support/graphics/amd-radeon-6000-series/amd-radeon-6900-series/amd-radeon-rx-6900-xt'
req = get(url, headers=header)
latestlink = BeautifulSoup(req.text, 'html.parser').find("a", {"class":"btn-transparent-black"})['href']

for key in req.headers:
    header[key]= req.headers[key]

dlpage = get(latestlink, headers=header).url
print(dlpage)   #Actually the forum page

请问如何“欺骗”该系统以正常访问下载链接?

解决方案

AMD的反爬机制不止检查User-Agent和Cookie,还会验证请求完整性与会话状态,可尝试以下几种方法:

  • 使用会话保持连接:用requests.Session()代替直接调用get,它会自动维护Cookie和会话状态,模拟浏览器的持续连接逻辑:
from requests import Session
from bs4 import BeautifulSoup

session = Session()
# 补全浏览器常用请求头字段
session.headers.update({
    "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",
    "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
    "accept-language": "fr-FR,fr;q=0.5",
    "accept-encoding": "gzip, deflate, br",
    "connection": "keep-alive",
    "upgrade-insecure-requests": "1"
})

# 先访问驱动页面建立有效会话
url = 'https://www.amd.com/fr/support/graphics/amd-radeon-6000-series/amd-radeon-6900-series/amd-radeon-rx-6900-xt'
req = session.get(url)
latestlink = BeautifulSoup(req.text, 'html.parser').find("a", {"class":"btn-transparent-black"})['href']

# 基于已有会话请求下载链接
dl_response = session.get(latestlink, allow_redirects=True)
print(dl_response.url)
  • 补全完整请求头:你的初始请求头过于简略,浏览器发送的请求包含Accept、Accept-Language等多个字段,这些都是网站判断是否为真实浏览器的关键依据,上述代码已补充这类核心字段。

  • 模拟完整跳转流程:AMD的下载按钮链接通常是中间跳转页,需要先访问该页面让服务器生成有效下载会话,再获取最终的真实下载地址。

  • 直接模拟浏览器操作:如果上述方法仍无效,可使用selenium或playwright直接模拟真实浏览器行为,彻底绕过反爬检测,示例代码(playwright):

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto('https://www.amd.com/fr/support/graphics/amd-radeon-6000-series/amd-radeon-6900-series/amd-radeon-rx-6900-xt')
    # 定位并点击下载按钮
    download_btn = page.locator('a.btn-transparent-black')
    download_btn.click()
    # 等待页面跳转完成后获取地址
    page.wait_for_load_state()
    print(page.url)
    browser.close()

注意:不要频繁发起请求,避免被网站封禁IP,遵守网站的robots协议。

内容的提问来源于stack exchange,提问作者user19428688

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:25:15