python - 使用 python 连接到域以确定服务器是否在线

标签 python python-3.x

我需要尝试连接到域以确定特定服务器是否在线

我尝试使用套接字创建连接,但即使域在线,它也从未建立连接

import socket


def ConnectionTest():
    domain = "www.something.com/uptimecheck"

    try:
        socket.create_connection((domain, 443))
        return True
    except OSError:
        pass
    return False

即使我知道域在线,连接测试也总是返回 False,而理论上它应该返回 true。

我在这里做错了什么?

最佳答案

您正在 443 上连接服务器,这意味着您只是检查 TCP 套接字,应用层协议(protocol)为 HTTPS,即远程端套接字元组为 (<server_ip>, 443) .

因此您可以使用典型的网络客户端,例如requests是一个(使用 pip install requests 安装它,如果尚未完成):

import requests

def is_online(url):
    response = requests.get(url)
    return response.status_code == 200

现在,您可以执行以下操作:

url = "https://www.something.com/uptimecheck"
url_is_online = is_online(url)

请注意,我已将协议(protocol) ( https ) 添加到 URL 路径。

关于python - 使用 python 连接到域以确定服务器是否在线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56840115/

相关文章:

python - 从 selenium 加载 cookie 以使用 cookielib 进行 Mechanize

java - OS X Mavericks 中的 Aptana Studio 3 菜单栏

python - SQLAlchemy 给出 "MetaData not bound to Engine or Connection"

python - 使用python通过outlook发送html文件作为电子邮件正文

Python:如何对水平线交叉的字符进行OCR

python - SQLAlchemy load_only 在父模型上

python - Crypto.Signature.PKCS1_v1_5 和 Crypto.Signature.pkcs1_15 有什么区别?

python - 如果字符串包含停用词,则从字符串中删除元素

python - 重写__new__疑惑

python - 将字符串值从 pickled 转换为字典