File "D:\Anaconda3\lib\ssl.py", line 997, in _create raise ValueError("check_hostname requires server_hostname") ValueError: check_hostname requires server_hostname
时间: 2023-07-22 22:03:33 浏览: 84
Anaconda3-2020.07-Linux-x86_64.sh
5星 · 资源好评率100%
这个错误通常是因为在创建SSL连接时没有提供必要的参数。在Python 2.7.9及以上版本中,当使用`ssl.wrap_socket()`函数创建SSL连接时,必须提供`server_hostname`参数,以启用主机名验证。
如果你使用的是Python 2.7.8或更早版本,则可能需要升级到较新的版本。如果你正在使用较新的版本,请确保在创建SSL连接时提供了`server_hostname`参数。例如:
```python
import ssl
import socket
hostname = 'example.com'
context = ssl.create_default_context()
with socket.create_connection((hostname, 443)) as sock:
with context.wrap_socket(sock, server_hostname=hostname) as ssock:
ssock.sendall(b'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n')
response = ssock.recv(1024)
```
在上面的代码中,我们使用`socket.create_connection()`函数创建TCP连接,并使用`ssl.create_default_context()`函数创建SSL上下文。然后,我们使用`context.wrap_socket()`函数将套接字包装成SSL套接字,并提供`server_hostname`参数以启用主机名验证。
如果你仍然遇到问题,请检查SSL证书是否可信,并确保你的代码正确处理SSL错误。
阅读全文