[Python] urllibでトレースログを出力する

2018年12月15日土曜日

Python urllib

t f B! P L

[Python] urllibでトレースログを出力する

Python標準のurllibで、トレースログを確認する方法です。
送受信したデータの、HTTPヘッダの内容を確認する時に便利です。

Python URLLIB

wiresharkでは難しい、HTTPS通信のログも簡単に確認できます。

トレースログを出力するサンプルコード

以下のサンプルコードで、「トレースログ出力用の設定」となっている箇所を、アプリ起動時に1回だけ通します。
それ以外は、通常のurllibの使い方と同じです。

import urllib.request
import urllib.parse
import http.client

#トレースログ出力用の設定 (ここから)
http_logger = urllib.request.HTTPHandler(debuglevel=1)
opener = urllib.request.build_opener(
    urllib.request.HTTPHandler(debuglevel=1),
    urllib.request.HTTPSHandler(debuglevel=1))
urllib.request.install_opener(opener)
#トレースログ出力用の設定 (ここまで)

#あとは、通常のurllibの使い方と同じ
data = urllib.parse.urlencode({'form_param': 'value'}).encode('utf-8')
request = urllib.request.Request('https://www.example.com', data)
response = urllib.request.urlopen(request)
html = response.read()

上のサンプルを実行してみると、コンソールに送受信したHTTPヘッダの内容が表示されています。

send: b'POST / HTTP/1.1\r\nAccept-Encoding: identity\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 16\r\nHost: www.example.com\r\nUser-Agent: Python-urllib/3.7\r\nConnection: close\r\n\r\n'
send: b'form_param=value'
reply: 'HTTP/1.1 200 OK\r\n'
header: Accept-Ranges: bytes
header: Cache-Control: max-age=604800
header: Content-Type: text/html; charset=UTF-8
header: Date: Fri, 14 Dec 2018 00:11:53 GMT
header: Etag: "1541025663"
header: Expires: Fri, 21 Dec 2018 00:11:53 GMT
header: Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT
header: Server: EOS (vny006/0454)
header: Content-Length: 1270
header: Connection: close

関連記事

MacにPython3をインストールする! (サクッとインストールしたい人向け)

Mac環境に、Python3を簡単にインストールする方法を紹介しています。

Python3入門! 基礎をおさらい (変数/演算子/条件分岐/繰り返し)

1つの記事に、基本文法をまとめて書いているので、時間が空いて忘れてしまった場合でも、一気に復習出来るようになっています。よければ見てください。

Flaskでソースの変更を検知して、Webアプリを自動リロードする[Python Tips]

Flaskの開発で、ソースを更新したら、自動的にWebアプリをリロードする方法です。

Flaskで REST API開発する! 直ぐに実行できるサンプルコードで解説 【Python Tips】

Pythonの軽量Webフレームワークである、FlaskでREST APIを作るまでの流れを、紹介します。

Flask-RESTful を使って、REST APIを作る【Python Tips】

Flaskと、Flask-RESTfulを使って、REST APIを作ります。
Flask-RESTfulを使うと、オブジェクト思考な感じで、REST APIが作れます。

Pythonで小数点の四捨五入/切り捨て/切り上げを行う

Pythonのdecimalモジュールを使って、小数点の丸めを行う方法です。

pipコマンドまとめ! 忘れても思い出せばいい! 【Python TIPS】

よく使うpipコマンドをまとめました。

Pythonで正規表現を使って数値/英字チェックを実装する (コピペ用)

数値/半角英字などのチェック処理を、Pythonの正規表現を使って実装します。
コピペで簡単に使えるようになっています。

[SQLAlchemy] one() / first()の違いと使い分け

PythonのSQLAlchemyで、1件のレコードを取得する関数に、one()とfirst()関数の2つがある。
この2つの関数の違いが気になったので、まとめます。
関数の説明と、その使い分け方についても、解説したいと思います。

スポンサーリンク

QooQ