[Python] 3系でBasic認証付きのHTTPリクエストを発行する(urllib.request利用)
こんにちは、@yoheiMuneです。
Python3の
ライブラリとか使うほどでもない小さなプログラムであれば、上の実装が役立つなぁと思います。
21.6. urllib.request — URL を開くための拡張可能なライブラリ
最後になりますが本ブログでは、Python、PHP、サーバー、フロントエンド、インフラ、Swift、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!
Python3の
urllib.requestで、Basic認証付きのリクエストを発行する機会があって実装したので、それをブログに残しておきたいと思います。
注意
PythonのHTTP通信の実装方法は、2系と3系で大きく異なりますのでご注意ください。この記事ではPython3系について記述しています。urllib.requestを用いて、Basic認証付きのHTTPリクエストを発行する
さっそく本題ですが、以下のように実装します。
# HTTP通信を行うための標準ライブラリ
import urllib.request
# Base64を扱うための標準ライブラリ
import base64
# 送信先のURL
url = 'https://foo.bar.baz.yoheim.net/item/1'
# Basic認証の情報
user = 'user'
password = 'pass'
# Basic認証用の文字列を作成.
basic_user_and_pasword = base64.b64encode('{}:{}'.format(user, password).encode('utf-8'))
# Basic認証付きの、GETリクエストを作成する.
request = urllib.request.Request(url,
headers={"Authorization": "Basic " + basic_user_and_pasword.decode('utf-8')})
# 送信して、レスポンスを受け取る.
with urllib.request.urlopen(request) as res:
data = res.read()
ポイントは、Basic認証用のヘッダーを自身で作成するところです。ライブラリを使うと隠蔽されていて分かりませんが、自分で実装してみると仕組みもわかって面白いなーと思います。ライブラリとか使うほどでもない小さなプログラムであれば、上の実装が役立つなぁと思います。
参考情報
urllib.requestの公式ドキュメントは以下です。詳細はそちらをご確認ください。21.6. urllib.request — URL を開くための拡張可能なライブラリ
最後に
Pythonはちょくちょく仕事で使いますが、もっとノウハウを貯めて、実装にスピードを持たせたいなぁ。Pythonについてもたくさんブログを書きたいと思います。最後になりますが本ブログでは、Python、PHP、サーバー、フロントエンド、インフラ、Swift、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!






