Node.js, Express, Cloudflare tai oma
Jokainen liitin tarvitsee samat kolme asetusta Looku-asennuksestasi:
LOOKU_ENDPOINT=https://looku.example.comLOOKU_SITE_ID=myblogLOOKU_SIGNING_KEY=allekirjoitusavaimesiPidä ne poissa gitistä kuten mikä tahansa salasana. Node.js-liitin lähettää tietoja vain, kun NODE_ENV=production.
Node.js ja Express
Osio nimeltä “Node.js ja Express”-
Kopioi kaksi tiedostoa Lookun repositoriosta projektiisi, esimerkiksi kansioon
lib/:packages/next/src/index.jsnimellälib/looku-next.js,packages/node/src/index.jsnimellälib/looku-node.js.
Toinen tiedosto tuo ensimmäisen nimellä
@looku/next. Avaalib/looku-node.jsja muuta tämä import muotoon"./looku-next.js". -
Lisää middleware Express-sovellukseesi ennen reittejäsi:
import express from "express";import { lookuMiddleware } from "./lib/looku-node.js";const app = express();app.use(lookuMiddleware({ trustProxy: true }));Pelkässä
http-palvelimessa kutsu sen sijaantrackNodeRequest(req, res)pyynnönkäsittelijän alussa. -
Aseta
trustProxyympäristösi mukaan. Liitin tarvitsee kävijän IP-osoitteen kävijöiden laskemiseen. Se, mistä liitin osoitteen lukee, riippuu siitä, mitä sovelluksesi edessä on:Sovelluksesi edessä Valinta ei mitään, kävijät yhdistävät suoraan jätä trustProxypoisyksi käänteinen välityspalvelin (nginx, Caddy), joka asettaa X-Forwarded-For-otsakkeentrustProxy: true(tai1)kaksi välityspalvelinta trustProxy: 2pelkkä Cloudflare ipHeaders: ["cf-connecting-ip"]eikätrustProxy-valintaaVäärä asetus ei riko sivustoasi, mutta kävijät lasketaan silloin väärin: joko kaikki näyttävät välityspalvelimelta (yksi kävijä), tai kävijä voi väärentää osoitteen.
-
Käynnistä sovelluksesi uudelleen kolmella asetuksella ja asetuksella
NODE_ENV=production, avaa sivu ja tarkista kojelauta.
Tämä liitin laskee vain onnistuneet HTML-vastaukset (tila 2xx tai 304, kun selain tarkistaa välimuistissaan olevan sivun uudelleen), joten puuttuvia sivuja ei lasketa.
Staattiset sivustot Cloudflare Workersissa tai Pagesissa
Osio nimeltä “Staattiset sivustot Cloudflare Workersissa tai Pagesissa”Staattisella sivustolla ei ole omaa palvelinta, joten liitin toimii sen edessä Cloudflare Workerissa. Esimerkki
examples/cloudflare-worker/worker.js
tarjoilee sivustosi ja lähettää sivunäytön taustalla jokaisen onnistuneen HTML-vastauksen jälkeen.
- Kopioi
examples/cloudflare-worker/worker.jsWorker-projektiisi japackages/next/src/index.jssen viereen nimellälooku-next.js. - Lisää
LOOKU_ENDPOINTjaLOOKU_SITE_IDmuuttujiksi jaLOOKU_SIGNING_KEYsalaisuudeksi. Wranglerilla:npx wrangler secret put LOOKU_SIGNING_KEY, joka kysyy arvon. Cloudflaren kojelaudassa avaa Worker ja siirry kohtaan Settings → Variables and Secrets (hakusana: “Variables and Secrets”). - Julkaise ja avaa sivu.
Kävijän osoitteena luotetaan vain Cloudflaren omaan cf-connecting-ip-otsakkeeseen, koska Cloudflare asettaa sen
aina itse.
Oma liitin
Osio nimeltä “Oma liitin”Mikä tahansa ohjelmointikieli käy. Lähetä jokaisesta sivunäytöstä:
POST https://looku.example.com/ingestContent-Type: application/jsonX-Looku-Site: myblogX-Looku-Signature: t=1762160000,v1=5f2c…ja JSON-runko:
{ "type": "pageview", "ts": "2026-11-03T10:00:00.000Z", "path": "/hello", "referrer": "https://google.com/", "ip": "198.51.100.7", "ua": "Mozilla/5.0 …", "country": "FI", "utm_source": "news" }ton nykyhetki Unix-sekunteina.v1on HMAC-SHA256 tekstistä<t>.<body>(luku, piste ja täsmälleen lähettämäsi rungon tavut). Avaimena on allekirjoitusavain, ja tulos kirjoitetaan pienillä kirjaimilla heksadesimaalina.path,ipjauaovat pakollisia.country(kaksi kirjainta) jautm_-kentät ovat valinnaisia.- Jokainen allekirjoitus hyväksytään kerran ja vain viiden minuutin sisällä ajasta
t, joten lähettäjän kellon on oltava oikeassa.
Vastaukset: 202 hyväksytty, 400 virheellinen runko (syy on vastauksessa), 401 väärä allekirjoitus, sivuston
tunnus tai aika, 409 sama allekirjoitus on jo käytetty, 413 liian suuri.
Ohita itse botit, esilataukset ja tiedostopyynnöt, ja kunnioita Do Not Track -toivetta. Tiedoston
packages/next/src/index.js funktiot sendToLooku ja buildPageview ovat täydellinen mallitoteutus. Tunnettujen
bottien lisäksi buildPageview ohittaa pyynnöt, joissa ei ole Accept-Language-otsaketta, pyynnöt, joissa on Do Not
Track- tai Global Privacy Control -signaali, sekä HTTPS:n yli tulevat pyynnöt, jotka esiintyvät uutena selaimena
ilman Sec-Fetch-Mode-otsaketta.