基于socket的web服务器检测

Posted wanlifeipeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于socket的web服务器检测相关的知识,希望对你有一定的参考价值。

 

# coding=utf-8
import sys
import socket
import re


def check_webserver(address, port, resource):
    address = socket.gethostbyname(address)

    if not resource.startswith(/):
        resource = / + resource

    request_string = GET %s HTTP/1.0\r\n\r\n % (resource)
    print HTTP request: |||%s|||| % request_string
    s = socket.socket()
    failed = False
    print Attempting to connect to %s on port %s % (address, port)
    try:
        s.connect((address, port))
        print Connected to %s on port %s % (address, port)
        s.send(request_string)
        resp = s.recv(100)
        print Received 100 bytes of HTTP response
        print |||%s||| % resp
    except socket.error as e:
        print Connection to %s on port %s failed: %s % (address, port, e)
        failed = True
    finally:
        print Close the connection
        s.close()

    if failed:
        return False

    lines = resp.splitlines()
    print First line of HTTP response: %s % lines[0]
    try:
        version, status, message = re.split(\s+, lines[0], 2)
    except ValueError:
        print Failed to split status line
        return False

    if status in [200, 301]:
        print Success - status was %s % status
        return True
    else:
        print Failure - Status was %s % status
        return False


if __name__ == __main__:
    from argparse import ArgumentParser
    parser = ArgumentParser(description=u"基于socket的web服务器检测")
    parser.add_argument(
        -a,
        --address,
        dest="address",
        default="localhost",
        help="address for the server")
    parser.add_argument(
        "-p",
        "--port",
        dest="port",
        type=int,
        default=80,
        help="port for the server")
    parser.add_argument(
        "-r",
        --resource,
        dest=resource,
        default="index.html",
        help="resouce to check")
    args = parser.parse_args()
    check = check_webserver(args.address, args.port, args.resource)
    print check_webserver returned: %s % check
    sys.exit(not check)

 

以上是关于基于socket的web服务器检测的主要内容,如果未能解决你的问题,请参考以下文章

web服务检测

Web Socket:无法在 Internet 断开连接时检测到客户端连接

十条实用的jQuery代码片段

自定义web框架

TCP/IP协议学习 基于C# Socket的Web服务器---动态通讯实现

实战web聊天室(express+socket.io):进退聊天重名检测