2011-01-25 4 views
2

파이어 폭스 브라우저에서이 웹 페이지에 액세스 할 수 있습니다 : http://www.ip-adress.com/ip_tracer/74.82.190.99 그래서이 IP에 대한 정보를 얻을 수 있습니다.이 웹 사이트의 트릭은 무엇입니까?

그러나, 나는 파이썬을 사용하여 가져올 경우가있을 것입니다 오류 :

: 나는 페이지의 소스 코드에 대해 살펴

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>403 Forbidden</title> 
</head><body> 
<h1>Forbidden</h1> 
<p>You don't have permission to access /ip_tracer/74.82.190.99 
on this server.</p> 
</body></html> 

:

import urllib 
f = urllib.urlopen("http://www.ip-adress.com/ip_tracer/74.82.190.99") 
print f.read() 

나는이 오류

<form action="/ip_tracer/" method="post"> 
<div> 
<input id="ipqry" name="QRY" type="text" value="74.82.190.99" size="18" maxlength="255" onclick="cleanup(this)"> 
<input type="submit" value="Track IP, host or website" onclick="progress(true)"> 
</div> 
</form> 

그리고 POST 방법을 사용하면 결과가 동일합니다.

결과는 403 Forbidden과 동일합니다.

누구든지 내게 힌트를 줄 수 있습니까? Windows XP에서 Python 2.5를 사용하고 있습니다.

고맙습니다.

답변

11

아마도 서버가 귀하의 User-Agent 헤더를 읽고 귀하의 요청을 처리하지 않기로 결정했습니다. 또는 일반 브라우저 (FF와 같은)에서 일반적으로 설정되는 다른 헤더에 의존 할 수 있습니다.

나는 이것을 시도 :

import urllib2 

request = urllib2.Request("http://www.ip-adress.com/ip_tracer/74.82.190.99") 
request.add_header("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5") 

f = urllib2.urlopen(request) 
print f.read() 

을 적절한 결과를 얻었다.

참고 : 프로그래밍 방식으로 사용하려는 경우 사이트 서비스 약관을 확인하십시오. 이러한 요청을 자동으로 계속 보내면 규칙을 위반할 수 있습니다.

+0

User-Agent 지식에 대해 감사드립니다. 그리고 헤드 업에 감사드립니다. 나는 그 웹 사이트를 괴롭히지 않을 것이다. 심지어 나는 프록시를 사용할 것입니다. :) – DocWiki

0

아마 POST 명령의 출처를 읽었으며 올바른 호스트가 아니며 거부하는 것으로 간주됩니다.

+0

'HTTP 리퍼러'를 의미합니까? 그렇지 않은 것 같습니다. 파이어 폭스에 주소를 직접 입력 했으므로 작동합니다. 그것은'POST' 메소드를 필요로하지 않습니다. – DocWiki

+0

불란, 고마워. – DocWiki

+0

예, 그게 무슨 뜻인지, 일부 스크립트는 formdata가 스크립트 자체가 상주하는 서버에서 오는 것인지 확인합니다. 그러나이 경우에는 그렇지 않습니다! :) – Bulan

관련 문제