Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 这个网站的诀窍是什么?_Python_Urllib - Fatal编程技术网

Python 这个网站的诀窍是什么?

Python 这个网站的诀窍是什么?,python,urllib,Python,Urllib,我可以在firefox浏览器中访问此网页: 所以我可以得到关于这个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">

我可以在firefox浏览器中访问此网页: 所以我可以得到关于这个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>
结果是相同的
403禁止

谁能给我一个提示吗?我正在Windows XP上使用Python 2.5


非常感谢

服务器可能会读取您的头并决定不提供您的请求。或者,它可以依赖于通常由普通浏览器(如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()
得到了正确的结果


注意:如果您计划以编程方式使用该网站,请查看该网站的服务条款。如果您继续自动发送此类请求,可能会违反他们的规则。

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

您的意思是
HTTP referer
?似乎不是。因为我把地址直接放在firefox中,所以它也可以工作。它甚至不需要
POST
方法。是的,这就是我的意思,一些脚本会检查formdata是否来自脚本本身所在的同一台服务器。但在这种情况下似乎不是这样的!:)非常感谢用户代理知识。谢谢你的提醒。我不会骚扰那个网站。即使我这样做,我也会使用代理。:)
import urllib 
params = urllib.urlencode({'QRY': '74.82.190.99'}) 
f = urllib.urlopen("http://www.ip-adress.com/ip_tracer/", params) 
print f.read()
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()