2011-11-06 4 views
4

저는 파이썬 및 네트워크 프로그래밍에 익숙하지 않으며 간단한 프로그램에 문제가 있습니다. 기본적으로 존재하지 않는 웹 사이트에 대한 연결을 여는 중이며 어떻게 든 연결이 성공한 것으로 보입니다. 게다가, 나는 200 개의 리턴 코드를 얻는다. 이것은 HTTP 서버가 존재하고 연결이 OK라고 응답했다는 것을 의미한다. 여기에 내 코드의 관련 부분 :내 프로그램이 존재하지 않는 웹 사이트에 어떻게 연결할 수 있습니까?

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)을 사용하고 있습니다.

+0

이상한, 정규 Python에서 적절한 'socket.gaierror : [Errno -2] 이름이나 서비스가 알려지지 않았습니다.'라고 말하면서 버그가 발생했을 수 있습니까? –

+0

Ironpython 구현 문제가 아니라면 문제가 다른 코드에 있다고 제안 할 수 있습니다. 대부분 사이트가 존재하지 않을 때'getresponse()'에서 여기에 (일반 파이썬에서) 던져진 예외를 잘못 잡아낼 가능성이 있습니다. 또는 위의 코드를 * 정확히 * 테스트 했습니까? 다른 부분이 있음을 의미하는 관련 부분이라고 말하면됩니다. – tjm

+0

@tjm 모든 코드를 게시했습니다. 보시다시피 예외는 없습니다. 그래도 예상되는 동작입니까? –

답변

4

존재하지 않는 이름에 대한 오류 대신 스팸 페이지 유용한 검색 페이지를 제공하기 위해 DNS 결과를 위장한 ISP를 사용 중일 수 있습니다.

파이썬 코드를 테스트 한 시스템에서 ping Nonexistentsite.com이되는 결과는 무엇입니까?

+0

DNS는 어떻게 든 그것을위한 몇몇 IP를 찾는다. [92.242.144.2], 그러나 ping time out. –

0

Cygwin의 Python에서 코드를 실행하면 Nonexistentsite.com에 대한 오류가 발생하므로 IronPython에서 이상한 점이 있는지 확실하지 않습니다.

Google은 기본 페이지에 대해 리디렉션 시스템을 갖추고 있기 때문에 Google.com은 Moved permanently입니다. 예를 들어, 그들이 영국에 있음을 감지하면 google.comgoogle.co.uk (테스트되지 않았지만 미국에 있지만 읽은 것입니다)로 리디렉션합니다. stackoverflow.com으로 코드를 시도하거나 Google처럼 복잡한 코드가없는 다른 사이트를 시도하면 200 OK 응답이 표시됩니다.

0

나는 대신 www.google.com을 사용했다. 이것은 302 발견했다. 인터넷 검색을 한 후 302 Found는 리디렉션이 있다는 것을 알았습니다. 즉, 사용자는 예를 들어 영국의 경우 www.google.co.uk와 같이 자신의 도메인에 적합한 Google 사이트로 리디렉션됩니다. 302 - Permanently Moved는 아마도 IronPython과 다른 점이있을 것입니다.

편집 -

구글이 여전히 서버를 실행하고 리디렉션을 수행하기 때문에이 존재한다.

관련 문제