Since you mention urllib2, I'm assuming this is Python 2.x, not 3.x.
The exact version may be significant.
I can use python >= 3.3 if required.
Can you simply query the server by IP address rather than host name?
According to the docs, urllib2.urlopen() doesn't check the
certificate, so it should be accepted. Or does the server insist on
the hostname being correct?
Failing that, you could monkey-patch socket.create_connection, which
seems to be the thing that ultimately does the work. Something like
orig_create_connection = socket.create_connection
def create_connection(address, *args, **kwargs):
if address == "domainA": address = "220.127.116.11"
return orig_create_connection(address, *args, **kwargs)
socket.create_connection = create_connection
# Proceed to use urllib2.urlopen()
Untested, but may do what you want.
this seems like a way forward
me too, but I want to start torturing from about 10 different servers so plumbum
+ a python script seems like a good choice and I would not really want to hack
the hosts files back and forth on a regular basis.
Normally, though, I'd look at just changing the hosts file, if at all
possible. You're right that it does change state for your whole
computer, but it's generally the easiest solution.