【问题标题】:How to download a file from password protected URL in python?如何从python中受密码保护的URL下载文件?
【发布时间】:2019-11-02 05:49:00
【问题描述】:
from urllib.request import Request, urlopen   
import base64  
import logging  
import urllib  
import urllib.request  
import requests  

def run(file_path,password):  
    if file_path:  
            try:  
                request = Request(file_path)  
                base64string = base64.b64encode('{}:{}'.format('', password).encode())  
                #input_file = tempfile.NamedTemporaryFile()  
                request.add_header("Authorization", "Basic %s" % base64string)  
                result = urlopen(request)  
                print (result)  
                ur = result.geturl()  
                a = ur.split("/")[:-1]   
                print (a)  
                ', '.join(a[0:])  
                url = '/'.join(a)  
                print (url)  
                b = ur + "/download"  
                filename = "myfile"   
                input_file = requests.get(b,filename)  
            except Exception as e:  
                print(e)  

l = run("https://cloud.abc.co.uk/s/523aX3O8B5uOWlP","test123")
print (l)

这是受密码保护的 URL https://cloud.abc.co.uk/s/523aX3O8B5uOWlP。 我尝试使用 urllib 和 base64 进行身份验证。 这给了我https://cloud.abc.co.uk/s/523aX3O8B5uOWlP/authenticate。 此 URL 重定向到 https://cloud.abc.co.uk/s/523aX3O8B5uOWlP/download,可以从该处下载文件。

request = Request(file_path)  
        base64string = base64.b64encode('{}{}'.format('',password).encode())   
        request.add_header("Authorization", "Basic %s" % base64string)  
        result = urlopen(request)  

我想绕过身份验证凭据下载文件。

【问题讨论】:

    标签: python python-requests urllib owncloud


    【解决方案1】:

    几周前我在使用 JSON 文件时遇到了同样的问题。尝试过这样的事情。希望它也适用于你。

    import urllib2
    url = "url"
    password_mgr = HTTPPasswordMgrWithDefaultRealm()
    password_mgr.add_password(None, url, 'username', 'password')
    handler = HTTPBasicAuthHandler(password_mgr)
    opener = build_opener(handler)
    response = opener.open(url)
    

    【讨论】:

    • 感谢您的回复。这给出了(cloud.abc.co.uk/s/523aX3O8B5uOWlP/authenticate)。让我向你解释一下这个问题。当我点击 cloud.abc.co.uk/s/523aX3O8B5uOWlP 这个链接重定向到 cloud.abc.co.uk/s/523aX3O8B5uOWlP/authenticate 我必须输入密码。成功验证密码后,它会重定向到(cloud.abc.co.uk/s/523aX3O8B5uOWlP),我可以从那里获得可以下载文件的实际链接。该链接是 cloud.abc.co.uk/s/523aX3O8B5uOWlP/download。我需要这个链接。仅需要密码即可对原始公共共享 URL 进行身份验证
    猜你喜欢
    • 1970-01-01
    • 2011-06-16
    • 2014-07-08
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 2014-04-18
    • 2021-09-28
    相关资源
    最近更新 更多