Webbkoll - teknisk dokumentation
Koden till vårt webbplatstestverktyg Webbkoll finns på GitHub: https://github.com/andersju/webbkoll
Där finns även instruktioner på engelska om hur du kan sätta upp en egen instans av verktyget. I vår ursprungliga projektplan lovade vi dock att ha dokumentation även på svenska. Senare insåg vi att det var föga meningsfullt, men för att hålla vad vi sagt är nedanstående en översättning av README:n så som den såg ut vid commit 3f8dd69 den 30 augusti 2016.
Webbkoll försöker simulera vad som händer när en användare besöker en viss sida med en typisk webbläsare, utan att klicka på något, och utan några speciella webbläsartillägg installerade, och med Do Not Track (DNT) inaktiverat - eftersom detta är standardbeteende i de flesta webbläsare.
I korthet: frontend (Phoenix) ber backend (PhearJS) besöka en sida med hjälp av PhantomJS. Backend besöker och renderar sidan, samlar in diverse data (gjorda förfrågningar, kakor, HTTP-headers, etc.), och skickar tillbaka detta som JSON till frontend som analyserar och presenterar resultaten på en webbsida tillsammans med förklaringar och tips.
Frontend är flerspråkigt och stöder för närvarande engelska och svenska.
exq används för jobb-/köhantering, och grundläggande rate limiting görs med ex_rated. Det är möjligt att använda flera backends.
Observera att verktyget främst är menat att användas som en utgångspunkt för webbutvecklare. För mer rigorös och systematisk analys rekommenderar vi att du kollar in OpenWPM, som vi använde för att analysera alla svenska kommunwebbplatser (resultat, kod).
Det här är ett projekt av Dataskydd.net. Vi fick ekonomiskt stöd från Internetfonden / IIS.
Backend
- Få igång PhearJS - se https://github.com/Tomtomgo/phearjs/blob/master/README.md. (Klona https://github.com/andersju/phearjs/ för att används den som Dataskydd.net kör.)
Ruby-klient
Om du bara vill ha datan i maskinläsbart format behöver du bara PhearJS och den enkla Ruby-klienten som du hittar i misc/ruby-client
:
- Se till att Ruby är installerat på ditt system och att PhearJS är igång. Sedan, i
misc/ruby-client
: - Installera dependencies:
bundle install
- För att se möjliga val, kör
ruby webbkoll.rb --help
- Exempel:
ruby webbkoll.rb http://www.example.com
- Som standard är backend
http://localhost:8100
, och programmet skriver JSON till STDOUT. - Vänligen observera att programmet just nu är väldigt grundläggande.
Frontend
- Installera Erlang (18) och Elixir (>= 1.3) -- se http://elixir-lang.org/install.html
- Ha redis igång (krävs för exq:s jobbhantering)
- Se till att du har en fungerande PostgreSQL-installation
- Installera dependencies med
mix deps.get
- Skapa och migrera databas med
mix ecto.create && mix ecto.migrate
- Installera Node.js-dependencies med
npm install
- Se till att PhearJS och redis är igång på de hosts/portar som specificerats i
config/dev.exs
- Starta Phoenix med
mix phoenix.server
(eller i ett interaktivt skal:iex -S mix phoenix.server
)
Om allt gick som det skulle kan du nu besöka http://localhost:4000 i din webbläsare.
För att köra i produktion, skapa config/prod.secret.exs
och skriv något likt följande (redigera secret_key_base
och ändra databaskonfigurationen efter behov):
use Mix.Config # In this file, we keep production configuration that # you likely want to automate and keep it away from # your version control system. config :webbkoll, Webbkoll.Endpoint, secret_key_base: "somelongrandomstring" # Configure your database config :webbkoll, Webbkoll.Repo, adapter: Ecto.Adapters.Postgres, username: "postgres", password: "postgres", database: "webbkoll_prod", pool_size: 20
Skapa och migrera databas:
MIX_ENV=prod mix ecto.create MIX_ENV=prod mix ecto.migrate
Kompilera statiska resurser:
node_modules/brunch/bin/brunch build --production MIX_ENV=prod mix phoenix.digest
Kompilera applikaton:
MIX_ENV=prod mix compile
Slutligen, starta servern (lyssnar på port 4001 som standard):
MIX_ENV=prod mix phoenix.server
Eller starta servern i ett interaktivt skal:
MIX_ENV=prod iex -S mix phoenix.server
Se även Phoenix officiella deployment guides.