Python сокет, HTTPS-запрос загрузить полный HTML-код - PullRequest
0 голосов
/ 16 мая 2018

Я изучаю, как использовать сокет, чтобы сделать запрос https, и моя проблема в том, что я могу выполнить успешный запрос (статус 200), но у меня будет только часть содержимого веб-страницы (не могу понять, почему он разделен натаким образом)

Я получу свой заголовок Http, с частью HTML-кода.Я пробовал по крайней мере с 3 различными веб-сайтами (включая github), и у меня всегда был один и тот же результат.

Я могу подключиться с моей учетной записью к веб-сайту, имея мои куки для использования моей учетной записи, загрузитьновая страница с этими файлами cookie и статусом 200, а также наличие части сайта ... Как просто наличие навигационных панелей сайта.

Если у кого-то есть подсказка.

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 голосов
/ 17 мая 2018

1) Кажется, я не могу загрузить контент с большим буфером, в MySock.recv(50000) мне нужно выполнить цикл с меньшим буфером, например 4096, и объединить переменную.

2) Для запроса требовалось время, чтобы получить полный ответ, я использовал функцию time.sleep для управления этим ожиданием, а не, если это лучший способ с сокетом ssl ждать сервера. Если у кого-то есть хороший способ получить полное ответное сообщение, когда оно большое, не стесняйтесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...