I en artikelserie om fyra delar kommer Fredrik Berglund guida dig i konsten att bygga Sveriges snabbaste – och smartaste – domänsök. Som före detta Loopian bygger Fredrik mer än gärna webbtjänster av olika slag som han samlat på sin webbplats blynt.com.

Som läsare av den här bloggen så vet du att att här på Loopia går utvecklingen framåt i rask takt. Inte bara kan du lansera en omfattande webbshop med bara några klick, du kan även administrera alla delar av ditt abonnemang i få, enkla, steg.
Ibland kan det dock vara nödvändigt att kavla upp armarna och bygga från grunden – men även här har tröskeln sänkts markant – och i denna bloggserie om fyra delar ska vi, till alla domänhajars stora glädje, bygga Sveriges inte bara snabbaste – utan också smartaste – domänsök.
När vi är klara kommer vi ha en domänsök som inte bara vida överglänser allt du sett i snabbhet, den kommer även ha IDN-stöd, erbjuda WHOIS-uppslagning, komma ihåg tidigare sökningar, kunna föreslå synonymer, ha koppling till Loopias API och givetvis erbjuda köp via Loopias orderformulär.
Är du riktigt ivrig så kan du kika på det slutgiltiga resultatet här, i annat fall är det bara att läsa vidare.
Till skillnad från Loopia som måste kunna erbjuda sina kunder exakta resultat genom att koppla upp sig mot respektive toppdomäns registry och matcha resultatet mot det egna kundregistret, så har vi inga sådana krav på oss. Därmed har vi friheten att välja sökmetod helt på egen hand. Slopar vi därför kravet på exakthet så kan vi öka snabbheten markant – och för oss som inte är domänleverantör så spelar det ju faktiskt inte så stor roll.
En vanlig lösning för snabb domänkontroll är att göra en s.k. WHOIS-uppslagning. WHOIS är en uppsättning databaser som innehåller information om registrerade domännamn. De är snabba, ger relativt exakta resultat, men är inte snabba nog för denna bloggserie – dessutom tillåter användarvillkoren i regel inte att man nyttjar dem på ett så automatiserat sätt.
Vi kommer istället basera vår tillgänglighetskontroll på förekomsten av DNS-data. Vi kommer alltså göra en DNS-uppslagning, och svarar DNS med att sådant finns för angivet domännamn så kommer vi markera domännamnet som upptaget – i annat fall som ledigt.
Det vi behöver för att bygga denna tjänst är en texteditor och lite kunskap i JavaScript med jQuery samt PHP. Har du ett webbhotellskonto här hos Loopia så kan den därför med fördel byggas under en domän eller subdomän med UNIX-stöd.
I sin enklaste tappning består vår nya domänsök av en klientdel (det som visas och hanterasav din webbläsare) och en serverdel (den del som faktiskt kontrollerar domännamnens tillgänglighet och som hanteras av Loopias UNIX-servrar). Vi börjar med serverdelen – det är ett kort PHP-skript som du hittar här.
Du kan anropa ovanstående kod genom att klicka på länken nedan (eller själv spara den i en PHP-fil under egen domän). För att du ska kunna se utmatningen kan du behöva pluginen JSONView för Chrome eller Firefox.
http://doman.blynt.com/find.php?name=domännamn&tlds=se,com,nu
En glad överraskning är, som du ser, att skriptet kan slå upp flera domäntyper direkt.
Så här fungerar det – vi börjar med att ange att utmatningen ska vara i formatet JSON. Det gör att det enkelt kan hanteras av vår JavaScript-kod längre fram. Sedan förväntar sig skriptet de två parametrarna name och tlds som representerar själva domännamnet och en lista över de domäntyper som du vill söka efter.
Skriptet kontrollerar vidare vilka tecken som domännamnet innehåller. Om det är annat än de vanliga a-z och 0-9 så antas det vara ett IDN-domännamn och då ACE-konverterar vi det med lite hjälpkod härifrån. Sedan går vi igenom alla domäntyper och kontrollerar om ett domännamn med den domäntypen har någon DNS-data. Om så är fallet markeras den som taken, i annat fall som free. Om DNS-uppslagningen skulle misslyckas av någon anledning får domänen värdet error. Därefter returneras svaret i form av ett JSON-objekt på följande format:
{status: “ok”, idn_name: “xn--domnnamn-2za”, se: “taken”, com: “free”, nu: “error”}
Nu har vi alltså ett serverskript som snabbt och enkelt kan slå upp flera domäntyper åt gången samt returnera desamma på ACE-format utifall domännamnet skulle vara av IDN-typ. Nu är det dags att börja bygga klientdelen av vår domänsök – dvs vår webbsida.
Koden för vår webbsida hittar du här
Det mesta är som du ser JavaScript och några rader HTML för att kunna presentera det hela för besökaren. Precis som Google så är allt vi visar ett sökfält – men så fort någon börjar skriva i det så inträffar det magiska – vid varje knapptryckning så skickar webbsidan iväg en förfrågan till vårt serverskript att slå upp det domännamnet under de domäntyper vi specificerat – vilket den gör en i rasande fart – och därefter visas resultatet upp i en lista nedanför sökfältet. Den uppmärksamme läsaren ser dessutom att vi lagrar alla tidigare sökresultat så att vi inte behöver skicka anrop till servern för sökningar vi redan gjort.
Eftersom dina vänner kommer älska din nya, snabba, domänsök så vore det förstås tjänstefel att inte tipsa om Loopias affiliate-program som gör det möjligt för dig att tjäna en slant på de eventuella webbhotellsbeställningar som görs via den. Vi har därför passat på att slussa orderklicken via TradeDoubler (en TradeDoubler-länk skapas automatiskt när man klickar på något av de eftersökta domännamnen) – du hittar mer information om Loopias affiliate-program här.
Prova gärna första versionen av Sveriges snabbaste domänsök här. Nästa vecka kommer vi lägga till WHOIS-uppslagning och sparande av tidigare sökningar. Vi ses!
Text: Fredrik Berglund
Här har du den / dem.
Per Wiklander
Postat 2011-11-26 klockan 17:36
Riktigt trevligt verktyg. Loopia borde ha en variant som först kör denna snabare koll och sedan följer upp med den säkrare under tiden. Då skulle man snabbare se relevant data.
Sen tycker jag att Loopia skulle må bra av fler förbättringar i användbarhet såsom alla smarta små detaljer i det här sökverktyget. Det har säkert hänt en del gradvis sedan det “nya” gränssnittet lanserades för ett par år sedan, men känslan man får är att det i stort har stått still. Plockar man in en resurs under en viss tid och bygger en sån här grejj och sedan återgår till att dra nätverkskabel, eller finns det dedikerad utvecklingspersonal?
Sen en kommentar angående resultatvisningen i den här domänsöken. Testa att göra alla dina din status-markörer (som nu är gröna eller röda beroende på status) i en och samma grå färg. Fråga dig nu om det fortfarande är lika lätt att se vilken status domänen har. Grattis! Välkommen till den härliga världen av röd/grön färgblindhet
. Jag föreslår att du lägger in en check/kryss-ikon i statusrutan och att du kanske gör den i en färgkombination som funkar bättre, typ att “ej tillgänglig” är “utgråad” (som diverse grejjer brukar vara när de är “disabled”).
Tack för en intressant artikelserie!
Postat 2011-11-28 klockan 10:09
Hej Per,
Kul att du gillar artikelserien.
Vi arbetar löpande med utveckling av våra tjänster, både med helt nya funktioner som “tidsmaskinen” (http://blogg.loopia.se/2011/03/10/tidsmaskinen-utokas-med-databaser/) och FTP-loggar i kundzonen (http://blogg.loopia.se/2011/09/01/nu-finns-ftp-loggar-i-kundzonen/), men också mindre justeringar och förbättringar av befintliga funktioner. Då våra tjänster och vår kundzon är väldigt omfattande är vi dock tvungna att göra detta efter en prioriteringslista. Självklart är vi väldigt tacksamma för alla önskemål, förslag och idéer på förbättringar så att vi kan fortsätta utforma våra tjänster enligt era önskemål.
Per Wiklander
Postat 2011-11-30 klockan 01:28
@Tård Aha, det verkar alltså som att klart användbar funktionalitet har tillkommit, men jag som användare har totalt missat den. Det beror antagligen på att jag hittils inte har behövt återställa en enda backup, vilket borde vara ett bra betyg i sig.
Postat 2011-11-30 klockan 14:44
Hej igen Per.
Ja, det är ju skönt att inte behöva använda tidsmaskinen. Men den är väldigt bra att ha när olyckan är framme. Vi informerar om de uppdateringar vi gör på bloggen, twitter, Facebook och i våra nyhetsbrev. Så missa inte att följa oss där så får du alltid veta när det kommer något nytt
.
Henrik
Postat 2011-12-08 klockan 11:30
En delay innan sökningen görs efter knapptryck kan vara en ide, 2-300ms kanske..
Om jag vill söka efter mittgrymmaforetagab är jag inte intresserad av att se m.se/com/osv, mi.se/com/osv, mit.se/com/osv, mitt.se/com/osv
Fyll i nedanstående formulär för att lämna en kommentar.
Love Nyberg
Postat 2011-11-22 klockan 11:13
Bra blogginlägg, ser fram emot nästa. Ska absolut testas.