When I try to download a file online it doesn’t work for a particular site while it works for others. Why is this happening and what should I do about it?
I write the content of the dl request in my case https://drivers.amd.com/drivers/amd-software-adrenalin-edition-22.11.1-win10-win11-nov15.exe (warning: 500+ MB file) from this page: https://www.amd.com/fr/support/graphics/amd-radeon-6000-series/amd-radeon-6900-series/amd-radeon-rx-6900-xt
headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'} web = Session() web.headers.update(headers) def dl_btn(self): try: dl = web.get(self.link) #I use an old session that allowed me to retrieve a download link. file = dl.headers['Content-Disposition'].split('=')[1] file = filedialog.askdirectory() + '/' + file #Open file explorer to choose the download destination. open(file, "wb").write(dl.content) except: popen(f'start {self.link}') #It open a page that indicate me a wrong request...
Advertisement
Answer
If you read the error page, it tells you exactly what the problem is: they don’t allow downloads without a referer from their website. Therefore, your headers will need to include a Referer
key/value, and I assume a proper User-Agent
as well:
import requests from tkinter import filedialog referer = "https://www.amd.com/fr/support/graphics/amd-radeon-6000-series/amd-radeon-6900-series/amd-radeon-rx-6900-xt" file_to_dl = "https://drivers.amd.com/drivers/amd-software-adrenalin-edition-22.11.1-win10-win11-nov15.exe" user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36" headers = {"User-Agent": user_agent, "Referer": referer} r = requests.get(file_to_dl, headers=headers) # wait a while... file = file_to_dl.split("/")[-1] file_location = filedialog.askdirectory() + '/' + file open(file_location, "wb").write(r.content)