如何使用python请求获取网站的服务器信息?

时间:2016-02-13 14:14:52

标签: python server web-crawler python-requests

我想制作一个网络抓取工具,对保加利亚网站中最受欢迎的服务器软件进行统计,例如Apache,nginx等。以下是我提出的建议:

import requests
r = requests.get('http://start.bg')
print(r.headers)

返回以下内容:

{'Debug': 'unk', 
'Content-Type': 'text/html; charset=utf-8', 
'X-Powered-By': 'PHP/5.3.3', 
'Content-Length': '29761', 
'Connection': 'close', 
'Set-Cookie': 'fbnr=1; expires=Sat, 13-Feb-2016 22:00:01 GMT; path=/; domain=.start.bg', 
'Date': 'Sat, 13 Feb 2016 13:43:50 GMT', 
'Vary': 'Accept-Encoding', 
'Server': 'Apache/2.2.15 (CentOS)', 
'Content-Encoding': 'gzip'}

在这里你可以很容易地看到它在Apache / 2.2.15上运行,只需说出r.headers['Server']即可得到这个结果。我尝试了几个保加利亚网站,他们都有服务器密钥。

但是,当我请求更复杂网站的标题时,例如 www.teslamotors.com ,我会收到以下信息:

{'Content-Type': 'text/html; charset=utf-8', 
'X-Cache-Hits': '9', 
'Cache-Control': 'max-age=0, no-cache, no-store', 
'X-Content-Type-Options': 'nosniff', 
'Connection': 'keep-alive', 
'X-Varnish-Server': 'sjc04p1wwwvr11.sjc05.teslamotors.com', 
'Content-Language': 'en', 
'Pragma': 'no-cache', 
'Last-Modified': 'Sat, 13 Feb 2016 13:07:50 GMT', 
'X-Server': 'web03a', 
'Expires': 'Sat, 13 Feb 2016 13:37:55 GMT', 
'Content-Length': '10290', 
'Date': 'Sat, 13 Feb 2016 13:37:55 GMT', 
'Vary': 'Accept-Encoding', 
'ETag': '"1455368870-1"', 
'X-Frame-Options': 'SAMEORIGIN', 
'Accept-Ranges': 'bytes', 
'Content-Encoding': 'gzip'}

正如您所看到的,此词典中没有['Server']个键(尽管X-ServerX-Varnish-Server我不确定它们的含义,但它的值是不是像 Apache 这样的服务器名称。

所以我认为必须有另一个我可以发送的请求可以产生所需的服务器信息,或者可能他们有自己的特定服务器软件(这听起来似乎是 facebook )。 我还尝试了其他.com网站,例如 https://spotify.com ,它确实有一个['Server']密钥。

那么有没有办法找到有关Facebook和特斯拉汽车使用的服务器的信息?

1 个答案:

答案 0 :(得分:3)

这与python无关,大多数配置良好的Web服务器都不会在"服务器"内部返回信息。由于安全隐患,http标头。

没有理智的开发人员会想要告诉您他们正在运行未修补的xxx产品版本。