我正在学习如何使用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)
答案 0 :(得分:0)
1)我似乎无法使用大缓冲区加载内容,在MySock.recv(50000)
中,我需要使用较小的缓冲区循环,如4096,并连接变量。
2)请求需要时间来接收整个响应,我使用time.sleep函数来管理这个等待,而不是sur,如果这是使用ssl套接字等待服务器的最佳方式。如果有人有一个很好的方法来获取整个响应消息,那么请大家免费。