web-dev-qa-db-ja.com

認証付きのhttpsからファイルをダウンロードします

WebサーバーからファイルをダウンロードするPython 2.6スクリプトがあります。このスクリプトにユーザー名とパスワード(ファイルをフェッチする前の認証用)を渡してもらいたいので、それらを一部として渡します。次のようにURLの:

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

ただし、この場合、構文エラーが発生します。これはそれについて行く正しい方法ですか?私はPythonとコーディング全般にかなり慣れていません。誰か助けてくれませんか?ありがとう!

6
user3262537

基本認証を通過しようとしていると思います。この場合、次のように処理できます。

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")
6
Arton Dorneles

requests ライブラリを使用できる場合、それはめちゃくちゃ簡単です。可能であれば、それを使用することを強くお勧めします。

import requests

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

リクエストライブラリを使用して、.netrcファイル内に資格情報を配置するだけです。

ライブラリはそこからそれらをロードし、セキュリティの心配なしに選択したSCMにコードをコミットすることができます。

0
sorin