2016-02-13 81 views
0

我想打網絡爬蟲作出關於保加利亞的網站,比如Apache,Nginx的,等這當中最流行的服務器軟件的統計是什麼,我想出了:如何使用python請求獲取網站的服務器信息?

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這我不知道他們是什麼意思,但它的價值不是服務器名稱,如阿帕奇

所以我想一定有另一個請求我可能會發送這將產生所需的服務器信息,或者他們可能有他們自己的特定服務器軟件(這聽起來似乎facebook)。 我也嘗試其他.com網站,如​​它確實有一個['Server']鍵。

那麼有沒有辦法找到有關Facebook和特斯拉汽車使用的服務器的信息?

+1

Web服務器可能會或可能不會返回服務器標頭。不要指望它。看到這個問題:http://stackoverflow.com/questions/4726515/what-http-response-headers-are-required – Selcuk

+0

好吧,有道理。 :) –

回答

0

與python無關,由於安全隱患,大多數配置良好的Web服務器不會返回「服務器」http頭中的信息。

沒有理智的開發者會想讓你知道他們正在運行xxx產品的未修補版本。

+0

但是,Spotify提供了這樣的信息,但沒有版本號。它只是說'nginx' –

相關問題