python полное доменное имя - PullRequest
1 голос
/ 06 апреля 2020

Я использую сокет Python 3.7 для получения полного доменного имени, полного доменного имени. Он работает для некоторых, например,

socket.getfqdn('indiana.edu')
'www.indiana.edu'

и не работает для других, например,

socket.getfqdn('google.com')
'lga34s18-in-f14.1e100.net'

Использование lga34s18-in-f14.1e100. net в браузере дает Ошибка 404, URL не найден.

Хорошо, google.com - это только один пример. Вот еще один:

socket.getfqdn('www.finastra.com')
'ec2-52-51-237-24.eu-west-1.compute.amazonaws.com'

И использование url 'ec2-52-51-237-24.eu-west-1.compute.amazon aws .com', очевидно, не работает. Таким образом, они размещают свой веб-сайт на AWS, но почему сокет возвращает его как FQDM, а не 'finastra.com' - FQDM?

1 Ответ

0 голосов
/ 06 апреля 2020

socket.getfqdn() вызывает socket.gethostbyaddr() (как указано в документах ) для разрешения адреса. socket.gethostbyaddr() выдаст DNS-запрос типа A (если домен отсутствует в файле хостов), который разрешит все настройки DNS: google.com или www.finastra.com.

Использование lga34s18 -in-f14.1e100. net в браузере выдает ошибку 404. URL не найден.

Это потому, что ваш браузер отправляет заголовок хоста , который заполнен имя хоста из URL. Один веб-сервер может обслуживать контент с разных хостов. Например, следующий запрос не вернет 404 Not Found :

curl ec2-52-51-237-24.eu-west-1.compute.amazonaws.com -H 'Host: www.finastra.com'

Удаление -H 'Host: www.finastra.com' приведет к тому, что запрос выдаст заголовок Host: ec2-52-51-237-24.eu-west-1.compute.amazonaws.com и вернет 404 Не найдено .

...