Почему моя программа может подключиться к несуществующему веб-сайту? - PullRequest
4 голосов
/ 06 ноября 2011

Я новичок в 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 - Moved permanently.

Не могли бы вы пояснить, почему это происходит, пожалуйста?Я использую visualStudio2010 (IronPython), если это имеет значение.

Ответы [ 3 ]

4 голосов
/ 06 ноября 2011

Возможно, вы используете ISP, который подделывает результаты DNS, чтобы предоставить вам страницу со спамом страницу полезного поиска вместо ошибки для несуществующих имен.

Что приводит к ping Nonexistentsite.com на машине, где вы тестировали свой код Python?

0 голосов
/ 06 ноября 2011

Я проверял это, за исключением того, что я использовал www.google.com вместо этого. Это придумали 302 найдено. После небольшого поиска я обнаружил, что 302 Найдено означает, что существует перенаправление. Это, вероятно, означает, что пользователи перенаправляются на правильный сайт Google для своего региона, например www.google.co.uk для Великобритании. «302 - Перемещено навсегда» - это, вероятно, одно и то же, но в IronPython все по-другому.

редактировать -

Он существует, потому что Google все еще работает на этом сервере и выполняет перенаправления.

0 голосов
/ 06 ноября 2011

При запуске вашего кода на Python в Cygwin, я получаю сообщение об ошибке Nonexistentsite.com, поэтому я не уверен, что с IronPython происходит что-то странное.

Google.com - Moved permanently, потому что у Google есть система перенаправлений для их главной страницы. Например, если они обнаружат, что вы находитесь в Великобритании, google.com перенаправит вас на google.co.uk (не проверял, я в США, но это то, что я прочитал). Если я попробую ваш код на stackoverflow.com или на другом сайте, на котором нет ничего более сложного, чем Google, я получу ответ 200 OK.

...