python: подключиться через сокет к https - PullRequest
1 голос
/ 16 июня 2020

Я читаю одну книгу о сети (я только начал) с python, и там был такой код:

import sys, socket
try:
    rfc_number = int(sys.argv[1])
except (IndexError, ValueError):
    print('Must supply an RFC number as first argument')
    sys.exit(2)
host = "www.ietf.org"
port = 80
socket = socket.create_connection((host, port))
req = (f"GET /rfc/rfc{rfc_number}.txt HTTP/1.1\r\n"
       f"Host: {host} : {port}\r\n"
       f"User-Agent: Python {sys.version_info[0]}\r\n"
       "Connection: close\r\n"
       "\r\n"
       )
socket.sendall(req.encode("ascii"))
rfc_raw = bytearray()
while True:
    buf = socket.recv(4096)
    print(buf)
    if not len(buf):
        break
    rfc_raw += buf
rfc = rfc_raw.decode('utf-8')

print(rfc)

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

Был код, использующий urllib, и он отлично работал но я заинтересован в использовании кода сокета. возможно ли это с помощью сокета и как? Пожалуйста, объясните немного. Заранее спасибо.

Я тоже нашел в гугле людей, использующих "import ssl". Для веб-страницы они выбирают, что их код работает. Когда я изменил и попробовал их код для ietf.org, этого не произошло. есть ли у кого-нибудь ответ на мой вопрос?

...