如何通过SSL连接发送http请求?

时间:2019-03-27 09:57:26

标签: python sockets ssl

我正在尝试建立与https服务器的连接,发送HTTP请求,然后不断侦听打开的连接。我可以建立连接,但是当我尝试发送http消息时,服务器向我发送了HTTP错误426,指示TLS问题。

到目前为止,这是我的代码:

import socket
import ssl

host = 'a host'
port = a port

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)

wrapped_socket = ssl.wrap_socket(sock, ssl_version=ssl.PROTOCOL_TLSv1)
wrapped_socket.connect((host, port))
message = b"POST / HTTP/1.1\n" \
      b"some headers\n" \
      b"\n" \
      b"a body"
print(wrapped_socket.send(message)) #prints 426
while True:
     data = wrapped_socket.recv(1024)
     if not data:
        break
     print("Received: " + str(data))

消息本身绝对不是问题,因为我可以通过Postman发送消息并获得预期的结果(HTTP 200)。谷歌搜索了一段时间后,我认为问题是我没有设置某种证书。我尝试了一些涉及SSL上下文的内容,但这会导致握手错误。我只是使用许多不同的方法,程序包和东西找到了这么多不同的答案,以至于我太困惑以至于无法亲自看到解决方案。而且我对网络协议和内容的了解还很差。

0 个答案:

没有答案