The urllib2 package allows us to override the host table before we make request. Here is an example which will map www.google.com to my local machine.
import urllib2
import httplib
import socket
import urllib2
import simplejson
def MyResolver(host):
if host == 'www.google.com':
return '127.0.0.1'
else:
return host
class MyHTTPConnection(httplib.HTTPConnection):
def connect(self):
self.sock = socket.create_connection((MyResolver(self.host),self.port),self.timeout)
class MyHTTPSConnection(httplib.HTTPSConnection):
def connect(self):
sock = socket.create_connection((MyResolver(self.host), self.port), self.timeout)
self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file)
class MyHTTPHandler(urllib2.HTTPHandler):
def http_open(self,req):
return self.do_open(MyHTTPConnection,req)
class MyHTTPSHandler(urllib2.HTTPSHandler):
def https_open(self,req):
return self.do_open(MyHTTPSConnection,req)
opener = urllib2.build_opener(MyHTTPHandler,MyHTTPSHandler)
urllib2.install_opener(opener)
response = urllib2.urlopen("http://www.google.com:8000/custom/get/")
data = simplejson.load(response)
print data
Done =)
