title: Python socket module. Connecting to an HTTP proxy then performing a GET request on an external resource
body: <p>To begin with, I understand there are other modules such as Requests that would be better suited and simpler to use, but I want to use the socket module to better understand HTTP.</p>
  
  <p>I have a simple script that does the following:</p>
  
  <p>Client ---> HTTP Proxy ---> External Resource (GET Google.com)</p>
  
  <p>I am able to connect to the  HTTP proxy alright, but when I send the GET request headers for google.com to the proxy, it doesn't serve me any response at all.</p>
  
  <pre><code>#!/usr/bin/python
  import socket
  import sys
  
  
  
  headers = """GET / HTTP/1.1\r\n
  Host: google.com\r\n\r\n"""
  
  
  
  socket = socket
  
  host = "165.139.179.225" #proxy server IP
  port = 8080              #proxy server port
  
  try:
      s = socket.socket()
      s.connect((host,port))
      s.send(("CONNECT {0}:{1} HTTP/1.1\r\n" + "Host: {2}:    {3}\r\n\r\n").format(socket.gethostbyname(socket.gethostname()),1000,port,host))
      print s.recv(1096)
      s.send(headers)
      response = s.recv(1096)
     print response
     s.close()
  except socket.error,m:
     print str(m)
     s.close()
     sys.exit(1)
  </code></pre>