【问题标题】:Downloading file from redirection link python从重定向链接python下载文件
【发布时间】:2018-02-18 16:05:21
【问题描述】:

我正在尝试制作一个简单的程序来帮助解决生根过程中令人困惑的部分。

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

我正在使用这个 python 代码

import request
url = tiny.cc/latestmagisk

r = request.get(url)
r.content

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

我需要这个来处理缩短的 URL 是否有办法做到这一点?

【问题讨论】:

    标签: python redirect nginx download python-3.6


    【解决方案1】:

    不需要导入请求库
    您需要做的就是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文件..

    【讨论】:

    • 谢谢。但我的意思是图片中的链接 tiny.cc/latestmagisk。它是一个 URL 缩短器,我找不到发布缩短 URL 的方法。有没有办法让 tiny.cc/latestmagisk 工作?编辑:我编辑了我的问题,现在我可以发布缩短的 URL。如果您可以再看一遍,那将非常有帮助。谢谢
    【解决方案2】:

    与其他答案相反,您确实应该为此使用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 都不允许简单的 requests.get; 403 禁止可能是由于 User-Agent 或其他内在标头,因为此方法适用于 bit.ly 和其他短链接生成器。您可能需要伪造标题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 2019-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多