别被“官方感”骗了:我亲测的浏览器自查小工具(复制粘贴即可)

很多网站通过设计、徽章、文案让人下意识相信“这是官方网站”。要分辨真假,一个直观的方法是看这些“官方元素”引用的资源是不是来自同一域名,或者这些元素是不是第三方嵌入。下面我写了一个安全、只在你浏览器中本地运行的小脚本,能帮你一键扫描页面上那些看起来“官方”的图片、链接、脚本和样式资源,显示它们的来源域名,并将页面上的这些元素用高亮标出。把代码复制粘贴到浏览器控制台运行(或保存为书签),马上就能看出哪些“官方”其实托管在外部域名上。
要点说明
- 这个脚本只在你的浏览器里本地运行,不会把任何数据发送到外网。
- 目的只是辅助判断页面上呈现“官方感”的元素是否来自本站域名,从而作为进一步核验的参考。
- 不要用来做自动化攻击或绕过任何授权保护。仅用于自行判断与学习。
如何使用(两种方式) 1) 控制台运行(推荐、最简单)
- 在要检查的页面按 F12 或 Ctrl+Shift+I 打开开发者工具,切换到 Console(控制台)标签。
- 复制下面“控制台脚本”全部内容,粘贴并回车执行。脚本会弹出右上角浮动面板,列出检测结果并在页面上高亮对应元素。
2) 作为书签(Bookmarklet)
- 新建书签,把书签的 URL 换为下面“书签代码”(以 javascript: 开头的那一行)。之后访问任何页面,点击该书签即可运行相同检测。
控制台脚本(复制全部,粘贴到控制台然后回车) (function(){ if (window.officialCheckActive) { alert('检测器已在运行,面板位于右上角。关闭后可重新运行。'); return; } window.officialCheckActive = true;
function makeEl(tag, attrs, css) { var e = document.createElement(tag); if (attrs) Object.keys(attrs).forEach(k => e.setAttribute(k, attrs[k])); if (css) Object.assign(e.style, css); return e; }
var panel = makeEl('div', {id:'__officialCheckPanel'}, { position:'fixed', top:'12px', right:'12px', width:'420px', maxHeight:'70vh', overflow:'auto', background:'#fff', color:'#111', border:'1px solid #ccc', boxShadow:'0 6px 18px rgba(0,0,0,0.12)', zIndex:2147483647, fontFamily:'sans-serif', fontSize:'13px', padding:'10px', borderRadius:'8px' });
var title = makeEl('div', null, {fontWeight:'700', marginBottom:'6px'}); title.textContent = '官方感元素来源检测器'; var desc = makeEl('div', null, {fontSize:'12px', color:'#444', marginBottom:'8px'}); desc.textContent = '列出页面上可能被当作“官网”的图片、链接、脚本和样式,并标明是否来自当前域名。高亮:绿色=同域,橙色=外域。'; var btnClose = makeEl('button', null, {float:'right', marginLeft:'8px'}); btnClose.textContent = '关闭'; btnClose.onclick = function(){ document.querySelectorAll('.officialCheckHighlight').forEach(el => { el.style.outline = el.getAttribute('officialoldoutline') || ''; el.removeAttribute('officialoldoutline'); el.classList.remove('officialCheckHighlight'); }); panel.remove(); window.__officialCheckActive = false; };
var btnCopy = makeEl('button', null, {marginBottom:'8px'}); btnCopy.textContent = '复制报告'; btnCopy.onclick = function(){ var txt = Array.from(panel.querySelectorAll('.__row')).map(r => r.textContent.trim()).join('\n\n'); navigator.clipboard && navigator.clipboard.writeText(txt).then(()=> alert('已复制到剪贴板'), ()=> alert('无法访问剪贴板')); };
panel.appendChild(btnClose); panel.appendChild(title); panel.appendChild(desc); panel.appendChild(btnCopy);
var list = makeEl('div', null, {marginTop:'8px'}); list.innerHTML = ''; panel.appendChild(list); document.body.appendChild(panel);
function hostOf(u) { try { var a = new URL(u, location.href); return a.host; } catch(e) { return ''; } } var curHost = location.host;
var candidates = [];
// 找到可能“官方”的元素:包含“官网”“官方”“官方认证”字样,或类名/ID含有 official/guanfang/官网,优先收集图片和链接 var textMatchers = Array.from(document.querySelectorAll('body *')).filter(el => { try { if (el.children.length>0) return false; var t = (el.textContent || '').trim(); if (!t) return false; t = t.replace(/\s+/g,''); return /官网|官方|官方认证|正品|正版/.test(t); } catch(e) { return false; } }).slice(0,50);
var attrCandidates = Array.from(document.querySelectorAll('[id],[class]')).filter(el => { var s = (el.id||'') + ' ' + (el.className||''); return /official|guanfang|官网|官方/.test(s); }).slice(0,50);
var imgs = Array.from(document.images); var anchors = Array.from(document.querySelectorAll('a')); var scripts = Array.from(document.scripts).filter(s=>s.src); var links = Array.from(document.querySelectorAll('link[rel~="stylesheet"],link[href]')).filter(l=>l.href);
// 合并并去重 var set = new Set(); function add(el, reason){ if (!el || set.has(el)) return; set.add(el); candidates.push({el:el, reason:reason}); } imgs.forEach(i=> add(i,'image')); anchors.forEach(a=> add(a,'link')); scripts.forEach(s=> add(s,'script')); links.forEach(l=> add(l,'stylesheet')); textMatchers.forEach(t=> add(t,'textContains')); attrCandidates.forEach(a=> add(a,'attrMatch'));
function summarize() { if (!candidates.length) { list.appendChild(makeEl('div', null, {color:'#666'})).textContent = '未找到明显“官方”元素。'; return; } candidates.forEach(item => { var el = item.el; var type = item.reason || el.tagName.toLowerCase(); var url = ''; if (el.tagName === 'IMG') url = el.src || el.getAttribute('data-src') || ''; else if (el.tagName === 'A') url = el.href || ''; else if (el.tagName === 'SCRIPT') url = el.src || ''; else if (el.tagName === 'LINK') url = el.href || ''; else { // 尝试找内部可能的 img/a var foundImg = el.querySelector && el.querySelector('img'); var foundA = el.querySelector && el.querySelector('a'); url = (foundImg && (foundImg.src||'')) || (foundA && (foundA.href||'')) || ''; } var h = url ? hostOf(url) : ''; var same = h ? (h === curHost) : null;
var row = makeEl('div', null, {padding:'6px 6px', borderBottom:'1px solid #eee'});
row.className = '__row';
var title = makeEl('div', null, {fontWeight:'600'});
title.textContent = type + (el.tagName ? (' <' + el.tagName.toLowerCase() + '>') : '');
var snippet = (el.textContent||'').trim().slice(0,120).replace(/\s+/g,' ');
var p = makeEl('div', null, {fontSize:'12px', color:'#333', marginTop:'4px'});
p.textContent = snippet ? ('页面文本:' + snippet) : '';
var info = makeEl('div', null, {fontSize:'12px', color:'#555', marginTop:'6px'});
info.textContent = '资源URL:' + (url||'[无]') + (h ? (' | 域名:' + h + (same === null ? '' : (same ? '(同域)' : '(外域)'))) : '');
row.appendChild(title);
if (p.textContent) row.appendChild(p);
row.appendChild(info);
// 高亮元素
try{
var old = el.style.outline || '';
el.setAttribute('__official_old_outline', old);
el.classList.add('__officialCheckHighlight');
if (same === true) el.style.outline = '3px solid rgba(24,160,70,0.9)';
else if (same === false) el.style.outline = '3px solid rgba(255,136,0,0.95)';
else el.style.outline = '2px dashed rgba(60,60,60,0.6)';
el.style.transition = 'outline 0.15s ease';
}catch(e){}
list.appendChild(row);
});
// 说明
var foot = makeEl('div', null, {fontSize:'12px', color:'#666', marginTop:'10px'});
foot.textContent = '提示:若“官方”图片或徽章托管在第三方域名,不一定代表恶意,但建议谨慎核验联系方式、证书或通过公司官网主页的明确入口访问。';
panel.appendChild(foot);
}
summarize();
// 小滚动到面板顶部的按钮(便于看到) setTimeout(()=> window.scrollTo({top:0,left:0, behavior:'smooth'}), 200); })();
书签代码(可直接保存为书签 URL) javascript:(function(){if(window.officialCheckActive){alert('检测器已在运行,面板位于右上角。关闭后可重新运行。');return;}window.officialCheckActive=true;function makeEl(tag,attrs,css){var e=document.createElement(tag);if(attrs)Object.keys(attrs).forEach(k=>e.setAttribute(k,attrs[k]));if(css)Object.assign(e.style,css);return e;}var panel=makeEl('div',{id:'officialCheckPanel'},{position:'fixed',top:'12px',right:'12px',width:'420px',maxHeight:'70vh',overflow:'auto',background:'#fff',color:'#111',border:'1px solid #ccc',boxShadow:'0 6px 18px rgba(0,0,0,0.12)',zIndex:2147483647,fontFamily:'sans-serif',fontSize:'13px',padding:'10px',borderRadius:'8px'});var title=makeEl('div',null,{fontWeight:'700',marginBottom:'6px'});title.textContent='官方感元素来源检测器';var desc=makeEl('div',null,{fontSize:'12px',color:'#444',marginBottom:'8px'});desc.textContent='列出页面上可能被当作“官网”的图片、链接、脚本和样式,并标明是否来自当前域名。高亮:绿色=同域,橙色=外域。';var btnClose=makeEl('button',null,{float:'right',marginLeft:'8px'});btnClose.textContent='关闭';btnClose.onclick=function(){document.querySelectorAll('.officialCheckHighlight').forEach(el=>{el.style.outline=el.getAttribute('officialoldoutline')||'';el.removeAttribute('officialoldoutline');el.classList.remove('officialCheckHighlight');});panel.remove();window.officialCheckActive=false;};var btnCopy=makeEl('button',null,{marginBottom:'8px'});btnCopy.textContent='复制报告';btnCopy.onclick=function(){var txt=Array.from(panel.querySelectorAll('.row')).map(r=>r.textContent.trim()).join('\n\n');navigator.clipboard&&navigator.clipboard.writeText(txt).then(()=>alert('已复制到剪贴板'),()=>alert('无法访问剪贴板'));};panel.appendChild(btnClose);panel.appendChild(title);panel.appendChild(desc);panel.appendChild(btnCopy);var list=makeEl('div',null,{marginTop:'8px'});list.innerHTML='';panel.appendChild(list);document.body.appendChild(panel);function hostOf(u){try{var a=new URL(u,location.href);return a.host;}catch(e){return '';}}var curHost=location.host;var candidates=[];var textMatchers=Array.from(document.querySelectorAll('body *')).filter(el=>{try{if(el.children.length>0)return false;var t=(el.textContent||'').trim();if(!t)return false;t=t.replace(/\s+/g,'');return /官网|官方|官方认证|正品|正版/.test(t);}catch(e){return false;}}).slice(0,50);var attrCandidates=Array.from(document.querySelectorAll('[id],[class]')).filter(el=>{var s=(el.id||'')+' '+(el.className||'');return /official|guanfang|官网|官方/.test(s);}).slice(0,50);var imgs=Array.from(document.images);var anchors=Array.from(document.querySelectorAll('a'));var scripts=Array.from(document.scripts).filter(s=>s.src);var links=Array.from(document.querySelectorAll('link[rel~="stylesheet"],link[href]')).filter(l=>l.href);var set=new Set();function add(el,reason){if(!el||set.has(el))return;set.add(el);candidates.push({el:el,reason:reason});}imgs.forEach(i=>add(i,'image'));anchors.forEach(a=>add(a,'link'));scripts.forEach(s=>add(s,'script'));links.forEach(l=>add(l,'stylesheet'));textMatchers.forEach(t=>add(t,'textContains'));attrCandidates.forEach(a=>add(a,'attrMatch'));function summarize(){if(!candidates.length){list.appendChild(makeEl('div',null,{color:'#666'})).textContent='未找到明显“官方”元素。';return;}candidates.forEach(item=>{var el=item.el;var type=item.reason||el.tagName.toLowerCase();var url='';if(el.tagName==='IMG')url=el.src||el.getAttribute('data-src')||'';else if(el.tagName==='A')url=el.href||'';else if(el.tagName==='SCRIPT')url=el.src||'';else if(el.tagName==='LINK')url=el.href||'';else{var foundImg=el.querySelector&&el.querySelector('img');var foundA=el.querySelector&&el.querySelector('a');url=(foundImg&&(foundImg.src||''))||(foundA&&(foundA.href||''))||'';}var h=url?hostOf(url):'';var same=h?(h===curHost):null;var row=makeEl('div',null,{padding:'6px 6px',borderBottom:'1px solid #eee'});row.className='row';var title=makeEl('div',null,{fontWeight:'600'});title.textContent=type+(el.tagName?(' <'+el.tagName.toLowerCase()+'>'):'');var snippet=(el.textContent||'').trim().slice(0,120).replace(/\s+/g,' ');var p=makeEl('div',null,{fontSize:'12px',color:'#333',marginTop:'4px'});p.textContent=snippet?('页面文本:'+snippet):'';var info=makeEl('div',null,{fontSize:'12px',color:'#555',marginTop:'6px'});info.textContent='资源URL:'+(url||'[无]')+(h?(' | 域名:'+h+(same===null?'':(same? '(同域)':'(外域)'))):'');row.appendChild(title);if(p.textContent)row.appendChild(p);row.appendChild(info);try{var old=el.style.outline||'';el.setAttribute('officialoldoutline',old);el.classList.add('officialCheckHighlight');if(same===true)el.style.outline='3px solid rgba(24,160,70,0.9)';else if(same===false)el.style.outline='3px solid rgba(255,136,0,0.95)';else el.style.outline='2px dashed rgba(60,60,60,0.6)';el.style.transition='outline 0.15s ease';}catch(e){}list.appendChild(row);});var foot=makeEl('div',null,{fontSize:'12px',color:'#666',marginTop:'10px'});foot.textContent='提示:若“官方”图片或徽章托管在第三方域名,不一定代表恶意,但建议谨慎核验联系方式、证书或通过公司官网主页的明确入口访问。';panel.appendChild(foot);}summarize();setTimeout(()=>window.scrollTo({top:0,left:0,behavior:'smooth'}),200);})();
如何解读检测结果(实用建议)
- 绿框(同域):资源来自当前站点,可信度相对更高,但仍可进一步核验页面顶部导航、公司联系方式和证书信息。
- 橙框(外域):资源由第三方域名托管。可能是第三方统计、CDN 或嵌入的合作内容,但也有被滥用做“假官方”的风险。遇到外域资源时,查看该域名是否为知名 CDN 或企业官方域,或通过其他渠道确认。
- 没有资源 URL 的元素:很多文本、样式或内联 SVG 不会显示外部 URL,需结合页面上下文判断。
额外核验清单(小贴士)
- 检查浏览器地址栏,域名是否完全与官方域名一致(留意拼写、子域及顶级域名)。
- 在页面上寻找公司“关于我们”“联系我们”的明确入口,优先通过公司主域名层级进入。
- 对涉及账号或交易的页面,查看是否启用 HTTPS 且证书信息匹配。
- 遇到疑问时,用搜索引擎单独搜索公司官方联系方式或通过已知渠道核实。
最后一句 这段脚本只是帮你把页面里那些“看起来像官宣”的元素挑出来,减少直觉被外观误导的概率。网页的“官方感”有时候只是设计功夫,不代表可靠性;多方核实才能更稳妥。
需要我把脚本精简成更短的书签格式,或把检测策略扩展为手机浏览器也能用的版本吗?

最新留言