我正在尝试制作一个简单的程序,以帮助解决生根的混乱部分。
我需要从tiny.cc/latestmagisk下载文件
我正在使用这个python代码
import request
url = tiny.cc/latestmagisk
r = request.get(url)
r.content
它返回的内容通常是403 Forbidden for nginx
我需要这个才能使用缩短的URL来实现这一目标吗?
答案 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和其他短链接生成器。您可能需要伪造标题。