onsdag 3 december 2008

Så fixar du ett schysst mobilnummer hos Tele2

För några dagar sedan skulle jag teckna ett nytt mobilabonnemang, och hade kommit fram till att "Tele2 Snackis" skulle passa mitt användningsmönster. Jag gick in på Tele2:s sajt och klickade mig fram till det abonnemang jag var intresserad av och möttes då av ett formulär där jag kunde välja bland tio olika telefonnummer (visas på bilden nedan).

Välja-nummer-formuläret hos Tele2

Inte helt förvånande så var jag inte intresserad av något av de nummer som formuläret föreslog, de kändes alla som mer eller mindre godtyckliga och inget som fastnar på minnet direkt. Missnöje så långt alltså.

I det här läget hade jag kunnat ringa till Tele2:s kundtjänst och bett dem lägga upp abonnemanget - de har säkert en bättre överblick över tillgängliga nummer och kan hitta något som är lätt att komma ihåg. Men eftersom jag skyr kontakt med andra mänskliga varelser (plus är en nörd) ville jag lösa detta själv.

Nyckeln i det hela visade sig vara att om jag gick bakåt i webbläsarens historik och klickade på länken som öppnar formuläret igen så fick jag tio nya nummer. En möjlighet för lite hederligt manuellt, enformigt arbete öppnade sig. Efter att ha klickat fram och tillbaka en stund utan att hitta några särskilt grymma nummer tröttnade jag. Det var inte bara tråkigt, utan även väldigt lätt hänt att missa ett bra nummer; människan är visserligen bra på att känna igen mönster, men det var för den sakens skull inte trivialt att genom inspektion på kort tid avgöra om något av de presenterade numren exempelvis slutade på grupper av likadana tal om två eller tre siffror, bestod av jämna tio- eller hundratal, hade snyggt stigande eller fallande ordning och så vidare. Det finns helt enkelt för många mönster som passar in på "bra" telefonnummer. Jag behövde en automatisk lösning.

Genom tidigare experimenterande har jag stiftat bekantskap med WebBrowser-kontrollen som finns tillgänglig för Winforms-.NET-program. Det är i princip ett Internet Explorer-fönster som man kan lägga in i sitt eget GUI och kontrollera via kod. Lite bångstyrig kan den vara, men den går att tämja. Att exempelvis få den att navigera till en given adress och plocka ut givna HTML-element ur sidan är trivialt, eftersom man har tillgång till HTML-dokumentet med DOM-träd och allt via WebBrowser-kontrollen.

Så vad jag gjorde var ett enkelt program som gick in på sidan med nämnt formulär, tittade igenom alla valbara telefonnummer och utvärderade vart och ett av dem mot en uppsättning regler. Detta resulterade i en viss mängd poäng per nummer - exempelvis gav det mycket poäng om numret slutade på två eller fler nollor, om det slutade på två likadana tal med tre siffror i varje, och så vidare.

Om poängen för det "bästa" numret på sidan kom över en viss tröskel så stannade programmet och lät mig gå vidare med registreringen av abonnemanget. Annars laddades sidan om och en ny utvärdering gjordes. Om programmet stannade på ett nummer som jag inte tyckte om kunde jag klicka på en knapp för att få programmet att fortsätta leta.

På det sättet kunde jag efter några minuter utropa mig som ägare av 0735-95 96 00. Lätt som en plätt! Jag vet inte exakt hur många nummer som programmet gått igenom vid det laget, men jag skulle tro att det hade motsvarat åtminstone någon timmes manuellt sökande, i snitt (man kan förstås ha tur).

Jag hoppas verkligen att mitt lilla itererande inte åsamkat Tele2 någon form av skada - jag vet ju inte hur de här nummerserierna allokeras, om Tele2 "beställer" dem löpande vid behov, men i och med att upplägget är sådant att man får fram nya nummer varje gång man öppnar sidan med formuläret så gissar jag att så inte är fallet. Och jag har ju inte "hackat" deras tjänst i någon mening, bara surfat väldigt snabbt...

Och så var det med den saken. Programmet får du skriva själv om du vill göra samma sak, jag ville bara dela med mig av hur jag gick till väga.

6 kommentarer:

  1. Bra jobbat. Lite fult av Tele2 att inte prioritera "bra" nummer när de väljer ut listan, eller någon sorts sökfunktion där man kan hitta nummer enligt vissa mönster...

    SvaraRadera
  2. Fiffigt, kan ju bara hoppas på att reglerna bestod av regular expressions dessutom :D

    SvaraRadera
  3. Jonas: Håller med...dock, de bra numren skulle nog i och för sig ta slut rätt snabbt om man fick välja fritt. Men men...

    Ajden: Det gjorde de! Klart enklaste sättet att definiera dem.

    SvaraRadera
  4. Det är så genialt, men samtidigt så otroligt frånvänt allt vad normalitet innebär. Du är Nörd-idol 2008 iallafall, så mycket står klart. Otroligt roligt =)

    SvaraRadera
  5. Finns det någon möjlighet att man skulle kunna få låna ditt lilla script? Behöver nämligen också ett nytt guldnummer för ett kompisabbonemang jag hade tänt att beställa.

    SvaraRadera
  6. Tyvärr Josef, jag har inte kvar det. Hade det på min tidigare jobbdator, och nu har jag bytt jobb...men fråga någon programmerarkompis så kan de säkert hjälpa dig.

    SvaraRadera