Очень часто сайты имеют несколько IP-адресов. Веб-сайт может быть распределен по нескольким местам и регионам, и использование нескольких IP-адресов, помимо прочего, помогает в балансировке нагрузки и оптимизации сетевого трафика. Общепринятым методом является маршрутизация запросов к ближайшим IP-адресам (хотя активная балансировка нагрузки может помешать этому), следовательно, онлайн-проверка IP-адресов может производить IP-адреса ближе к нему.
Почему? Поскольку DNS является иерархически распределенной региональной базой данных, Google может иметь IP-адрес (а) в Китае, и это означает, что он будет регистрироваться в основном на DNS-серверах этого региона. Поэтому наивные запросы на IP-адреса Google из Китая будут производить эти / эти IP-адреса, а запросы из Австралии - другие / другие IP-адреса.
Чтобы усложнить задачу, сети доставки контента, такие какCloudflare предоставляет IP-адрес веб-сайта, который не является его реальным IP-адресом. Они делают это в рамках своих стратегий по снижению риска DDoS и общей стратегии веб-безопасности.
Все вышеперечисленное затрудняет получение списка, который содержит полный и универсальный список IP-адресов конкретного веб-сайта. Однако, если вы запрашиваете одни и те же DNS-серверы из одного и того же места, вы должны получить довольно постоянный список IP-адресов, назначенных этому хосту.
Теперь, что касается вашего кода, когда вы делаете:
hosten.AddressList[0]
вы берете только первый IP-адрес в этом списке, который может быть only IPесли этот конкретный хост имеет только один, но может быть первым из нескольких разрешенных IP-адресов этого хоста. Вы должны проверить все элементы AddressList
.