Python netcraft API 或替代库

0 投票
1 回答
653 浏览
提问于 2025-04-18 12:24

我想要和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

撰写回答