Pythonでソケットを使ったHTTPリクエストの送信方法

この記事では、Pythonを用いてソケットを使ってHTTPリクエストを送る方法を詳しく説明します。具体的なコード例とその解説、さらには実用的な応用例を含めています。ソケットプログラミングはネットワーク通信の基礎となるテクニックです。HTTPリクエストを送る場面はWebスクレイピングやAPIの利用など、多岐にわたります。

日程Fit。無料・登録不要。「いつ空いてる?」を、ひとつのリンクで。リンクを送って、○△×でかんたん日程調整。無料で日程を作る。
目次

基本的なHTTPリクエストの送信

PythonでHTTPリクエストをソケットを用いて送る場合、以下のステップを踏みます。

  • ソケットの作成
  • サーバーとの接続
  • HTTPリクエストの送信
  • レスポンスの受信と処理

コード例

以下は基本的なコード例です。

import socket

# ソケットオブジェクトを作成
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# サーバーと接続
s.connect(('www.google.com', 80))

# HTTPリクエストを送信
s.sendall(b'GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n')

# レスポンスを受信
data = s.recv(1024)
print(data.decode('utf-8'))

# ソケットを閉じる
s.close()

このコードでは、google.comに対してHTTP GETリクエストを送っています。そのレスポンスを受け取って出力しています。

応用例

例1: ヘッダー情報のカスタマイズ

ヘッダー情報を自分で定義したい場合は、以下のようにします。

import socket

# ソケットオブジェクトを作成
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# サーバーと接続
s.connect(('www.google.com', 80))

# カスタムヘッダーを設定
headers = 'GET / HTTP/1.1\r\n'
headers += 'Host: www.google.com\r\n'
headers += 'User-Agent: MyClient\r\n\r\n'

# HTTPリクエストを送信
s.sendall(headers.encode('utf-8'))

# レスポンスを受信
data = s.recv(1024)
print(data.decode('utf-8'))

# ソケットを閉じる
s.close()

この例では、User-Agentヘッダーを「MyClient」としてカスタマイズしています。

例2: POSTリクエストの送信

HTTP POSTリクエストを送る場合は、以下のようにします。

import socket

# ソケットオブジェクトを作成
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# サーバーと接続
s.connect(('www.example.com', 80))

# POSTデータとヘッダーを設定
post_data = 'key1=value1&key2=value2'
headers = 'POST /path HTTP/1.1\r\n'
headers += 'Host: www.example.com\r\n'
headers += f'Content-Length: {len(post_data)}\r\n'
headers += 'Content-Type: application/x-www-form-urlencoded\r\n\r\n'
headers += post_data

# HTTPリクエストを送信
s.sendall(headers.encode('utf-8'))

# レスポンスを受信
data = s.recv(1024)
print(data.decode('utf-8'))

# ソケットを閉じる
s.close()

この例では、example.comに対してPOSTリクエストを送っています。POSTデータは「key1=value1&key2=value2」としています。

まとめ

Pythonでソケットを用いてHTTPリクエストを送る基本的な方法とその応用例を紹介しました。これを機に、Pythonでより高度なネットワークプログラミングを行ってみてはいかがでしょうか。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次