这个网站有什么诀窍?
我可以在我的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()
并且得到了正确的结果。
注意:如果你打算通过程序自动发送请求,请查看一下这个网站的服务条款。如果你一直这样自动发送请求,可能会违反他们的规则。