Я получаю ошибку 403 при попытке загрузить файл из облачного фронта с помощью python. Мой код показан ниже:
import requests
import shutil
headers = {
'authority': 'd2mgevdyeotxc9.cloudfront.net',
'origin': 'https://www.djcity.com',
'upgrade-insecure-requests': '0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
'sec-fetch-mode': 'navigate',
'sec-fetch-user': '?1',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'sec-fetch-site': 'cross-site',
'referer': 'https://www.djcity.com/digital/team-salut-wagon----67677.htm',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-AU,en-GB;q=0.9,en-US;q=0.8,en;q=0.7',
}
url = 'https://d2mgevdyeotxc9.cloudfront.net/6/7/6/7/7/zohujeaftuoduhba.mp3?response-content-disposition=attachment%3bfilename%3d%22Team%2520Salut%2520-%2520Wagon%2520%28Intro%29.mp3%22%3bfilename%2a%3dUTF-8%27%27Team%2520Salut%2520-%2520Wagon%2520%28Intro%29.mp3&Expires=1570451804&Signature=RPS7J02WY~eHDGYQHHSel9v~bpRolXl~WfgZjO21BrFhLuQQGkBSKkViD~-~K9DGPxmK0yj6-3zVrjrj1nLDMTelKQcbGk8tqyTBgbyI8NGMI9neR~wdtydKedxFp0a3YRHoM03boPFqwKKnKl5PcVxle1tCoXODydUq6Uj-iFxfYfpj10V0oJCa1Kv6SqWrrh1AGnW9CZOSPTlokjWzH6QS7DzBPN-0JacZDkLtG7wnnpcAT9Woj6h3YkdqMlfPpugxauUMXPxFg9sao-IG0BI4SyLeKCzZbJAqwAJruDoVZ1lKOwzgruDkCNPYERfpUytiOMdnbboL9lro4rvymg__&Key-Pair-Id=APKAJLJPFMSLJDIGQDHA'
with requests.get(url, stream=True) as r:
with open('track1.mp3', 'wb') as f:
shutil.copyfileobj(r.raw, f)
Я получаю следующие заголовки ответа:
'Content-Type': 'text/html',
'Content-Length': '228',
'Connection': 'keep-alive',
'Date': 'Thu, 03 Oct 2019 19:00:44 GMT',
'Last-Modified': 'Mon, 25 Sep 2017 19:02:17 GMT',
'ETag': '53954bb03f2f3597aa5025deb69ca9b4',
'Accept-Ranges': 'bytes',
'Server': 'AmazonS3',
'X-Cache': 'Error from cloudfront',
'Via': '1.1 934dd0fb722aa582f1b4a3cdae35b12d.cloudfront.net (CloudFront)',
'X-Amz-Cf-Pop': 'SIN2-C1',
'X-Amz-Cf-Id': '4irBaWV9o-9_kQN0bNHFJydrIiuZxtVLZ36Oc5vDXX1AE76iTAbDww=='
Например, заголовок успешного ответа выглядит примерно так:
'accept-ranges': 'bytes',
'content-disposition': 'attachment;filename="Carisma%20-%20Sample.mp3";filename*=UTF-8''Carisma%20-%20Sample.mp3',
'content-length': '7805066',
'content-type': 'audio/mpeg',
'date': 'Tue, 08 Oct 2019 00:01:06 GMT',
'etag': '83244899c9910bcf0f10f5065293b709',
'last-modified': 'Thu, 03 Oct 2019 01:03:52 GMT',
'server': 'AmazonS3',
'status': '200',
'via': '1.1 a84eb604396158af577c875ac569048a.cloudfront.net (CloudFront)',
'x-amz-cf-id': 'one65QPSUx5IB0_JMtinKzLles7vSchJXSz7ddx9auSPmbtqJ0Doug==',
'x-amz-cf-pop': 'SIN2-C1',
'x-cache': 'Miss from cloudfront'
Я не уверен, почему он не работает, поскольку анализ сети показывает, что я отправил все необходимые заголовки. Как я могу заставить работать такие запросы?
Содержание ответа похоже на перенаправление: b'<html><head><meta http-equiv="refresh" content="0;URL=http://www.djcity.com/digital/record-pool.aspx?m=3"><script>window.location.replace("http://www.djcity.com/digital/record-pool.aspx?m=3");</script></head><body></body></html>'