如何通过ip地址请求https?

时间:2021-05-15 21:38:12

标签: python-3.x ssl https

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

ext {
  GITHUB_TOKEN = System.getenv("GITHUB_TOKEN")
}

maven {
  url "https://maven.pkg.github.com/paulschwarz/spring-dotenv"
  credentials {
    username GITHUB_USER
    password GITHUB_TOKEN
  }
}

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

>>> 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')])")))

尝试从 Mozilla Firefox 访问时显示:>>> requests.get('https://example.com/', verify=False) <Response [200]>

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

1 个答案:

答案 0 :(得分:1)

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

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