首页 > 代码库 > python3利用socket查看各大网站所用的WEB服务器程序,看看那个用得最多。

python3利用socket查看各大网站所用的WEB服务器程序,看看那个用得最多。

利用python发送haeder /然后,读取返回的头的信息,看看该网站用的是什么WEB服务器程序。

今天早上看到别人用java写了一个这样的程序,我用就python也现实一个, 本来想把nginx不用版本的算在一起,想想没得必要。结果查看了一下,还是nginx的多,其次是apache,然后是IIS了,Tengine这个也比较多哈,应该可以算成nginx的哈。当然,也有许多公司用的自己写的如百度的BWS,google的GWS。还有CWS和QWS等。

#!/bin/python
import socket

#以字典整式来统计各个服务器的数量
countdict = {"error":0}
#请求内容
request = ‘‘‘HEAD / HTTP/1.1
Accept: */*
Host: %(sip)s
Connection: Keep-Alive

‘‘‘
#print(countdict)
print("{0:*^6}".format("HOST"), "{0:*^26}".format("WEB SITE"), "{0:*^6}".format("SERVER:"), "{0:*^26}".format("Server Name"))
print("-----------------------------------------------------------------")
fp = open(‘serverlist.txt‘, ‘r‘)
for serverip in fp:
    serverip = serverip.strip()
    #print(request % dict(sip = serverip) )
    #针对不同网站替换点请求的Host字段
    tt = request % dict(sip = serverip)
    #print(tt)
    #请求header
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((serverip, 80))
        s.send( tt.encode() )
        recv = s.recv(1024)
        recv = recv.decode()
        #print(recv.decode())
    except TimeoutError as te:
        print("HOST: ", serverip, "    报连接超时错误")
        countdict["error"] =+ 1
        print("-----------------------------------------------------------------")
        continue
    except Exception as e:
        print("HOST: ", serverip, "    报未知错误")
        countdict["error"] =+ 1
        print("-----------------------------------------------------------------")
        continue
    #print(recv)
    recvlist = recv.split(‘\r\n‘)
    for a in recvlist:
        #if ‘Server:‘ in a and a.startswith(‘Server:‘):
        if a.startswith(‘Server:‘):
            servername = a.split(‘:‘)[1]

    #统计应用的服务器名了
    if servername in countdict:
        countdict[servername] += 1
    else:
        countdict[servername] = 1

    #格式化打印
    #print("HOST: ", serverip, "Server: ", servername)
    print("{0: <6}".format("HOST: "), "{0: <26}".format(serverip), "{0: <6}".format("Server:"), "{0: <26}".format(servername))
    print("-----------------------------------------------------------------")

#打印统计结果
print(countdict)

 

 

这个是serverlist.txt里只有几个网站时的。

技术分享

这个是添加了许多网站后的。

技术分享 技术分享

 

python3利用socket查看各大网站所用的WEB服务器程序,看看那个用得最多。