我正在开发一个 c# 控制台应用程序,在我的控制台应用程序中,我有以下代码来获取网站的 IP:-
using System.Net
using System.Web;
using System.IO;
namespace MyConsoleApp
{
class Program
{
static async Task Main(string[] args)
{
IPHostEntry hosten = Dns.GetHostEntry("www." + website);
if (hosten.AddressList.Count() >= 1)
{
string ip = hosten.AddressList[0].ToString();
但是与我从一些在线 IP 检查站点(例如 https://www.site24x7.com/find-ip-address-of-web-site.html)获得的 IP 相比,我为该网站获得的 IP 将有所不同。 .. 正在使用
System.Net.Dns.GetHostEntry()
了解网站 IP 地址的可信方法?如果答案是肯定的,那么为什么我从在线 IP 检查器站点获得不同的 IP?
最佳答案
网站拥有多个 IP 地址是很常见的。一个网站可以分布在多个地方和地区,使用多个 IP 地址有助于负载平衡和网络流量优化等。一种常见的技术是将请求路由到最近的 IP(尽管主动负载平衡可以阻止它),因此,在线 IP 检查器可以生成更接近它的 IP。
为什么?由于 DNS 是一个分层的分布式区域数据库,因此 Google 可能在中国拥有一个(或多个)IP 地址,这意味着它将主要在该地区的 DNS 服务器中注册。因此,来自中国的对谷歌 IP 的朴素查询将产生那个/那些 IP,而来自澳大利亚的查询将产生另一个/其他 IP。
更复杂的是,像 Cloudflare 这样的内容交付网络公开了一个网站的 IP,这不是它的真实 IP。他们将其作为 DDoS 缓解和整体 Web 安全策略的一部分。
上述所有情况都使得很难获得包含特定网站 IP 地址的完整和通用列表的列表。但是,如果您从同一位置查询相同的 DNS 服务器,您应该获得分配给该主机的相当恒定的 IP 地址列表。
现在,关于您的代码,当您这样做时:
hosten.AddressList[0]
您只使用该列表中的第一个 IP 地址,可能是 只有 IP,如果该特定主机只有一个,但可能是该主机的多个已解析 IP 中的第一个。您必须检查
AddressList
的所有元素.
关于c# - 使用 "System.Net.Dns.GetHostEntry()"获取网站的 IP 地址,与某些在线 IP 检查器站点相比,将给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58595246/