Python netcraft API 或替代库
我想要和netcraft互动,或者从服务器的头信息中提取类似的数据。
https://superuser.com/questions/120783/can-i-detect-what-webserver-a-website-is-using
如果能给我一些建议就太好了,我在网上搜索的结果都是关于如何创建一个Python网络服务器的,但我现在并不需要这个。
1 个回答
1
好吧,假设这个网站在头部标签里提供了服务器信息,你可以用Python的requests库来获取这个服务器信息:
requests.get("website").headers["server"]
如果你不确定服务器是否会返回这个信息,记得在访问字典之前先检查一下。网站有可能会动态改变头部的值(特别是服务器信息)。很多服务器也认为提供服务器信息是个安全隐患。所以,不要指望每个网站都会告诉你它用的是什么服务器。服务器甚至可能会突然把这些信息隐藏起来。下面是一个更好的例子,可以打印出多个网站的服务器信息:
import requests
def getServer(uri, default = "-- Server not given --"):
request = requests.get(uri)
if "server" in request.headers:
return request.headers["server"]
else:
return default
if __name__ == "__main__":
uris = [
"http://superuser.com",
"http://google.com",
"http://docs.python-requests.org/en/latest/",
"http://yahoo.com"
]
for theURI in uris:
print "Website: %s uses %s" % (theURI, getServer(theURI))
在我的电脑上,截至2014年7月7日,这个脚本返回:
Website: http://superuser.com uses -- Server not given --
Website: http://google.com uses gws
Website: http://docs.python-requests.org/en/latest/ uses nginx/1.4.6 (Ubuntu)
Website: http://yahoo.com uses ATS