Pythonのソケットモジュールを使用して、かなり基本的なポーリングプロキシWebサーバーを作成しました。プロキシについては、ソケットのrecv()関数を使用して簡単なreadline()を作成しました。
これは次のようになります。
def readline(socket):
buffer = ''
char = socket.recv(1)
while char != '\n' and char != '':
buffer += char
char = socket.recv(1)
if char == '':
buffer = ''
else:
buffer += '\n'
return buffer
私の理解では、recv()が空の文字列を返す場合、これはソケットエラーがあったか、一方の側が接続を閉じたことを意味します。したがって、その場合、空の文字列をプロキシに返し、readline()が失敗したことを通知します。 。
プロキシを実行すると、youtube.comやyahoo.comなどのサイトにアクセスできますが、www.google.comにアクセスしようとすると、readline関数は常に最初のreadlineに空の文字列を返します(リクエスト行を読み取るため) HTTPリクエストで)。
何か案は?
編集: 申し訳ありませんが、私は不明確だったと思います。アドレスバーに「 http://www.google.com/」と入力すると、MozillaFirefoxクライアントからプロキシサーバーに送信されるリクエストを待っています。リクエストをリモートサーバーに転送してレスポンスを返す部分にさえ到達していません。