[Python] urllibでトレースログを出力する
Python標準のurllibで、トレースログを確認する方法です。
送受信したデータの、HTTPヘッダの内容を確認する時に便利です。
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つの関数の違いが気になったので、まとめます。
関数の説明と、その使い分け方についても、解説したいと思います。
0 件のコメント:
コメントを投稿