使用身份验证从 https 下载文件

新手上路,请多包涵

我有一个从 Web 服务器下载文件的 Python 2.6 脚本。我希望此脚本传递用户名和密码(用于在获取文件之前进行身份验证),并且我将它们作为 url 的一部分传递,如下所示:

 import urllib2
response = urllib2.urlopen("http://'user1':'password'@server_name/file")

但是,在这种情况下我遇到了语法错误。这是正确的方法吗?我对 Python 和一般编码还很陌生。有人可以帮帮我吗?谢谢!

原文由 user3262537 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 463
2 个回答

我想您正在尝试通过基本身份验证。在这种情况下,您可以这样处理:

 import urllib2

username = 'user1'
password = '123456'

#This should be the base url you wanted to access.
baseurl = 'http://server_name.com'

#Create a password manager
manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
manager.add_password(None, baseurl, username, password)

#Create an authentication handler using the password manager
auth = urllib2.HTTPBasicAuthHandler(manager)

#Create an opener that will replace the default urlopen method on further calls
opener = urllib2.build_opener(auth)
urllib2.install_opener(opener)

#Here you should access the full url you wanted to open
response = urllib2.urlopen(baseurl + "/file")

原文由 Arton Dorneles 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您可以使用 请求 库,那将非常容易。如果可能的话,我强烈建议使用它:

 import requests

url = 'http://somewebsite.org'
user, password = 'bob', 'I love cats'
resp = requests.get(url, auth=(user, password))

原文由 willnx 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题