ITU-studerende scrapede åbne statsdata med python-script - og fik sin IP-adresse blokeret

Et screenshot af Moderniseringsstyrelsens side, hvor man kan se statens regnskaber efter.
Statens ambition om gennemsigtighed har langt fra fundet vej til it-systemerne, beretter studerende hvis datascraper blev forvekslet med et DDoS-angreb hos Moderniseringsstyrelsen.

At skabe gennemsigtighed i den offentlige sektor er en af ambitionerne med den relativt nye Moderniseringsstyrelse. Af samme grund har styrelsen lagt en lang række bevillinger og statsregnskaber frem til skue på internettet - til frit brug for nysgerrige borgere, medier og de offentlige institutioner.

Så langt så godt.

Hvis man har planer om at sætte dataen i system og bruge den i praksis, kan man dog hurtigt løbe ind i problemer, viser en beretning fra Jesper Henrichsen, der er i gang med sin kandidat i Software Engineering på ITU.

I december satte han sig for at lave en visualisering af indtægter og udgifter i finanslovens budget for 2017. Og det var lettere sagt end gjort:

'Desværre er siden lavet sådan, at når man ønsker at downloade dataen via "Download" knappen, så får man kun en csv fil med den aktuelle rapportstruktur og filtrering. Eftersom der, for hver finanslov, er godt 30 paragraffer på det øverste niveau og 6 niveauer i alt, så er det en yderst omstændig opgave at trække al data ud manuelt med denne metode,' forklarer Jesper Henrichsen i en mailkorrespondance med Version2.

Som det hører sig til for en datalog tyede den ITU-studerende i stedet til et python-script, der scraper dataen - et engangsudtræk, der ikke belaster styrelsen servere vedvarende, forsikrer Jesper Henrichsen.

Derfor blev han også forundret, da hans IP-adresse prompte blev blokeret.

Det samme skete med en server med egen IP-adresse og fra ITU. Begge gange blev scriptet blokeret inden det havde kørt færdigt.

'I sidste ende lykkedes det, ved at oprette en virtuel instans hos Amazon, at scrape finanslovsdata for perioden 2003 til 2017,' skriver Jesper Henrichsen og uddyber:

'Optimalt havde det været muligt blot at hente data med en enkelt forespørgsel. I stedet har jeg brugt en masse tid på at lave et script som laver ca. 6 forespørgsler for hver linie i mit endelige udtræk - altså en unødig belastning af systemet med ca 672.000 forespørgsler.'

Lignede et DDoS

Få kilometer fra ITU ligger Moderniseringsstyrelsen i Indre By i København. Her bliver databasen med finanslove tilgået i snit ca. 10.000 gange om måneden.

'Den 11. december 2016 konstaterer vores driftsovervågning en meget kraftig vækst i trafikken til finanslovsdatabasen fra tre specifikke ip-adresser,' bekræfter styrelsen.

'Vi beslutter derfor, af sikkerhedsmæssige årsager, at blokere trafikken fra de tre adresser, idet det konstaterede trafikmønster indikerer et begyndende Denial-of-Service angreb på vores systemer, hvorefter trafikmængden faldt til det normale niveau,' fortsætter styrelsens forklaring.

Moderniseringsstyrelsen oplyser også, at blokeringen af de tre ip-adresser nu er ophævet. Det var den ikke, da Jesper Henrichsen tog kontakt til Version2.

Styrelsen kan da også oplyse, at rå-data til bevillingslove og statsregnskaber bedst lader sig hente på adressen http://www.oes-cs.dk/bevillingslove/data/ - en adresse, der i skrivende stund ikke giver noget resultat.

Med tippet lykkedes det dog Jesper Henrichsen at finde frem til den rigtige adresse (http://www.oes-cs.dk/bevillingslove/data.html) - som han blankt erkender, at han ikke kendte noget til.

'Når det er sagt så synes jeg ikke at det gør det mere transparent, dels fordi det er meget svært at finde, både fra google og fra deres egen side,' forklarer han til Version2.

Døde links

Version2 har også besøgt den famøse portal til indsigt i statens finanser.

På siden http://www.oes-cs.dk/bevillingslove/ kan man læse sig til, at Bevillingslovpublikationerne kan skaffes på fire forskellige måder - herunder som trykt bog. Siden henviser behjælpeligt også til Finansministeriets Finanslovsdatabase, som dog er en blank side.

Det samme gælder linket til de detaljerede regnskabstal via Finansministeriets Regnskabsdatabase.

Hvorom alting er kan denne journalist godt forstå, hvorfor Jesper Henrichsen undrer sig over den såkaldte gennemsigtighed:

'Min undren er, at den data, som Moderniseringsstyrelsen ellers har gjort tilgængelig i form af finanslovsdatabasen, stadig kræver så meget teknisk kunnen før den reelt er tilgængelig. Altså i et format der kan bearbejdes og analyseres uden at være datalog.'

Selv med den nye information om tilgængelig rådata, vurderer Jesper Henrichsen, at det har været nemmere at scrape Moderniseringsstyrelsen side med et hjemmelavet script, end det ville have været for mig at finde og arbejde med den udgivne data.

'Formatet flytter bare kompleksiteten over i at samle de underliggende kontotekster ud fra det udgivne format, førend det kan give nogen form for indsigt,' konstaterer han.

'Man har glemt, hvorfor man lagde data ud'

Projektet lykkedes - Jesper Henrichsens vellykkede visualisering kan ses her, og koden bag kan ses på GitHub. Det samme kan Python-scraperen og de scrapede data.

Helt tilfreds er den ITU-studerende dog ikke:

'Jeg sidder tilbage med en fornemmelse af, at man har glemt hvorfor man overhovedet har brugt tid og penge i at lægge data tilgængeligt til at begynde med,' bemærker han.

'Det undrer mig især eftersom Moderniseringsstyrelsens egen vision bl.a. er at skabe gennemsigtighed og levere effektiv systemunderstøttelse, men når det er nødvendigt at lave en scraper for at få fat i informationen så er det både en dårlig løsning for mig og for dem.'

Tips og korrekturforslag til denne historie sendes til tip@version2.dk

Følg forløbet

Kommentarer (17)

Jens Jensen

Det er utroligt hvor meget den generelle befolkning kunne lære af bare at klikke sig rundt i få minutter i den model.

Det er jo utroligt at se, at det som giver det meste ævl i medierne, over-hækken-diskussioner og valgkampe, ofte bare er ganske tynde skiver i lagkagen.

Morten Friberg

Virkelig brugbar grafisk oversigt. Spændende at dykke lidt ned i tallene.

Til en anden gang, så kunne man overveje at kontakte side-ejeren og forhøre sig om muligheden for at scrape større mængder data. Det har jeg selv haft positive oplevelser med, fx hos Rejseplanen (dog ikke scraping, blot mange requests til deres API). Men ville selvfølgelig være optimalt, hvis de fra start af udstillede data i et mere let-bearbejdeligt format (JSON fx) og linkede korrekt til det.

Christian Nobel

Modellen giver et godt overblik, men er der nogen der kan forklare hvordan der kan være en udgift på 270 milliarder til skatter og afgifter?

Og så kunne det være spændende med et tilsvarende tal for kommuner og regioner, så man kunne se landets samlede budget.

Lasse Mølgaard

Mit bud? Personligt fradrag.

Skatter på indkomst og formue har en udgift på 266 mia.

Det giver en gennemsnitlig beløb på cirka 48.000 per person, men da dette tal gælder for alle fra 0 år og opefter, skal udgiften nok fordeles på færre folk. :-)

Jan Gundtofte-Bruun

Ja undskyld mig, men hvad hulen har "oes-cs" at gøre med skat, finanslov, eller Moderniseringsstyrelsen? Hvornår begynder lille Dannevang at bruge et fornuftigt domæne hierarki i stedet for alle disse separate (og underligt navngivne) domæner?

Jens loggo

Det er desværre helt typisk, når det offentlige (og andre) tager en god beslutning om at gøre information tilgængeligt. Der har været mange eksempler, hvor det har være ekstremt upraktisk at tilgå informationen, med elendige søgefunktioner og dårlige opdelinger af data.

Kristian Sørensen

Husk på hvad der skete for et års tid siden da en eller anden besluttede sig for at hente noget dansk "offentlig information online" og stille materialet offentligt til rådighed bag en bedre brugerflade end den det offentlige selv havde lavet:

https://www.version2.dk/artikel/it-advokat-om-tingbogen-kopi-det-kan-giv...

https://www.version2.dk/artikel/bagmanden-bag-kopieret-tingbogen-databas...

https://www.reddit.com/r/Denmark/comments/42w67s/i_am_the_person_who_mad...

Heino Svendsen

Man KUNNE foranledes til at tænke, at systemet virker, som det er tiltænkt :

Hvis man gør det mere besværligt at hente data, så lader folk være ved at gennemgå data, og derved kan man undgå at få fremstillet fx. et overforbrug.

Jesper Henrichsen

Hej Philip, tak skal du have. En historisk kontekst var netop en ting jeg ville tilføje. En af udfordringerne i forhold til at gøre det er nyoprettelser af ministerier, ministeriesammenlægninger og omdøbninger siden 2003, hvilket har gjort at mange poster ikke har det samme ID på trods af at det ellers er den samme post.

Peter Hansen

Det står for "Økonomistyrelsens centrale systemer". Navnet er bare i god mainframe-ånd ikke blevet opdateret siden Økonomistyrelsen blev til Digitaliseringsstyrelsen for 6 år siden.

Hvis man kører en SSL-Labs test på siden får den dumpekarakteren "F", fordi den kun understøtter RC4 og TLS 1.0. Noget kunne tyde på, at den underliggende software ikke er blevet opdateret i en årrække, hvilket ikke borger godt for sikkerheden på siden...

Henrik Sørensen

En offentligt tilgængelig, statslig hjemmeside, som er tåbeligt navngivet, svær at finde, har dårligt brugerinterface, er håbløst forældet og mangler basal sikkerhed...?!? Chokerende!

Det er heldigvis et enestående tilfælde. Det er nemlig aldrig set før...

Henrik Sørensen

Ja, der er desværre mange eksempler.

Et helt åbenlyst er det centrale virksomhedsregister. Det hedder cvr.dk - men navnet linker til det meget mundrette datacvr.virk.dk/data/. Nu virker linket dog både med og uden www - det tog tre år...

Indtil for nyligt stod samtlige virksomhedsnavne efter en konvertering med rene kapitæler - bortset fra ApS, som stod rigtigt. Fejlen er efter to år nu rettet.

Ved konverteringen havde man også lige "nappet" foran- og efterstillede mellemrum omkring bindestreger (en fejl som stadig er aktuel) - men søgemaskinen betragtede altid bindestreg som en orddelingsstreg. Med det resultat, at man KUN kunne finde "FDF - Roskilde kreds" ved at søge på "FDFRoskilde". FDF virkede ikke, og Roskilde virkede ikke. Søgemaskinen er tilrettet for nylig - efter tre års tilløb...

... til gengæld er siden rutinemæssigt nede flere timer mange nætter. Så autoopslag fra f.eks. amerikanske hjemmesider fejler hele formiddage.

Men hey, oplysningerne er jo heller ikke vigtige. De danner blot det (eneste sikre) juridiske grundlag for samhandel mellem virksomheder.

Jesper Henrichsen

Hele den del af siden, hvor data åbenbart er tiltænkt at skulle hentes fra, er explicit udelukket fra google og andre søgemaskiner: http://www.oes-cs.dk/robots.txt. Undersiden /bevillingslove er netop der hvor information om hvilke finanslovsdata der er tilgængeligt og hvordan, kan findes.

Så havde det givet mere mening om der istedet havde stået 'disallow' for undersiden /olapdatabase, når nu det er der bots ikke er ønsket.

Log ind eller opret en konto for at skrive kommentarer

Partnernyheder

Welcome to a seminar on tools that help you become GDPR compliant!

Getting GDPR compliant by May 2018 implies a lot of activities covering the legal aspects, internal business processes, data management, and security technology.
28. feb 2017

Maja Rosendahl Larsen ansat hos Affecto

24. jan 2017

Introduction to Jedox – Affecto Seminar, Copenhagen

12. jan 2017