Du hittar inte JavaScript-läckor när du ”har tid”. Du hittar dem efter ett kundmejl, en säkerhetsvarning eller ett panikartat meddelande om att en API-nyckel exponerats i en publik bundle.
Det här upplägget för OpenAI Gmail scans träffar SecOps-ansvariga först, men produktfokuserade utvecklare och upptagna byråägare känner av det också. Du får ett repeterbart sätt att skanna valfri URL efter läckta nycklar, e-postadresser och PII, och sedan få en tydlig rapport i inkorgen.
Nedan ser du exakt vad arbetsflödet gör, vad det returnerar och vad du behöver för att köra det i n8n utan att det blir ett projekt som tar en hel vecka.
Så fungerar den här automatiseringen
Hela n8n-arbetsflödet, från trigger till slutlig output:
n8n Workflow Template: OpenAI + Gmail: skanna JS-läckor med mejlade rapporter
flowchart LR
subgraph sg0["Inbound Form Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>Inbound Form Trigger"]
n1@{ icon: "mdi:cog", form: "rounded", label: "Browser Crawl Runner", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Script URL Extractor"]
n3@{ icon: "mdi:cog", form: "rounded", label: "Combine Script List", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Aggregate Payload", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Security Scan Agent", pos: "b", h: 48 }
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Email Report Formatter"]
n7@{ icon: "mdi:message-outline", form: "rounded", label: "Dispatch Gmail Notice", pos: "b", h: 48 }
n8@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Engine", pos: "b", h: 48 }
n3 --> n4
n1 --> n2
n4 --> n5
n0 --> n1
n8 -.-> n5
n2 --> n3
n6 --> n7
n5 --> n6
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n5 ai
class n8 aiModel
class n2,n6 code
classDef customIcon fill:none,stroke:none
class n0,n2,n6 customIcon
Problemet: JavaScript-läckor gömmer sig mitt framför ögonen
Moderna sajter skickar mycket JavaScript. Tredjepartstaggar, bundlad appkod, analytics, A/B-testning, chattwidgets, feature flags. Någonstans i den röran kan känsliga strängar slinka igenom: en API-nyckel som committats ”tillfälligt”, en intern endpoint med tokens i query-parametrar, en e-postlista som använts för test, eller persondata som av misstag ekats in i ett script. Det värsta är hur tyst det är. Du kan surfa på sajten hela dagen utan att märka läckan förrän någon skrapar den, rapporterar den eller utnyttjar den.
Och när du väl kontrollerar manuellt är processen långsam och märkligt utmattande.
- Du slutar med att öppna DevTools, kopiera script-URL:er och tappar bort vad du redan har kontrollerat.
- Minifierade filer gör mönsterigenkänning plågsam, så uppenbara läckor missas.
- Varje målsajt blir en engångsprocess, vilket betyder ingen konsekvent rapportering för teamet eller kunderna.
- Om du gör bug bounties eller kundrevisioner bränner du timmar på triage innan du ens börjar med det ”riktiga” arbetet.
Lösningen: skanna en URL, låt AI flagga risker, mejla rapporten
Det här n8n-arbetsflödet gör ”jag borde nog kontrollera den sajten” till en snabb, repeterbar skanning. Du kör det, anger en URL och arbetsflödet använder en webbläsarcrawler (Puppeteer) för att ladda sidan som en riktig besökare. Det extraherar alla JavaScript-länkar som hittas, filtrerar ner dem till script som faktiskt hör ihop med URL:en du begärde, och skickar sedan listan till en AI-agent som drivs av en OpenAI-chatmodell. Agenten söker igenom scripten efter riskmönster som API-nycklar, e-postadresser och andra PII-indikatorer, och sammanställer en läsbar sammanfattning. Till sist formateras allt till en strukturerad rapport och mejlas till den adress du väljer i Gmail.
Arbetsflödet startar med en enkel formulärprompt för mål-URL:en. Därefter crawlar det, extraherar, aggregerar och skannar de script som hittas. Gmail levererar slutrapporten så att den är enkel att vidarebefordra, arkivera eller lägga in i ett internt ärende.
Vad du får: automatisering vs. resultat
| Det här automatiserar arbetsflödet | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du granskar 5 kunders landningssidor i veckan. Manuellt kanske du lägger cirka 10 minuter på att samla in script-URL:er och sedan ytterligare 40 minuter på att skumma minifierade filer och leta efter typiska mönster, alltså runt 50 minuter per sajt. Med det här arbetsflödet skickar du in URL:en i formuläret (cirka 1 minut) och väntar på att crawl + AI-skanning blir klar (ofta runt 10 minuter), och sedan får du Gmail-rapporten. Det är ungefär 4 timmar tillbaka varje vecka, plus färre missade problem.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Gmail för att skicka mejlet med skanningsrapporten
- OpenAI för att flagga nycklar, e-postadresser och PII-mönster
- OpenAI API-nyckel (hämta den i OpenAI-dashboarden)
Kunskapsnivå: Medel. Du kopplar Gmail och OpenAI och bör vara bekväm med att justera en prompt eller två.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En URL startar allt. Arbetsflödet börjar med en inkommande formulärtrigger som frågar efter webbplatsens URL som du vill skanna. Enkel input, färre misstag.
Sidan crawlas som en användare skulle göra. Puppeteer laddar sidan och fångar JavaScript-resurserna som refereras under besöket, inte bara det du gissar kan vara inkluderat.
Scriptlistan rensas och paketeras. Ett kodsteg extraherar script-URL:er, arbetsflödet aggregerar dem till en enda lista och mappar sedan listan till en payload som AI-agenten kan analysera pålitligt.
OpenAI granskar och Gmail levererar. AI-agenten skannar efter känsliga mönster (nycklar, e-post, PII-liknande strängar), en formatterare gör fynden till en läsbar rapport och Gmail skickar den till den mottagaradress du väljer.
Du kan enkelt ändra skanningsomfattningen för att inkludera flera sidor eller djupare crawling utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera formulärtriggern
Det här arbetsflödet startar när en användare skickar in en webbplats-URL via ett formulär.
- Lägg till noden Inbound Form Trigger som din trigger.
- Ställ in Form Title till
Website Security Scanner. - Ställ in Form Description till
Check your website for security vulnerabilities and get a detailed report. - Lägg till ett obligatoriskt formulärfält med etiketten Landing Page Url och platshållaren
https://example.com. - Koppla Inbound Form Trigger till Browser Crawl Runner.
Steg 2: Crawla webbplatsen och extrahera script-URL:er
Dessa noder hämtar landningssidans HTML och extraherar URL:er till JavaScript-filer.
- I Browser Crawl Runner, ställ in URL till
={{ $json['Landing Page Url'] }}. - I Browser Crawl Runner, behåll Wait Until som
networkidle2för att säkerställa att scripts laddas helt. - I Script URL Extractor, klistra in den tillhandahållna JavaScript Code för att tolka script-taggar och returnera items med URL.
- Koppla Browser Crawl Runner → Script URL Extractor → Combine Script List.
Steg 3: Aggregera och mappa script-data
Aggregera alla extraherade script-URL:er till en enda payload för AI-analysen.
- I Combine Script List, ställ in Aggregate till
aggregateAllItemData. - Koppla Combine Script List till Map Aggregate Payload.
- I Map Aggregate Payload, lägg till en tilldelning med Name
data[0]och Value={{ $json.data[0] }}. - Koppla Map Aggregate Payload till Security Scan Agent.
Steg 4: Konfigurera AI-baserad säkerhetsanalys
AI-agenten analyserar JavaScript-filer och tar fram ett utkast till en säkerhetsrapport.
- I Security Scan Agent, ställ in Text till hela prompten som finns i arbetsflödet, inklusive uttryck som
{{ $('Inbound Form Trigger').item.json['Landing Page Url'] }}och{{ JSON.stringify($input.all()) }}. - Säkerställ att OpenAI Chat Engine är ansluten som språkmodell för Security Scan Agent.
- Credential Required: Anslut era openAiApi-uppgifter i OpenAI Chat Engine (uppgifterna läggs till på den överordnade modellnoden, inte på agenten).
Steg 5: Konfigurera e-postutskicket
Formatera AI-utdata till HTML och skicka den via Gmail.
- I Email Report Formatter, behåll JavaScript-koden som kapslar in AI-utdata i
htmlReport. - Koppla Security Scan Agent → Email Report Formatter → Dispatch Gmail Notice.
- I Dispatch Gmail Notice, ställ in Send To till
[YOUR_EMAIL]och ersätt det med er riktiga e-postadress. - Ställ in Message till
={{ $json.htmlReport }}. - Ställ in Subject till
Static subject (edit manually)eller uppdatera den till er föredragna ämnesrad. - Credential Required: Anslut era gmailOAuth2-uppgifter i Dispatch Gmail Notice.
[YOUR_EMAIL] oförändrat i Dispatch Gmail Notice kommer e-postleveransen att misslyckas.Steg 6: Testa och aktivera ert arbetsflöde
Verifiera end-to-end-körning innan ni aktiverar arbetsflödet i produktion.
- Klicka på Execute Workflow och skicka in Inbound Form Trigger med en riktig webbplats-URL.
- Bekräfta att Browser Crawl Runner returnerar HTML och att Script URL Extractor matar ut script-URL:er.
- Verifiera att Security Scan Agent returnerar en rapport i plain text och att Email Report Formatter skapar
htmlReport. - Kontrollera att Dispatch Gmail Notice skickar e-post till er adress med den formaterade rapporten.
- Växla arbetsflödet till Active för att ta emot inskickningar live från Inbound Form Trigger.
Vanliga fallgropar
- Gmail-inloggningar kan löpa ut eller kräva specifika behörigheter. Om saker slutar fungera, kontrollera statusen för det anslutna kontot i Gmail-noden och återautentisera först.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre fram misslyckas på grund av tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera output för alltid.
Vanliga frågor
Cirka 30 minuter om dina Gmail- och OpenAI-konton är redo.
Nej. Du kopplar mest konton och klistrar in din OpenAI-nyckel. De enda ”kod”-delarna finns redan med i arbetsflödet.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in OpenAI API-kostnader, som oftast är några cent per skanning beroende på scriptstorlek.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, men du bör vara tydlig med omfattningen. Du kan justera crawl-beteendet i Puppeteer-steget för att besöka fler URL:er och sedan behålla samma mönster ”extrahera script → aggregera → AI-agent skannar”. Vanliga anpassningar är att skanna en URL-lista från Google Sheets, lägga till allow/deny-regler för tredjepartsdomäner och ändra rapportformatet så att det inkluderar allvarlighetsgrad-taggar.
Oftast beror det på att OAuth-auktoriseringen har löpt ut eller att fel Gmail-konto är anslutet i n8n. Anslut Gmail på nytt i Gmail-noden och skicka sedan ett testmejl för att bekräfta behörigheter. Om du är i en Google Workspace-miljö kan en adminpolicy också blockera ”mindre vanliga” appintegrationer, så kontrollera Workspace-säkerhetsinställningarna om återautentiseringen fastnar i en loop.
I en typisk self-hosted-setup klarar den så många som din server kan crawla bekvämt och din OpenAI-budget tillåter.
För det här användningsfallet är n8n oftast bättre, eftersom webbläsarcrawling med Puppeteer och AI-agentflödet är mer avancerat än vad de flesta Zapier-liknande byggare hanterar smidigt. Du får också mer kontroll över batchning, aggregering och villkorslogik utan att betala extra för varje gren. Samtidigt: om du bara vill ha ett enkelt flöde ”skicka in URL, mejla mig ett svar” utan crawling kan Zapier eller Make gå snabbare. Det här arbetsflödet använder också community-noder som bara är kompatibla med self-hosted n8n, vilket i praktiken kan vara en deal-breaker för vissa team. Prata med en automationsexpert om du vill ha hjälp att välja den enklaste vägen.
Du kör skanningen, får mejlet och går vidare med dagen. Ärligt talat är den typen av tråkig tillförlitlighet exakt vad säkerhetsarbete behöver.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.