Как определить протокол сайта с помощью URL - PullRequest
0 голосов
/ 29 октября 2018

Как определить (using c++ и winsock) протокол сайта на основе URL-адреса, например (www.google.com), если протокол не известен заранее?

Или как определить TCP-порт веб-сервера?

Я хочу сделать HTTP-запрос на получение, используя ссылку после www., и мне нужно определить порт или протокол, чтобы использовать http over tls или simple http.

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Вы не можете. Вы решаете протокол, который собираетесь использовать для связи с каким-либо сервером. Если вы еще не решили, вы этого не знаете. Конечно, ваш компьютер не может сказать вам, что это будет.

Это все равно, что спросить кассира супермаркета, что вы собираетесь купить сегодня. Они этого не знают. Вы должны сказать им , что.

Что вы можете сделать, это посмотреть, будет ли веб-сайт на этом сервере автоматически перенаправлять HTTP-трафик на HTTPS URI (таким образом, применяя SSL) или иным образом блокировать трафик не-HTTPS. Если это то, что вы хотите сделать, вы можете добиться этого, попытавшись установить HTTP-соединение с этим доменом и посмотреть, что произойдет.

В зависимости от марки / модели / версии вашего веб-браузера это может быть то, что он делает, когда вы вводите "www.google.com" без указания протокола: при условии, что http:// затем следует все удаленные перенаправления, которые приведут вас к https:// вместо. Довольно скоро или уже, если у вас установлены определенные расширения, по умолчанию будет https://. Я должен подчеркнуть, опять же, что решение по-прежнему принимает клиент (то есть браузер), а не сервер; если вы пишете свой собственный браузер, то, опять же, вы должны выбрать то, что должно быть по умолчанию.

0 голосов
/ 29 октября 2018

В вашем примере www.google.com - это доменное имя.
Чтобы получить протокол, вам нужны полные URL, такие как https://www.google.com или http://www.google.com
В приведенном выше примере http и https являются типами протокола.

Вы также можете использовать nmap для определения открытых портов, имени службы и используемого протокола

...