这个网站的诀窍是什么?

时间:2011-01-25 08:23:21

标签: python urllib

我可以在我的firefox浏览器中访问此网页: http://www.ip-adress.com/ip_tracer/74.82.190.99 所以我可以获得有关此IP的信息。

但是,当我使用Python获取它时,会出现错误:

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

我收到此错误:

<!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>

我看一下页面的源代码:

<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方法,结果是一样的:

import urllib 
params = urllib.urlencode({'QRY': '74.82.190.99'}) 
f = urllib.urlopen("http://www.ip-adress.com/ip_tracer/", params) 
print f.read()

结果与403 Forbidden相同。

任何人都可以给我一个提示吗?我在Windows XP上使用Python 2.5。

非常感谢!

2 个答案:

答案 0 :(得分: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()

并得到了正确的结果。

注意:如果您打算以编程方式使用,请检查网站的服务条款。如果您继续自动发送此类请求,则可能违反其规则。

答案 1 :(得分:0)

它可能会读取POST命令的来源,并发现它不是来自有效的主机并拒绝您。

相关问题