Avatar billede 2AA Nybegynder
12. januar 2010 - 23:22 Der er 2 kommentarer og
1 løsning

Hente oplysninger fra WHOIS database

Hej

Har en textbox hvor man skal indtaste webadresse. Kunne være smart, hvis man kunne tjekke webadressen igennem DK-hostmaster eller noget om den er gyldig eller ej. Det samme med e-mail-adresse!

Er det muligt? -og evt. hvordan? :-)
Avatar billede lasserasch Juniormester
12. januar 2010 - 23:34 #1
Det tror jeg bliver svært.

1. Du kan ikke tjekke om en mailadresse findes på domænet. Det ville også være sindsygt hvis man kunne. Så kunne alle der ville sende spam ud jo bare tjekke efter gyldige email adresse på alle mulige domæner og så målrettet kun udsende til mailadresser der rent faktisk eksisterer.

2. Du kan nok ikke lave noget direkte i din kode som laver WHOIS opslag hos DK Hostmaster. Men du kan nok godt finde en udbyder et sted, hvor man kunne betale sig fra det og på den måde hente domæne info.

3. Du kan jo godt tjekke om en URL eksisterer. Du kan jo bare lave et HTTP Request til den indtastede URL adresse og så se om du modtager et svar fra adressen. Hvis der svares med "Page cannot be found" kan du jo konstatere at siden ikke er en gyldig URL.


Mvh.
Lasse
Avatar billede Syska Mester
13. januar 2010 - 01:21 #2
Du kan rent faktisk godt finde ud af om en Email findes.

Reelt set bør en mail server ikke modtage en mail hvis den ikke er ansvarlig for den ... da der derefter er "DIT" problem.

Du kan lave en telnet til port 25.
lave helo
mail from: <fakeafsender@rigtigtdomain.tld>
rcpt to: <user@domain.tld>
Her bude serveren så gerne svare om den er gyldig eller ej.

Dog er der et problem at der findes mange serveren som gladeligt modtager mailen ... og derefter svarer tilbage til afsender om at den ikke kunne leveres.

Kaldt backscatter ... i spam verdenen ... og det sker så ufatteligt mange gange fordi Exchange og mange andre mail servere per default modtager ... men først efterfølgende undersøge om addressen findes ...

tsk tsk tsk ... velkommen til den vidunderlige spam verden som giver mig brød på bordet :-)

// ouT
Avatar billede Slettet bruger
13. januar 2010 - 09:04 #3
Du kan sagtens lave en funktion, der kalder DK Hostmasters whois-database. Jeg har selv lavet én der kører på http://www.discountdomains.dk/domaenetester.aspx

// *******************************************************************
    // TestDomain() - Tester et domæne hos whois-authority
    // *******************************************************************
    public static bool TestDomain(string domain)
    {
        bool available = false;

        TcpClient tcpClient = null;
        NetworkStream networkStream = null; ;

        try
        {
            // Split domænenavn og domæne-endelse så domæne-endelse kan benyttes
            string[] domainParts = new string[1];
            char[] splitter = { '.' };
            domainParts = domain.Split(splitter);

            // Forbind til whois-serveren
            tcpClient = new TcpClient(GetWhoisAuthority(domainParts[1]), 43);
            networkStream = tcpClient.GetStream();

            // Send domænet til whois-serveren
            byte[] buffer = Encoding.ASCII.GetBytes(domain + "\r\n");
            networkStream.Write(buffer, 0, buffer.Length);

            // Læs resultatet fra hostmaster
            StreamReader streamReader = new StreamReader(tcpClient.GetStream(), Encoding.ASCII);
            string strServerResponse = streamReader.ReadToEnd();

            // Sæt available til true hvis response matcher
            if (strServerResponse.Contains(GetWhoisResponse(domainParts[1])))
                available = true;
        }
        catch (Exception ex)
        {
            throw new Exception("Der opstod en uventet fejl!<br>" + ex.Message);
        }
        finally
        {
            networkStream.Close();
            tcpClient.Close();
        }

        return available;
    }

// *******************************************************************
    // GetWhoisAuthority() - Henter whois-authority for valgt domæne
    // *******************************************************************
    private static string GetWhoisAuthority(string domainExtensions)
    {
        Hashtable hashtable_Authorities = new Hashtable();
        hashtable_Authorities.Add("dk", "whois.dk-hostmaster.dk");
        hashtable_Authorities.Add("com", "whois.crsnic.net");
        hashtable_Authorities.Add("net", "whois.crsnic.net");
        hashtable_Authorities.Add("org", "whois.crsnic.net");
        hashtable_Authorities.Add("biz", "whois.neulevel.biz");
        hashtable_Authorities.Add("info", "whois.afilias.info");
        hashtable_Authorities.Add("name", "whois.nic.name");
        hashtable_Authorities.Add("eu", "whois.eu");
        hashtable_Authorities.Add("cc", "whois.nic.cc");
        hashtable_Authorities.Add("cn", "whois.cnnic.net.cn");
        hashtable_Authorities.Add("tw", "whois.twnic.net.tw");
        hashtable_Authorities.Add("us", "whois.nic.us");
        hashtable_Authorities.Add("hk", "whois.hkirc.net.hk");
        hashtable_Authorities.Add("as", "whois.nic.as");
        hashtable_Authorities.Add("at", "whois.nic.at");
        hashtable_Authorities.Add("be", "whois.dns.be");
        hashtable_Authorities.Add("ch", "whois.nic.ch");
        hashtable_Authorities.Add("de", "whois.denic.de");
        hashtable_Authorities.Add("gl", "whois.ripe.net");
        hashtable_Authorities.Add("it", "whois.nic.it");
        hashtable_Authorities.Add("li", "whois.nic.li");
        hashtable_Authorities.Add("pl", "whois.dns.pl");
        //hashtable_Authorities.Add("se", "whois.nic-se.se");
        hashtable_Authorities.Add("nu", "whois.nic.nu");

        if (hashtable_Authorities.Contains(domainExtensions))
            return hashtable_Authorities[domainExtensions].ToString();
        else
            return "whois.crsnic.net";
    }

    // *******************************************************************
    // GetWhoisResponse() - Henter respons for valgt top-level domæne
    // *******************************************************************
    private static string GetWhoisResponse(string domainExtensions)
    {
        Hashtable hashtable_Responses = new Hashtable();
        hashtable_Responses.Add("dk", "No entries found for the selected source.");
        hashtable_Responses.Add("com", "No match for");
        hashtable_Responses.Add("net", "No match for");
        hashtable_Responses.Add("org", "NOT FOUND");
        hashtable_Responses.Add("biz", "Not found:");
        hashtable_Responses.Add("info", "NOT FOUND");
        hashtable_Responses.Add("name", "No match.");
        hashtable_Responses.Add("eu", "Status:      FREE");
        hashtable_Responses.Add("cc", "No match for");
        hashtable_Responses.Add("cn", "no matching record");
        hashtable_Responses.Add("tw", "No Found");
        hashtable_Responses.Add("us", "Not found:");
        hashtable_Responses.Add("hk", "Domain Not Found");
        hashtable_Responses.Add("as", "Domain Not Found");
        hashtable_Responses.Add("at", "nothing found");
        hashtable_Responses.Add("be", "Status:      FREE");
        hashtable_Responses.Add("ch", "We do not have an entry in our database matching your query");
        hashtable_Responses.Add("de", "Status:      free");
        hashtable_Responses.Add("gl", "No entries found in the selected source(s)");
        hashtable_Responses.Add("it", "No entries found");
        hashtable_Responses.Add("li", "We do not have an entry in our database matching your query");
        hashtable_Responses.Add("pl", "No information about domain");
        //hashtable_Responses.Add("se", "No data found");
        hashtable_Responses.Add("nu", "NO MATCH for domain");

        if (hashtable_Responses.Contains(domainExtensions))
            return hashtable_Responses[domainExtensions].ToString();
        else
            return "";
    }

Here you go :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester