2009-04-04 58 views
11

Có một trang web mà bạn có thể truy vấn bằng tên miền và nó sẽ trả về danh sách tất cả các trang web được lưu trữ trên IP đó. Tôi nhớ có một phương pháp trong C# đó là một cái gì đó giống như ReturnAddresses hoặc một cái gì đó của loại đó. Có ai có bất kỳ ý tưởng làm thế nào điều này được thực hiện? Quering tên máy chủ hoặc IP và đã trả lại danh sách tên máy chủ lưu trữ hoặc các trang web khác được lưu trữ trên cùng một máy chủ?Kiểm tra miền IP đảo ngược?

trang web là: http://www.yougetsignal.com/tools/web-sites-on-web-server/

Trả lời

17

Sau khi đọc các ý kiến, bobince chắc chắn là đúng và những 2 nên được sử dụng song song với nhau. Để có kết quả tốt nhất, bạn nên sử dụng tra cứu DNS ngược ở đây cũng như sử dụng bản sao DNS thụ động.

string IpAddressString = "208.5.42.49"; //eggheadcafe 

try 
{ 
    IPAddress hostIPAddress = IPAddress.Parse(IpAddressString); 
    IPHostEntry hostInfo = Dns.GetHostByAddress(hostIPAddress); 
    // Get the IP address list that resolves to the host names contained in 
    // the Alias property. 
    IPAddress[] address = hostInfo.AddressList; 
    // Get the alias names of the addresses in the IP address list. 
    String[] alias = hostInfo.Aliases; 

    Console.WriteLine("Host name : " + hostInfo.HostName); 
    Console.WriteLine("\nAliases :"); 
    for(int index=0; index < alias.Length; index++) { 
    Console.WriteLine(alias[index]); 
    } 
    Console.WriteLine("\nIP address list : "); 
    for(int index=0; index < address.Length; index++) { 
     Console.WriteLine(address[index]); 
    } 
} 
catch(SocketException e) 
{ 
    Console.WriteLine("SocketException caught!!!"); 
    Console.WriteLine("Source : " + e.Source); 
    Console.WriteLine("Message : " + e.Message); 
} 
catch(FormatException e) 
{ 
    Console.WriteLine("FormatException caught!!!"); 
    Console.WriteLine("Source : " + e.Source); 
    Console.WriteLine("Message : " + e.Message); 
} 
catch(ArgumentNullException e) 
{ 
    Console.WriteLine("ArgumentNullException caught!!!"); 
    Console.WriteLine("Source : " + e.Source); 
    Console.WriteLine("Message : " + e.Message); 
} 
catch(Exception e) 
{ 
    Console.WriteLine("Exception caught!!!"); 
    Console.WriteLine("Source : " + e.Source); 
    Console.WriteLine("Message : " + e.Message); 
} 

kê biếu không của http://www.eggheadcafe.com/community/aspnet/2/83624/system-dns-gethostbyaddre.aspx

+0

Ồ, sự giúp đỡ của bạn trong câu hỏi này được đánh giá rất nhiều. Nếu tôi biết tên của hoạt động được gọi, nó có thể làm cho nhiệm vụ của tôi cho một câu trả lời trong Google dễ dàng hơn nhiều nhưng tôi vui vì tôi có thể tin tưởng vào những người dùng stackoverflow tươi sáng như bạn khi các biện pháp khác thất bại. Nhiều đạo cụ. –

+0

Wow, cảm ơn. Tôi không biết nó hoạt động như thế này. –

+0

nó chỉ là một sự xấu hổ rằng câu trả lời là hoàn toàn không chính xác. Xem http://stackoverflow.com/questions/458841/reverse-ip-lookup và câu trả lời của Bobince cho câu trả lời đúng. – Alnitak

8

câu trả lời của Jeremy được dựa trên Reverse DNS, đó là cách programmatical bình thường để tìm kiếm IP> hostname. Nó dựa vào một bản ghi PTR được thiết lập cho máy chủ đó; điều này thường không phải lúc nào cũng được thiết lập cho một cái gì đó hữu ích.

Ví dụ: tra cứu, thedailywtf.com và bạn sẽ nhận được 74.50.106.245, nhưng vì không có bản ghi PTR cho “245.106.50.74.in-addr.arpa”, Dns.GetHostEntry() sẽ không trả lại bất cứ điều gì hữu ích.

Tương tự, nhiều trang máy chủ sẽ chỉ cung cấp cho bạn tên máy chủ chung như 123.45.67.89-dedicated.bigexamplehost.com.

Điều bạn đang làm là khác nhau, đó là “Sao chép DNS thụ động”. Họ chạy một số máy chủ DNS mà mọi người đang truy vấn và nhớ mọi tên máy chủ đã được tra cứu. Sau đó, bạn có thể truy vấn hồ sơ của họ về tra cứu quá khứ bằng địa chỉ đã được trả lại. Đặt 74.50.106.245 vào yougetsignal và bạn sẽ nhận được một danh sách các tên máy chủ đã được giải quyết trước đó cho máy chủ dailywtf khi mọi người truy vấn chúng, không liên quan gì đến mục nhập DNS ngược PTR.

2

DNS đảo ngược không giống với những gì bạn yêu cầu (trang web nào được lưu trữ trên cùng một máy chủ). Reverse DNS thường sẽ không hoạt động như bạn mong đợi (xem câu trả lời của bobince).

Để có thể xác định các trang web khác trong máy chủ, bạn cần xây dựng một cơ sở dữ liệu lớn và lưu trữ nhiều bản ghi DNS nhất có thể, sau đó tương ứng với địa chỉ IP.

Check-out: http://www.domaintools.com/reverse-ip/

Họ đang làm điều này như là cách tôi đã nói, đó là cách duy nhất để có được một kết quả chính xác. Rõ ràng phải mất thời gian, CPU, băng thông và không gian để tương quan và thu thập dữ liệu/tạo dữ liệu đó.