从重定向链接python下载文件

时间:2017-09-10 07:32:09

标签: python redirect nginx download python-3.6

我正在尝试制作一个简单的程序,以帮助解决生根的混乱部分。

我需要从tiny.cc/latestmagisk下载文件

我正在使用这个python代码

import request
url = tiny.cc/latestmagisk

r = request.get(url)
r.content

它返回的内容通常是403 Forbidden for nginx

我需要这个才能使用缩短的URL来实现这一目标吗?

2 个答案:

答案 0 :(得分:0)

没有必要导入请求lib
您需要做的就是import ssl, urllib并在发送请求时将ssl._create_unverified_context()作为上下文传递给服务器!
你的代码应该是这样的:

import ssl, urllib

certcontext = ssl._create_unverified_context()
f = open('image.jpg','wb') #creating placeholder

#creating image from url and saving it as `image.jpg`!
f.write(urllib.urlopen("https://i.stack.imgur.com/IKh7E.png", context=certcontext).read())

f.close()


注意:它会将图片保存为image.jpg个文件..

答案 1 :(得分:0)

与其他答案相反,您确实应该使用requests,因为requests可以更好地支持重定向。

通过请求重定向获取页面:

r=requests.get(url, allow_redirects=True)

通过重定向下载文件:

r = requests.get(url, allow_redirects=True, stream=True)
with open(filename, 'wb') as f:
    for chunk in r.iter_content(chunk_size=1024): 
        if chunk: f.write(chunk)

但是,在这种情况下,tiny.cc或XDA不允许简单的request.get; 403禁止可能是由于User-Agent或其他内在头,因为这种方法适用于bit.ly和其他短链接生成器。您可能需要伪造标题。