PageSourceSearch

https://phishscan.io/assets/HeaderAnalyzerView-DlWyJ34U.js

js phishscan.io collected 2026-09-24 15:04:55 UTC 14,045 bytes, 4 lines download raw bytes

1import{u as K,q as R,w as k,k as b,o as n,a as e,N as T,I as N,O as H,t as s,c as i,f as u,E as p,e as _,F as g,p as w,d as D,b as q,R as z,r as v}from"./vendor-DcWJ6w6z.js";import{b as V}from"./index-DmBseAOX.js";import{T as j}from"./ToolShell-BWq8TznE.js";import{_ as E}from"./ToolLearn-DQ3uUJTO.js";import{_ as O}from"./MonitorCta-D1cJhfjF.js";import"./useSeo-CYLr5JmJ.js";import"./FooterSection-CYGrcjBn.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./ToolIcon-CqHoy1aX.js";const W={class:"flex items-center gap-3"},B=["disabled"],G={class:"text-[12px]",style:{color:"#8a9bbe"}},L={key:0,class:"text-sm",style:{color:"#f87171"}},U={key:1,class:"space-y-3"},$={class:"rounded-2xl p-5",style:{background:"#1a1a2e",border:"1px solid #2a3a5c"}},J={class:"flex items-center gap-3 mb-3"},Q={class:"grid sm:grid-cols-2 gap-x-6 gap-y-1.5 text-[12.5px]"},X={class:"flex gap-2"},Y={class:"break-all",style:{color:"#e2e8f0"}},Z={class:"flex gap-2"},ee={class:"flex gap-2"},se={class:"break-all",style:{color:"#9fb3d9"}},ae={class:"flex gap-2"},te={style:{color:"#9fb3d9"}},oe={class:"flex gap-2 sm:col-span-2"},le={style:{color:"#e2e8f0"}},re={class:"flex gap-2 sm:col-span-2"},ne={class:"font-mono break-all",style:{color:"#9fb3d9"}},ie={class:"grid grid-cols-3 gap-3"},de={class:"text-[11px] uppercase tracking-wide mb-1",style:{color:"#8a95b8"}},ce={key:0,class:"text-[11px] font-mono mt-0.5 break-all",style:{color:"#8899bb"}},ue={key:0,class:"text-[12.5px]",style:{color:"#8899bb"}},pe={class:"rounded-2xl p-5",style:{background:"#1a1a2e",border:"1px solid #2a3a5c"}},me={class:"text-sm font-semibold mb-3",style:{color:"#f0f4ff"}},he={class:"font-normal",style:{color:"#8a9bbe"}},fe={key:0,class:"text-[12.5px]",style:{color:"#f87171"}},ye={key:1,class:"space-y-2"},be={class:"w-5 h-5 rounded-full flex items-center justify-center text-[11px] font-bold shrink-0",style:{background:"#2563eb",color:"#fff"}},_e={class:"min-w-0 flex-1"},ve={class:"flex flex-wrap gap-x-2",style:{color:"#e2e8f0"}},xe={class:"font-mono break-all"},ke={key:0,class:"font-mono",style:{color:"#8899bb"}},ge={class:"font-mono break-all"},we={class:"flex flex-wrap gap-x-3 text-[11px]",style:{color:"#8899bb"}},Re={key:0},De={key:1},Me={key:1,class:"rounded-2xl p-5 space-y-2",style:{background:"#1a1a2e",border:"1px solid #2a3a5c"}},Se={class:"text-sm font-semibold mb-1",style:{color:"#f0f4ff"}},Ie={class:"font-mono text-[11px] mr-2",style:{color:"#8899bb"}},Pe={style:{color:"#cdd6f4"}},Ae={key:2,class:"text-[12.5px]",style:{color:"#34d399"}},Fe=`Received: from mail.example.com ([203.0.113.7]) by mx.yourdomain.ua ...
2Authentication-Results: ...
3From: "Name" <[email protected]>
4Subject: ...`,Oe={__name:"HeaderAnalyzerView",setup(Ce){const{locale:M}=K(),t=(a,o)=>M.value==="uk"?a:o,m=v(""),f=v(!1),y=v(""),r=v(null);async function S(){var a,o,l,d,h;if(m.value.trim()){f.value=!0,y.value="",r.value=null;try{const{data:c}=await V.post("/api/tools/headers",{headers:m.value.slice(0,65536)});r.value=c}catch(c){y.value=((l=(o=(a=c==null?void 0:c.response)==null?void 0:a.data)==null?void 0:o.detail)==null?void 0:l.message)||((h=(d=c==null?void 0:c.response)==null?void 0:d.data)==null?void 0:h.message)||t("Не вдалося розібрати заголовки.","Could not parse the headers.")}finally{f.value=!1}}}const x=b(()=>{var o;const a=((o=r.value)==null?void 0:o.risk_score)??0;return a>=60?{color:"#f87171",label:t("Високий ризик підміни","High spoofing risk")}:a>=25?{color:"#fbbf24",label:t("Є підозрілі ознаки","Suspicious signs")}:{color:"#34d399",label:t("Заголовки виглядають нормально","Headers look normal")}}),I=b(()=>{var o,l,d;const a=(o=r.value)==null?void 0:o.summary;return!(a!=null&&a.reply_to)||!(a!=null&&a.from)?!1:((l=a.reply_to.split("@")[1])==null?void 0:l.toLowerCase())!==((d=a.from.split("@")[1])==null?void 0:d.toLowerCase())}),P=b(()=>{var l,d,h;const a=((l=r.value)==null?void 0:l.auth)||{},o=c=>c==="pass"?"#34d399":c?"#f87171":"#8899bb";return[{k:"SPF",value:a.spf||t("немає","none"),color:o(a.spf),domain:a.spf_domain},{k:"DKIM",value:a.dkim||t("немає","none"),color:o(a.dkim),domain:a.dkim_domain},{k:"DMARC",value:a.dmarc||t("немає","none"),color:o(a.dmarc),domain:(h=(d=r.value)==null?void 0:d.summary)==null?void 0:h.from_domain}]});function A(a){return{critical:"#f87171",high:"#f87171",medium:"#fbbf24",low:"#8899bb"}[a]||"#8899bb"}function F(a){return a<60?a+" s":a<3600?Math.round(a/60)+" min":(a/3600).toFixed(1)+" h"}const C=b(()=>[{q:t("Де взяти заголовки листа?","Where do I get the headers?"),a:t("Gmail: меню листа → «Показати оригінал». Outlook: Файл → Властивості â
4†’ «Заголовки Інтернету». Apple Mail: Вигляд → Повідомлення → Усі заголовки.","Gmail: message menu → “Show original”. Outlook: File → Properties → “Internet headers”. Apple Mail: View → Message → All Headers.")},{q:t("Чи зберігаєте ви вставлені заголовки?","Do you store pasted headers?"),a:t("Ні. Заголовки аналізуються в пам’яті й відповідь повертається одразу; в базу нічого не пишеться.","No. Headers are analysed in memory and the answer is returned immediately; nothing is written to a database.")},{q:t("Чому dmarc=fail, хоча лист справжній?","Why dmarc=fail on a genuine message?"),a:t("Найчастіше — пересилання через список розсилки або форвард, який ламає DKIM і змінює шлях SPF. Або домен відправника не налаштував DKIM. Дивіться, чи збігається домен у From з доменами в SPF/DKIM.","Usually a mailing list or a forward that breaks DKIM and changes the SPF path, or the sender never set up DKIM. Check whether the From domain aligns with the SPF/DKIM domains.")}]);return(a,o)=>(n(),R(j,{icon:"mail",title:t("Аналізатор заголовків листа","Email Header Analyzer"),subtitle:t("Вставте заголовки листа: шлях через сервери, SPF/DKIM/DMARC, підміна відправника і Reply-To — за секунду.","Paste an email’s headers: the path through mail servers, SPF/DKIM/DMARC, sender spoofing and Reply-To tricks — in a second."),path:"/tools/email-header-analyzer","seo-title":t("Аналізатор заголовків email — Received, SPF, DKIM, DMARC | PhishScan","Email Header Analyzer — Received path, SPF, DKIM, DMARC | PhishScan"),"seo-desc":t("Безкоштовний аналіз заголовків листа: ланцюжок Received з затримками, результати автентифікації, підміна відправника, Reply-To на інший домен. Без реєстрації.","Free email header analysis: the Received chain with delays, authentication results, sender spoofing, Reply-To to another domain. No signup."),"cta-title":t("Хочете вердикт по всьому листу, а не лише заголовкам?","Want a verdict on the whole message, not just headers?"),"cta-text":t("Повна перевірка PhishScan дивиться на посилання, вкладення, текст і дає AI-пояснення.","A full PhishScan check looks at links, attachments and text and explains the verdict with AI."),"cta-button":t("Перевірити лист","Check a message"),"cta-to":"/",faq:C.value},{learn:k(()=>[e("h2",null,s(t("Як читати заголовки","How to read headers")),1),e("p",null,s(t("Кожен сервер на шляху додає Received зверху, тому найнижчий — перший. IP у дужках після «from» — це те, що бачив сервер-одержувач; ім’я перед ним сервер-відправник називає сам і може вигадати.","Every server on the way prepends a Received line, so the bottom one is the first hop. The IP in brackets after “from” is what the receiving server saw; the name before it is what the sender claimed and can be made up.")),1),e("h2",null,s(t("Що означають SPF, DKIM і DMARC у результатах","What SPF, DKIM and DMARC mean here")),1),e("p",null,[_(s(t("spf=pass каже, що сервер-відправник дозволений для домену з Return-Path, dkim=pass — що підпис домену з header.d не зламано, dmarc=pass — що один із них ще й збігається з доменом у From. Лист від «банку» з dmarc=fail і Reply-To на gmail — класична підміна.","spf=pass means the sending server is allowed for the Return-Path domain, dkim=pass that the signature of header.d is intact, dmarc=pass that one of them also aligns with the From domain. A “bank” message with dmarc=fail and a Reply-To at gmail is classic spoofing."))+" ",1),D(q(z),{to:"/guides/how-to-check-email-headers"},{default:k(()=>[_(s(t("Детальний гайд →","Detailed guide →")),1)]),_:1})]),D(E,{tool:"headerAnalyzer"})]),default:k(()=>[e("form",{class:"space-y-2",onSubmit:T(S,["prevent"])},[N(e("textarea",{"onUpdate:modelValue":o[0]||(o[0]=l=>m.value=l),rows:"9",spellcheck:"false",placeholder:Fe,class:"w-full rounded-xl px-3 py-2 text-[12px] font-mono",style:{background:"#0f1626",border:"1px solid #2a3a5c",color:"#e2e8f0"}},null,512),[[H,m.value]]),e("div",W,[e("button",{type:"submit",disabled:f.value||!m.value.trim(),class:"rounded-xl px-5 py-2.5 text-sm font-semibold",style:{background:"#2563eb",color:"#fff"}},s(f.value?"…":t("Проаналізувати","Analyze")),9,B),e("span",G,s(t("Gmail: «Показати оригінал»;
4 Outlook: «Властивості → Заголовки Інтернету». Дані не зберігаються.","Gmail: “Show original”; Outlook: “Properties → Internet headers”. Nothing is stored.")),1)])],32),y.value?(n(),i("p",L,s(y.value),1)):u("",!0),r.value?(n(),i("div",U,[e("div",$,[e("div",J,[e("span",{class:"text-2xl font-extrabold",style:p({color:x.value.color})},[_(s(r.value.risk_score),1),o[1]||(o[1]=e("span",{class:"text-sm font-normal",style:{color:"#8a9bbe"}},"/100",-1))],4),e("span",{class:"text-sm font-semibold",style:p({color:x.value.color})},s(x.value.label),5)]),e("div",Q,[e("div",X,[o[2]||(o[2]=e("span",{class:"w-24 shrink-0",style:{color:"#8a95b8"}},"From",-1)),e("span",Y,s(r.value.summary.from_name?r.value.summary.from_name+" ":"")+"<"+s(r.value.summary.from||"—")+">",1)]),e("div",Z,[o[3]||(o[3]=e("span",{class:"w-24 shrink-0",style:{color:"#8a95b8"}},"Reply-To",-1)),e("span",{class:"break-all",style:p({color:I.value?"#fbbf24":"#9fb3d9"})},s(r.value.summary.reply_to||"—"),5)]),e("div",ee,[o[4]||(o[4]=e("span",{class:"w-24 shrink-0",style:{color:"#8a95b8"}},"Return-Path",-1)),e("span",se,s(r.value.summary.return_path||"—"),1)]),e("div",ae,[o[5]||(o[5]=e("span",{class:"w-24 shrink-0",style:{color:"#8a95b8"}},"Date",-1)),e("span",te,s(r.value.summary.date||"—"),1)]),e("div",oe,[o[6]||(o[6]=e("span",{class:"w-24 shrink-0",style:{color:"#8a95b8"}},"Subject",-1)),e("span",le,s(r.value.summary.subject||"—"),1)]),e("div",re,[o[7]||(o[7]=e("span",{class:"w-24 shrink-0",style:{color:"#8a95b8"}},"Message-ID",-1)),e("span",ne,s(r.value.summary.message_id||"—"),1)])])]),e("div",ie,[(n(!0),i(g,null,w(P.value,l=>(n(),i("div",{key:l.k,class:"rounded-xl p-3",style:{background:"#1a1a2e",border:"1px solid #2a3a5c"}},[e("p",de,s(l.k),1),e("p",{class:"text-sm font-semibold",style:p({color:l.color})},s(l.value),5),l.domain?(n(),i("p",ce,s(l.domain),1)):u("",!0)]))),128))]),r.value.auth.present?u("",!0):(n(),i("p",ue,s(t("Заголовка Authentication-Results немає: сервер-одержувач не перевіряв SPF/DKIM/DMARC або вирізав результат.","No Authentication-Results header: the receiving server did not check SPF/DKIM/DMARC or stripped the result.")),1)),e("div",pe,[e("h3",me,[_(s(t("Шлях листа","Delivery path"))+" ",1),e("span",he,"· "+s(r.value.hops.length)+" "+s(t("стрибків","hops")),1)]),r.value.hops.length?(n(),i("ol",ye,[(n(!0),i(g,null,w(r.value.hops,(l,d)=>(n(),i("li",{key:d,class:"flex gap-3 text-[12.5px]"},[e("span",be,s(d+1),1),e("div",_e,[e("div",ve,[e("span",xe,s(l.from||"?"),1),l.ip?(n(),i("span",ke,"["+s(l.ip)+"]",1)):u("",!0),o[8]||(o[8]=e("span",{style:{color:"#8a9bbe"}},"→",-1)),e("span",ge,s(l.by||"?"),1)]),e("div",we,[l.with?(n(),i("span",Re,s(l.with),1)):u("",!0),l.time?(n(),i("span",De,s(l.time.replace("T"," ").slice(0,19)),1)):u("",!0),l.delay_s!=null?(n(),i("span",{key:2,style:p({color:l.delay_s>300?"#fbbf24":"#8899bb"})},"+"+s(F(l.delay_s)),5)):u("",!0)])])]))),128))])):(n(),i("p",fe,s(t("Заголовків Received немає — так виглядають листа, згенеровані локально або з вирізаними заголовками.","No Received headers — typical of locally generated messages or stripped headers.")),1))]),r.value.findings.length?(n(),i("div",Me,[e("h3",Se,s(t("Що привертає увагу","What stands out")),1),(n(!0),i(g,null,w(r.value.findings,(l,d)=>(n(),i("div",{key:d,class:"flex gap-2 text-[12.5px]"},[e("span",{class:"w-2 h-2 rounded-full mt-1.5 shrink-0",style:p({background:A(l.severity)})},null,4),e("div",null,[e("span",Ie,s(l.type),1),e("span",Pe,s(l.description),1)])]))),128))])):(n(),i("p",Ae,s(t("Явних ознак підміни в заголовках немає.","No clear spoofing signs in the headers.")),1))])):u("",!0),r.value?(n(),R(O,{key:2})):u("",!0)]),_:1},8,["title","subtitle","seo-title","seo-desc","cta-title","cta-text","cta-button","faq"]))}};export{Oe as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.