这个网站有什么诀窍?

2 投票
2 回答
977 浏览
提问于 2025-04-16 10:34

我可以在我的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

这可能是因为它检查了POST命令的来源,发现这个请求不是来自一个有效的主机,所以拒绝了你的请求。

11

可能是服务器读取了你的 User-Agent 头信息,然后决定不处理你的请求。或者,它可能依赖于一些其他的头信息,这些信息通常是正常浏览器(比如火狐浏览器)设置的。

我试过这个:

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()

并且得到了正确的结果。

注意:如果你打算通过程序自动发送请求,请查看一下这个网站的服务条款。如果你一直这样自动发送请求,可能会违反他们的规则。

撰写回答