Basic認証をかけて制作途中のWEBサイトをPythonでクロールする場面があったので、urllib3を使っている場合のBasic認証の通し方のメモ。

BASIC認証がかかっていないWEBサイトをクロールする際は下記のようになると思う。

import urllib3
http = urllib3.PoolManager()
url = 'https://www.exapmle.com'
response = http.request('GET', url)

ただしWEBサイトにBASIC認証がかかっている場合、下記のようにしてheaderに認証情報を追加する。

import urllib3
http = urllib3.PoolManager()
url = 'https://www.exapmle.com'
headers = urllib3.util.make_headers(basic_auth='basic_user:basic_pass')
response = http.request('GET', url, headers=headers)

`basic_user`と`basic_pass`にそれぞれBASIC認証のユーザー名とパスワードを記載する。

変数`response`にはオブジェクトが格納されているので、ちゃんと取得できているか確認してみる。

$ print(response)
<urllib3.response.HTTPResponse object at 0x104122d30>

OK!
これでBASIC認証がかかったWEBサイトもクロールできる。