2018/10/31更新

[Python] 3系でBasic認証付きのHTTPリクエストを発行する(urllib.request利用)

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
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、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSTwitterをフォローして貰えたら嬉しいです ^ ^

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。