注目キーワード

【Python】requests でアクセスする際にheaderを設定する

Pythonには様々な種類のデータを扱うライブラリが揃っており、これまでもいろんなライブラリを紹介してきました。

こちらの記事では、前回紹介したrequestsというライブラリを用いて データにアクセスする際にヘッダーを設定する方法を説明し、使い方の例を見てみます。前回の記事もあわせて見て頂くと、分かりやすいかもしれません。

インストール

ライブラリをインストールするために、pip install requests を実行しておきます。

requests でアクセスするときにheaderを設定する

前回と前々回の記事で GET方式とPOST方式 を使ってアクセスする方法を解説しました。これらの方式でデータをアクセスする際、サーバーにプログラムからリクエストが送られているのですが、送られているデータの先頭にヘッダーが付与されていて、データ処理に必要な情報がやりとりされています。そのためこのパラメータを適切に設定することで、サーバーと正しく情報のやり取りができるようになっています。

まずはテスト環境を使ってヘッダーの設定がサーバーに正しく読み込まれているのか?を確認してみましょう。

テスト環境の準備

POST方式のテストに使ったサーバーの「Post Test Server V2」を引き続き利用します。アクセスして「New Random Toilet」のボタンを押して、適当にPOSTを投げることができる先を作成して、サンプルソースに利用して下さい。

サンプルソース

上で作った先にサンプルでPOST方式でアクセスし、ヘッダーを設定する方法を確認してみます。ヘッダーを設定する際は、dataに加えてheadersを与えます。

  • 最初にライブラリを読み込みます。
  • URLにアクセスします(postです)。
  • jsonライブラリを利用してデータと、次にヘッダーをそれぞれ与えます。

実行結果

実行した後に、投稿先のログページにアクセスします。前回、POSTでヘッダーを指定せずにアクセスした際のログは実はこのようになっていました(application/x-www-form-urlencoded)。

何も指定しなかった場合のヘッダーの例

一方で今回指定した場合では、application/jsonになっています。

ヘッダーでContent-Typeを設定した場合の例

このようにpythonのrequestsを使って設定したヘッダー、ここではContent-Typeの設定が、サーバー側に認識されていることが分かります。どういうContent-Typeを設定するか?はアクセスする先に依存するのですが、設定の反映ができることは確認できました。

User-Agentの設定を行うサンプルソース

他の例も見てみます。ヘッダーの中に「User-Agent」というブラウザの情報が書かれた部分があるので、これを設定してアクセスしてみましょう。

サンプルソースです。

2つのUser-Agentのサンプルの文字列を用意して(片方はコメントアウトしてあります)、ヘッダーに設定しています。

実行結果

プログラムを用いてアクセスし、サーバーでログを確認してみます。

Mac OS Xを設定した例です。

スポンサーリンク

こちらはiOSを指定した例です。

無事User-Agentが設定できることが分かりました。このようなヘッダーを設定することで、例えばrequestsでページにアクセスするときに、あたかもiOSから(またはMacから)アクセスしたように偽造できる場合があります。Webサイトのスクレイピングなどでデータを収集する際に、たまに必要になることがありますね。

ヘッダーの設定は重要で、例えば認証が必要なAPIなどでは、ヘッダーに認証情報を入れて呼び出すAPIなどもあり、サーバーに迷惑をかけないように適切に設定することが重要です。Webサーバーへアクセスする際には一度基本的なことやサーバーの注意点などを確認しつつ、必要な設定を入れたプログラムを実行して見てくださいね。