полное доменное имя python

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

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.amazonaws.com», очевидно, не работает. Итак, они размещают свой веб-сайт на AWS, но почему сокет возвращает его как FQDM, а «finastra.com» не является FQDM?


person David Makovoz    schedule 06.04.2020    source источник
comment
Связанное чтение: support.google.com/faqs/answer/174717?hl=en   -  person dspencer    schedule 06.04.2020
comment
Что ты пытаешься сделать? google.com является полным, зачем помещать его в getfqdn? getfqdn, вероятно, предназначен для разрешения локальных имен, например, getfqdn("router') == "gateway.mynetwork".   -  person Robert    schedule 06.04.2020
comment
Хорошо, справедливый вопрос. Что я пытаюсь сделать, так это разрешить некоторые IP-адреса, которые у меня есть, для полного доменного имени. Я не могу поделиться этими адресами, все, что я могу сказать, что они должны разрешаться в некоторые простые доменные имена, такие как google.com или finastra.com, но разрешаться во что-то похожее на то, что я получаю для этих двух. Как только это случилось с этими IP-адресами, я решил попробовать google.com или finastra.com и обнаружил, что они также производят несколько забавных полных доменных имен. Надеюсь, это объясняет, что я пытаюсь сделать.   -  person David Makovoz    schedule 06.04.2020


Ответы (1)


socket.getfqdn() вызывает socket.gethostbyaddr() (как указано в документах), чтобы разрешить адрес. socket.gethostbyaddr() выдаст DNS-запрос типа A (если домен не находится в вашем файле hosts), который будет разрешен к тому, какой 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 Not Found.

person DurandA    schedule 06.04.2020