Python 为什么我的程序可以连接到一个不存在的网站?

Python 为什么我的程序可以连接到一个不存在的网站?,python,http,ironpython,Python,Http,Ironpython,我是python和网络编程新手,在使用一个简单的程序时遇到了麻烦。我基本上是打开一个连接到一个不存在的网站,不知何故,似乎连接成功。此外,我得到了一个200返回码,这意味着http服务器已经响应它存在并且连接正常。以下是我代码的相关部分: import httplib conn = httplib.HTTPConnection("Nonexistentsite.com", 80) conn.request("GET","/") r = conn.getresponse() print r.s

我是python和网络编程新手,在使用一个简单的程序时遇到了麻烦。我基本上是打开一个连接到一个不存在的网站,不知何故,似乎连接成功。此外,我得到了一个200返回码,这意味着http服务器已经响应它存在并且连接正常。以下是我代码的相关部分:

import httplib

conn = httplib.HTTPConnection("Nonexistentsite.com", 80)
conn.request("GET","/")
r  = conn.getresponse()
print r.status, r.reason
conn.close()
当我尝试
google.com
或任何其他现有网站而不是
nonexistentsite.com
时,我会永久移动301或302-


请你澄清为什么会发生这种情况,好吗?我正在使用visualStudio2010(IronPython),如果这很重要的话。

在Cygwin的Python中运行代码时,我发现
Nonexistentsite.com
有一个错误,所以我不确定IronPython是否发生了奇怪的事情


Google.com被永久移动
,因为Google的主页有一个重定向系统。例如,如果他们检测到你在英国,
google.com
会将你重定向到
google.co.UK
(未经测试,我在美国,但这是我读到的)。如果我在
stackoverflow.com
或其他没有像谷歌那样复杂设置的网站上尝试你的代码,我会得到
200 OK
的响应。

我测试了这个,除了我使用了www.Google.com。找到了302个。在谷歌搜索了一下之后,我发现302find意味着有一个重定向。这可能意味着用户将被重定向到正确的谷歌网站,例如www.Google.co.uk for uk。302-Moved-Permanently可能是同一件事,但对于IronPython来说却有所不同

编辑-


它之所以存在,是因为谷歌仍在运行该服务器并正在执行重定向。

您可能正在使用一个伪造DNS结果的ISP,以便为您提供一个有帮助的垃圾邮件页面搜索页面,而不是不存在的名称的错误


在测试Python代码的计算机上,什么是
ping NoxientSite.com
导致的?

奇怪的是,在常规Python中,我得到了正确的
socket.gailr:[Errno-2]名称或服务不知道,可能遇到了错误?除非是ironpython实现问题,我建议您的代码中的其他地方有问题。当站点不存在时,很可能错误地捕获了从
getresponse()
抛出的异常(在常规python上)。或者您是否已经使用上面的代码进行了测试?你说是相关部分暗示还有其他部分。@tjm我已经发布了所有代码。正如你所看到的,我没有处理任何异常。“不过这是预期的行为吗?”凯伦说。抱歉,我真的不知道,但我在这里收到了错误(John Doe收到的同一个错误)P.S.注意,它抛出了
request
not
getresponse
,正如我上面所说。DNS不知怎的为它找到了一些IP[92.242.144.2],但ping超时。