【问题标题】:How to request https by ip address?如何通过ip地址请求https?
【发布时间】:2021-05-15 21:38:12
【问题描述】:

如何通过ip地址发出https请求?,以cloudflare为例:

>>> import requests
>>> requests.get('https://104.18.5.125/', verify=False, headers={ 'host': 'example.com' })
...
requests.exceptions.SSLError: HTTPSConnectionPool(host='104.18.5.125', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'ssl3_read_bytes', 'sslv3 alert handshake failure')])")))

但是当使用原始主机名发出请求时可以正常工作。

>>> requests.get('https://example.com/', verify=False)
<Response [200]>

当尝试从 Mozilla Firefox 访问时说:SSL_ERROR_NO_CYPHER_OVERLAP

需要测试远程 https 服务器以检查虚拟主机,但无法使用 ip 地址发出请求。如何禁用来自 python3 代码的警告并发出请求?

【问题讨论】:

    标签: python-3.x ssl https


    【解决方案1】:

    SSL 证书通常包含网站的域名但不包含 IP,这意味着当您尝试使用 HTTPS 发出请求时,由于没有可用的 IP 证书导致握手失败。

    要解决此问题,您需要停止使用 HTTPS 或获取 IP 地址的 SSL 证书。

    【讨论】:

    • 如果我没有与证书关联的主机名,我不能发出任何 http 请求吗?
    • 我有一个具有 3 个关联 IP 地址的域,我需要检查每个 IP 是否响应虚拟主机的相同内容,有没有办法告诉请求使用特定域但连接到IP 地址?
    • 您可以发出HTTP 请求,但不能发出HTTPS 请求
    • 是否有提供IP地址而不是域名的证书?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2011-07-31
    • 1970-01-01
    • 2022-10-25
    • 2023-03-03
    • 2015-06-21
    相关资源
    最近更新 更多