我需要记录成功的TLS连接的域名的IP地址。这是一个简化的代码:
import socket, ssl
context = ssl.SSLContext()
context.verify_mode = ssl.CERT_NONE
context.check_hostname = False
mycipher = "DHE-RSA-AES128-SHA"
context.set_ciphers(mycipher)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
domain = "google.com"
mySocket = context.wrap_socket(sock, server_hostname = domain)
mySocket.connect((domain, 443))
mySocket.close()如果连接成功,我怎样才能得到IP?如果没有,我不想记录IP。
我发现一些函数可以在TLS会话中获取所选的TLS版本的version()和选定的加密套件cipher(),当连接成功时,该会话总是检索值。但我没发现拿到IP的事。我知道它们可能是不同的东西(版本和密码与TLS会话相关,IP与连接相关),但我不想记录不成功的TLS连接的IP。只有当连接成功时,我才想记录IP (例如,将它存储在变量中)。
发布于 2018-08-03 15:49:28
IP地址是TCP/IP属性,而不是TLS属性。
因此,您应该查看socket模块提供的内容。
例如,您有:
socket.getpeername() 返回连接套接字的远程地址。 例如,这对于查找远程IPv4 4/V6套接字的端口号很有用。(返回地址的格式取决于地址家族--参见上面。)在某些系统中,不支持此功能。
https://stackoverflow.com/questions/51670100
复制相似问题