Python代理 - 从服务器接收http头

时间:2015-04-17 19:24:45

标签: python http proxy header http-headers

我正在使用Python构建代理服务器,我遇到了一个问题。 首先,我将向您展示我的代码的一部分,该代码显示来自客户端的接收数据:如果有来自客户端的数据,它会下载所请求网站的内容(通过使用urllib库)然后发送到客户端200 OK,内容长度和内容本身:

        data = currentSocket.recv(4096)
        if data == "":
            open_client_sockets.remove(currentSocket)
            print 'Conn is closed'
        else:

            dataSplit = data.split("\r\n")
            Host = HostFliter(dataSplit)
            print Host, " Host"
            if Host == "":
                break
            contentURL = urllib.urlopen(Host)
            content_to_send = contentURL.read()
            currentSocket.send("HTTP/1.1 200 OK\r\nContent-Length:"+str(len(content_to_send))+"\r\n\r\n"+str(content_to_send))
            contentURL.close()

**变量“Host”包含网站的网址。

现在提出问题: 我从哪里获取服务器的标头,然后将它们发送到客户端?

**我使用的库:socket,select,urllib。

**这是针对选择库的:

rlist, wlist, xlist = select.select([serverSocket] + open_client_sockets, open_client_sockets, [])

1 个答案:

答案 0 :(得分:0)

HTTP响应语法如下

  

HTTP / 1.1 200 OK
  内容类型:text / html
  内容长度:38

     

<html><body>Hello world!</body></html>

因此,您需要在\r\n之前以\n格式发送标题。