I am new to python and network programming and I am having trouble with a simple program. I am basically opening a connection to a nonexistent website and somehow it seems that the connection succeeds. Moreover, I get a 200 return code which means the http server has responded that it exists and the connection is OK. Here's the relevant part of my code:
import httplib
conn = httplib.HTTPConnection("Nonexistentsite.com", 80)
conn.request("GET","/")
r = conn.getresponse()
print r.status, r.reason
conn.close()
And when I try google.com
or any other existing website instead of nonexistentsite.com
, I get 301 or 302 - Moved permanently
.
Could you kindly clarify why this is happening, please? I am using visualStudio2010(IronPython) if that matters.
You might be using an ISP that fakes DNS results in order to give you a spam page helpful search page instead of an error for nonexistant names.
What does a ping Nonexistentsite.com
result in on the machine where you tested your Python code?
Running your code in Cygwin's Python, I get an error for Nonexistentsite.com
, so I'm not sure if something weird is happening with IronPython.
Google.com is Moved permanently
because Google has a system of redirects for their main page. For example, if they detect you are in the UK, google.com
will redirect you to google.co.uk
(untested, I am in the US, but that is what I have read). If I try your code with stackoverflow.com
or another site that doesn't have something as complicated set up as Google, I get a 200 OK
response.
I tested this except I used www.google.com instead. This came up with 302 Found. After a bit of googling I found out that 302 Found means that there is a redirection. This probably means that users are redirected to the right Google site for their reigon for example www.google.co.uk for UK. The 302 - Moved Permanently is probably the same thing but it just comes up different for IronPython.
edit -
It exists because Google is still running that server and is performing redirections.