PythonでHTTPプロキシを構築する方法

ハウツー, プロキシ, パイソン, 11月-1520225分で読める

一般人はプロキシサーバーの機能について漠然とした概念を持っているかもしれない。ほとんどの人は、プロキシサーバーは、プライバシーの取得や他の国からのNetflixコンテンツのブロックを解除することを連想する。しかし、プロキシサーバーはもっと多くのことを行い、ビジネスにとって不可欠であるため、現実はかなり異なります。プロキシサーバーは中間的な

目次

一般人はプロキシサーバーの機能について漠然とした概念を持っているかもしれない。ほとんどの人は、プロキシサーバーは、プライバシーの取得や他の国からのNetflixコンテンツのブロックを解除することを連想する。しかし、プロキシサーバーはもっと多くのことを行い、ビジネスにとって不可欠であるため、現実はかなり異なります。

プロキシサーバーは、リクエストを送信するクライアントとリクエストを受信するサーバーの間にある中間的な仕組みと考えることができる。プロキシサーバーは、代わりに公開される独自のIPアドレスを持っている。プロキシIPアドレスは、カスタマーエクスペリエンスやセキュリティに関連する多くの重要なビジネス機能に使用することができます。その他の利点

なぜプロキシを使う必要があるのか?

すべての企業は、プロキシを使用する5つの重要な企業理由を知っておく必要があります。

機密タスクの匿名実行

プロキシはウェブトラフィックを匿名化する機能でよく知られている。しかし、ほとんどの人はビジネス業界におけるその重要性を理解していない。プロキシサーバーによって、セキュリティ担当者や記者は自分自身、会社、情報源、顧客、パートナーを守ることができる。

また、開発や現在の研究、その他の企業活動を保護するためにプロキシを使用することもできます。あなたの会社がプロキシを使用し、潜在的なスパイがウェブトラフィックを追跡して、あなたのビジネスが何を開発しているかを判断するとします。その場合、あなたの従業員を簡単に追跡することはできません。

企業と組織のセキュリティ向上

データ漏洩が社会的イメージと金銭的損失の両面で大きな代償を伴うことはご存知の通りだ。そのため、企業はハッカーについて心配している。しかし、プロキシはデータ漏洩の可能性を減らすことができるので、あなたを助けることができます。プロキシサーバーは、サーバーと外部トラフィックの間に追加のセキュリティ層を追加します。プロキシサーバーはまた、インターネットに面し、ネットワーク外のコンピュータからのリクエストを中継するバッファとしても機能します。

ハッカーがあなたのプロキシサーバーにアクセスできたとしても、データが保存されているウェブソフトウェアを実行するサーバーに到達するのは困難である。

従業員のインターネット利用の管理

データ漏洩が社会的イメージと金銭的損失の両面で大きな代償を伴うことはご存知の通りだ。そのため、企業はハッカーについて心配している。しかし、プロキシはデータ漏洩の可能性を減らすことができるので、あなたを助けることができます。プロキシサーバーは、サーバーと外部トラフィックの間に追加のセキュリティ層を追加します。プロキシサーバーはまた、インターネットに面し、ネットワーク外のコンピュータからのリクエストを中継するバッファとしても機能します。

ハッカーがあなたのプロキシサーバーにアクセスできたとしても、データが保存されているウェブソフトウェアを実行するサーバーに到達するのは困難である。

帯域幅の節約と高速化の実現

プロキシサーバーはバックグラウンドで大量の仕事をこなすため、インターネットの速度が遅くなると思い込んでいる人がいる。しかし、それは必ずしも真実ではありません。プロキシサーバーは、帯域幅を節約し、速度を向上させるために使用することができます:

  • 複数のユーザーがアクセスするウェブページやファイルのキャッシュ
  • トラフィックの圧縮
  • ウェブサイトから広告を取り除く

PythonでHTTPプロキシを構築する

PythonでHTTPプロキシを構築するには、以下の手順に従う必要がある。

ライブラリのインポート

以下の必要なライブラリをインポートする必要があります。

  • シンプルな_http_server
  • SimpleWebSocketServer
  • ウルリブ
fromsimple_websocket_serverimportWebSocketServer, WebSocket
importsimple_http_server
インポートurllib

urllib モジュールは対象のウェブページをフェッチする。一方、simple_http_server と SimpleWebSocketServer は入ってくるリクエストをリッスンする。

ポートを次のように初期化することができる:

ポート = 9097

リクエストの取得

プロキシを作成するために SimpleHTTPRequestHandler を継承することができます。すべての GET リクエストに対して呼ばれる do_GET 関数を定義することができます。

class MyProxy(simple_http_server.SimpleHTTPRequestHandler):
  def do_GET(self):
   	url=self.path[1:]
   	self.send_response(200)
   	self.end_headers()
    self.copyfile(urllib.urlopen(url),self.wfile)

URLスラッシュの削除

上記のコード行では、URLの先頭にスラッシュ(/)が付いています。このスラッシュを削除するには、以下のコード行を使用します。

url=self.path[1:]

ヘッダーの送信

ブラウザがHTTPステータスコード200でフェッチ成功を報告するために、ヘッダーを送信する必要があるからだ。URLの取得にはurllibライブラリを使用できます。

以下のコードでは、copyfile関数を使ってURLをブラウザに書き戻している。

self.send_response(200)
self.end_headers()
self.copyfile(urllib.urlopen(url),self.wfile)

TCPの使用

以下のコードに示すように、割り込み処理にForkingTCPServerモードを使うことができる。

httpd = WebSocketServer.ForkingTCPServer(('', PORT), MyProxy)
httpd.serve_forever()

コード全体はこうだ:

fromsimple_websocket_serverimportWebSocketServer, WebSocket
importsimple_http_server
インポートurllib
PORT =9097
MyProxy(simple_http_server.SimpleHTTPRequestHandler):
	def do_GET(self):
	   url=self.path[1:]
	   self.send_response(200)
	   self.end_headers()
    	self.copyfile(urllib.urlopen(url), self.wfile)
httpd = WebSocketServer.ForkingTCPServer(('', PORT), MyProxy)
print("Now serving at"str(PORT))
httpd.serve_forever()

どのプロキシを使うべきか?

というような、ビジネスにすべてのメリットを提供する唯一のタイプのプロキシがあると思うかもしれない:

  • データ漏洩の防止
  • 競争力のある価格設定
  • ソーシャルメディアで貴重なデータを収集する
  • 効果的なSEO戦略の構築

実際には、利用可能なプロキシには多くの種類があり、どのプロキシを使用するかは要件や使用ケースによって異なります。

以下に最も一般的なプロキシの種類を示す。

データセンター・プロキシ

データセンター・プロキシは、世界中の企業で使用されている最も一般的なプロキシです。データセンターはこれらのプロキシを製造・管理しています。これらのプロキシは安価で簡単に入手できるため、システムのセキュリティを向上させる必要がある場合に使用することができます。しかし、ボットのような活動を連想させるため、使用を禁止しているウェブサイトもある。

レジデンシャル・プロキシ

レジデンシャル・プロキシは、物理的な住居に関連付けられ、インターネット・サービス・プロバイダー(ISP)が提供する実在の人物のIPアドレスを使用する。これを使用してウェブサイトに接続すると、日常的なユーザーのように見えます。そのため、検知されたり禁止されたりする可能性は低くなる。住宅用プロキシを使用して大量のウェブデータをスクレイピングし、匿名性とセキュリティを向上させることができます。

結論

これまで、ビジネスには高品質のプロキシを使うべきだと述べてきた。なぜなら、無料のプロキシは一般に公開されており、ネットワーク速度を低下させながら多くの人々に利用されているからです。また、ハッカーはこれらのユーザーのIPアドレスをハッキングし、プラットフォームにアクセスします。さらに、ウェブサイトは、彼らのサイトからデータをスクレイピングしたい無料プロキシのIPアドレスを禁止する可能性があります。データセンターのプロキシを使用するのとは別に、プロキシのほとんどすべての利点を享受するために住宅プロキシを購入することができます。費用はかかりますが、あなたのビジネスにとって価値ある投資です。