我使用Python 2.7和socket
模块编写了一个套接字服务器。
当我发出HTTP请求时,一切都按预期工作:服务器接受它并正确回答。但是,如果不是(比方说)http://a.com
我浏览https://a.com
我收到某种加密标头,我不知道如何告诉客户端服务器不支持HTTPS。
如果有人能够告诉我一个方法告诉客户没有SSL,它会对我有所帮助。
提前致谢。
答案 0 :(得分:1)
我遇到了同样的问题。你必须配置" ssl"代码中的上下文如下:
import socket, ssl
HOST = "www.youtube.com"
PORT = 443
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s_sock = context.wrap_socket(s, server_hostname=HOST)
s_sock.connect((HOST, 443))
s_sock.send(" GET / HTTP/1.1\r\nHost: www.youtube.com\r\n\r\n ".encode())
while True:
data = s_sock.recv(2048)
if ( len(data) < 1 ) :
break
print(data)
s_sock.close()
答案 1 :(得分:0)
尝试this。模块名称已更改,因此它们现在已成为http.server
模块的一部分(标准安装的一部分)-请参阅Python 2的SimpleHTTPServer documentation顶部的注释。尽管如此,主要问题是,是您需要获取SSL证书来保护连接的安全(我认为最简单的方法是OpenSSL)。