python套接字,HTTPS请求加载完整的HTML代码

时间:2018-05-16 20:03:05

标签: python html sockets http https

我正在学习如何使用socket来发出https请求,而我的问题是我可以成功请求(状态200),但我只会有一部分网页内容(无法理解为什么它会被分割出来)这样)

我将收到我的Http标头,以及部分HTML代码。我尝试了至少3个不同的网站(包括github),我总是有相同的结果。

我可以将我的帐户连接到一个网站,使用我的cookie来使用我的帐户,使用这些cookie加载新页面并获得状态200,并且juste拥有该网站的一部分...就像刚刚拥有网站的导航栏。

如果有人有任何线索。

import socket
import ssl

HOST = 'www.python.org'
PORT = 443

MySock = socket.socket()
MySock = ssl.wrap_socket(MySock, ssl_version=ssl.PROTOCOL_SSLv23)
MySock.connect((HOST,PORT))
MySock.send("""GET / HTTP/1.1
Host: {}

""".format(HOST).encode())

#Create file to check reponse content
with open('PythonOrg.html', 'w') as File:
    print(MySock.recv(50000).decode(), file=File)

1 个答案:

答案 0 :(得分:0)

1)我似乎无法使用大缓冲区加载内容,在MySock.recv(50000)中,我需要使用较小的缓冲区循环,如4096,并连接变量。

2)请求需要时间来接收整个响应,我使用time.sleep函数来管理这个等待,而不是sur,如果这是使用ssl套接字等待服务器的最佳方式。如果有人有一个很好的方法来获取整个响应消息,那么请大家免费。