将ASP.NET(MVC)中的DNS解析为主机名/代理

时间:2010-12-16 13:55:08

标签: c# dns ip hostname

好吧,这个问题听起来有点愚蠢,我知道。我已经看了一些关于它的其他问题,即使我找到了正确的答案,我也会得到不一致的结果。我会尽可能明白地说出来。

我有一个问题,我网站上的大量访问者正在使用...我使用非常宽松的术语,互联网服务(AOL)来访问它。这超出了我的控制范围。它是用户群的很大一部分,我无法阻止它们使用其内置的浏览器(源自IE)。

现在,这不是继承问题。问题是通过浏览器访问的任何站点都会通过其中一个代理。这不会引起任何冲突,但我们需要知道谁是独特的,谁不是出于某些特定原因。

我安装了一个名为“Invision Power Board”的流行留言板系统。它跟踪人们的IP地址,并具有解析IP的功能。所以,我可以点击一个IP,它将“解析”给像...这样的主机。

IP XX.XXX.XX.XXX解析为cache-dtc-ae16.proxy.aol.com

现在我明白了这里发生了什么。 cache-dtc-ae16.proxy.aol.com是代理人,所以我对此无能为力。我接受了这个。执行此操作的代码是在IPB中,我不会说PHP,所以我在那个部门是SOL。

我知道如何获取用户的IP地址。

HttpContext.Request.UserHostAddress

我想知道的是......来自IP,如何在C#中“解析”该代理?我基本上想要设置一个代码的特定部分,它拒绝来自具有.aol的代理的任何内容。在里面。

我想说的是什么,甚至是可行的还是可能的?我可能完全错过术语。我相信我明白这一点。

UserHostAddress is the **client's** IP Address

这是我基本上尝试过的。

System.Net.Dns.GetHostEntry(System.Net.IPAddress.Parse(HttpContext.Request.UserHostAddress)).Aliases

3 个答案:

答案 0 :(得分:2)

你想从ip获取域名吗? 看起来你的答案就是这个问题here

IPHostEntry IpToDomainName = Dns.GetHostEntry("209.85.129.103");
string HostName = IpToDomainName.HostName; //it returns "fk-in-f103.1e100.net"

答案 1 :(得分:0)

这是TCP协议的限制。该地址是TCP数据包的一部分,据我所知,路由器和交换机以及NAT和代理会更改地址并自行设置。

据我所知,没有办法绕过它。代理商的地址和你要的一样好。

我相信即使是TCP数据包的MAC(物理)地址也将是代理服务器,但这是值得关注的,尽管不确定是否可以在ASP.NET运行时获取,因为请求可以包含多个TCP数据包。

答案 2 :(得分:0)