[英]How to download a file from password protected URL in python?
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)
This is the URL https://cloud.abc.co.uk/s/523aX3O8B5uOWlP which is password protected.这是受密码保护的 URL https://cloud.abc.co.uk/s/523aX3O8B5uOWlP 。 I have tried using urllib and base64 for authentication.
我尝试使用 urllib 和 base64 进行身份验证。 This gives mehttps://cloud.abc.co.uk/s/523aX3O8B5uOWlP/authenticate.
这给了我https://cloud.abc.co.uk/s/523aX3O8B5uOWlP/authenticate。 This URL redirects to https://cloud.abc.co.uk/s/523aX3O8B5uOWlP/download from where the file can be downloaded.
这个 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)
I want to download the file bypassing authentication credentials.我想绕过身份验证凭据下载文件。
I had a same problem several weeks ago with JSON file.几周前我在使用 JSON 文件时遇到了同样的问题。 Tried something like this.
尝试过这样的事情。 Hope it works for you as well.
希望它也适用于你。
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.