Help
RSS
API
Feed
Maltego
Contact
Domain > comment-dash.xingchencloud.top
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-11-19
43.159.98.18
(
ClassC
)
Port 443
HTTP/1.1 200 OKLast-Modified: Fri, 12 Sep 2025 00:43:45 GMTEtag: cb71d13924941d361755f8d31797a4adAccess-Control-Allow-Origin: *Age: 1815891Content-Disposition: inlineContent-Type: text/html; charsetutf-8Server: VercelX-Vercel-Cache: HITX-Vercel-Id: iad1::qljzn-1759453716518-4041a53ceb25Cache-Control: public, must-revalidate, max-age0Content-Length: 11900Accept-Ranges: bytesConnection: keep-aliveStrict-Transport-Security: max-age16070400;includeSubDomains;Date: Wed, 19 Nov 2025 20:08:40 GMTEO-LOG-UUID: 8921631339755428743EO-Cache-Status: RefreshHit !DOCTYPE html>html langzh>head> meta charsetutf-8 /> meta nameviewport contentwidthdevice-width, initial-scale1 /> title>叶玖洛博客评论可视化系统V2/title> link hrefhttps://cdnjs.xingchencloud.top/ajax/libs/tailwindcss/2.2.19/tailwind.min.css relstylesheet> script srchttps://cdnjs.xingchencloud.top/ajax/libs/echarts/5.4.3/echarts.min.js>/script> script srchttps://cdnjs.xingchencloud.top/ajax/libs/echarts-wordcloud/2.1.0/echarts-wordcloud.min.js>/script> style> .chart-container { position: relative; height: 400px; width: 100%; } .map-container { position: relative; height: 600px; width: 100%; } .loading { display: flex; justify-content: center; align-items: center; height: 100%; font-size: 16px; color: #666; } /style>/head>body classbg-gray-100> div classcontainer mx-auto px-4 py-8> h1 classtext-3xl font-bold text-center mb-8>叶玖洛的Twikoo数据可视化大屏/h1> /div> !-- KPI --> div classgrid grid-cols-1 md:grid-cols-3 gap-6 mb-8> div classbg-white rounded-lg shadow p-6> h2 classtext-xl font-semibold mb-2>评论总量/h2> p idtotalComments classtext-3xl font-bold text-blue-600>-/p> /div> div classbg-white rounded-lg shadow p-6> h2 classtext-xl font-semibold mb-2>今日评论/h2> p idtodayComments classtext-3xl font-bold text-green-600>-/p> /div> div classbg-white rounded-lg shadow p-6> h2 classtext-xl font-semibold mb-2>独立访客/h2> p iduniqueVisitors classtext-3xl font-bold text-purple-600>-/p> /div> /div> !-- IP地图 --> div classbg-white rounded-lg shadow p-6 mb-8> h2 classtext-xl font-semibold mb-4>IP来源分布/h2> div idipMap classmap-container>div classloading>加载中.../div>/div> /div> !-- 词云 + Top15 --> div classgrid grid-cols-1 lg:grid-cols-2 gap-6 mb-8> div classbg-white rounded-lg shadow p-6> h2 classtext-xl font-semibold mb-4>最新评论词云/h2> div idwordCloud classchart-container>div classloading>加载中.../div>/div> /div> div classbg-white rounded-lg shadow p-6> h2 classtext-xl font-semibold mb-4>评论最多文章 Top15/h2> div idtopArticles classchart-container>div classloading>加载中.../div>/div> /div> /div> !-- 趋势 --> div classbg-white rounded-lg shadow p-6 mb-8> h2 classtext-xl font-semibold mb-4>评论趋势(近30天)/h2> div idtrendChart classchart-container>div classloading>加载中.../div>/div> /div> !-- 最新评论 --> div classbg-white rounded-lg shadow p-6> h2 classtext-xl font-semibold mb-4>最新评论/h2> div idlatestComments classoverflow-x-auto> div classloading>加载中.../div> table classmin-w-full table-auto styledisplay:none;> thead> tr classbg-gray-50> th classpx-4 py-2 text-left>时间/th> th classpx-4 py-2 text-left>文章/th> th classpx-4 py-2 text-left>评论者/th> th classpx-4 py-2 text-left>内容/th> /tr> /thead> tbody idcommentsTableBody>/tbody> /table> /div> /div> /div> script> let ipMapChart, trendChart, topArticlesChart, wordCloudChart; function stripTags(str){ return str.replace(/\/?^>+(>|$)/g,); } // IP地图 async function renderIPMap(data){ const chartDom document.getElementById(ipMap); // 如果已存在图表实例,先销毁 if (ipMapChart) { ipMapChart.dispose(); } ipMapChart echarts.init(chartDom); ipMapChart.showLoading({ text: 加载地图数据中..., color: #00ffcc, textColor: #fff, maskColor: rgba(0, 0, 0, 0.5), zlevel: 0 }); try { const response await fetch(/china.json); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const chinaGeo await response.json(); echarts.registerMap(china, chinaGeo); // 标准化地区名称映射 const provinceMap { 北京: 北京市, 天津: 天津市, 上海: 上海市, 重庆: 重庆市, 河北: 河北省, 山西: 山西省, 辽宁: 辽宁省, 吉林: 吉林省, 黑龙江: 黑龙江省, 江苏: 江苏省, 浙江: 浙江省, 安徽: 安徽省, 福建: 福建省, 江西: 江西省, 山东: 山东省, 河南: 河南省, 湖北: 湖北省, 湖南: 湖南省, 广东: 广东省, 海南: 海南省, 四川: 四川省, 贵州: 贵州省, 云南: 云南省, 陕西: 陕西省, 甘肃: 甘肃省, 青海: 青海省, 台湾: 台湾省, 内蒙古: 内蒙古自治区, 广西: 广西壮族自治区, 西藏: 西藏自治区, 宁夏: 宁夏回族自治区, 新疆: 新疆维吾尔自治区, 香港: 香港特别行政区, 澳门: 澳门特别行政区 }; // 标准化地区名称 const normalizedData (data||).map(item > { const standardName provinceMapitem.name || item.name; return { name: standardName, value: typeof item.value number && !isNaN(item.value) ? item.value : 0 }; }); // 计算最大值用于视觉映射 const maxVal Math.max(...normalizedData.map(d > d.value), 1); // 设置图表选项 const option { tooltip: { trigger: item, formatter: params > { const value params.data ? params.data.value : 0; return `${params.name}: ${value} 条评论`; } }, visualMap: { min: 0, max: maxVal, left: left, bottom: 5%, text: 高, 低, calculable: true, inRange: { color: #e0f3f8,#abd9e9,#74add1,#4575b4,#313695 } }, series: { name: IP来源, type: map, map: china, roam: true, data: normalizedData.length ? normalizedData : {name: 未知, value: 0} } }; ipMapChart.setOption(option); ipMapChart.hideLoading(); } catch (error) { console.error(加载地图数据失败:, error); ipMapChart.hideLoading(); ipMapChart.setOption({ title: { text: 地图加载失败, left: center, top: center, textStyle: { color: #ff3333, fontSize: 16 } } }); } } // 词云 function renderWordCloud(comments){ const container document.getElementById(wordCloud); if (wordCloudChart) { wordCloudChart.dispose(); } wordCloudChart echarts.init(container); wordCloudChart.showLoading({text:加载中...}); const items comments.slice(0,15).map(c>{ const txtstripTags(c.comment||); const nametxt.length>20?txt.slice(0,20)+…:txt; return {name: name||(空), value: txt.length+10, url:c.url}; }); wordCloudChart.setOption({ series:{type:wordCloud,sizeRange:12,50,rotationRange:-45,45, textStyle:{color:()>`rgb(${0,0,0.map(()>Math.round(Math.random()*200)).join(,)})`}, data:items} }, true); wordCloudChart.on(click, p>{ if(p.data.url) window.open(p.data.url,_blank); }); wordCloudChart.hideLoading(); } // Top15 function renderTopArticles(data){ const container document.getElementById(topArticles); if (topArticlesChart) { topArticlesChart.dispose(); } topArticlesChart echarts.init(container); topArticlesChart.showLoading({text:加载中...}); topArticlesChart.setOption({ tooltip:{},grid:{left:3%,right:4%,bottom:3%,containLabel:true}, xAxis:{type:value},yAxis:{type:category,data:data.map(d>d.title)}, series:{type:bar,data:data.map(d>d.count)} }, true); topArticlesChart.on(click,p>{const itemdatap.dataIndex; if(item&&item.url)window.open(item.url,_blank);}); topArticlesChart.hideLoading(); } // 趋势 function renderTrend(data){ const container document.getElementById(trendChart); if (trendChart) { trendChart.dispose(); } trendChart echarts.init(container); trendChart.showLoading({text:加载中...}); trendChart.setOption({ tooltip:{trigger:axis},xAxis:{type:category,data:data.map(d>d.date)}, yAxis:{type:value}, series:{type:line,smooth:true,data:data.map(d>d.count)} }, true); trendChart.hideLoading(); } // 最新评论表格 function renderLatest(data){ const containerdocument.getElementById(latestComments); container.querySelector(.loading).style.displaynone; container.querySelector(table).style.displaytable; const tbodydocument.getElementById(commentsTableBody); tbody.innerHTML; data.forEach(c>{ const trdocument.createElement(tr); let timeStr ; try { timeStr new Date(Number(c.created)).toLocaleString(); } catch { timeStr -; } tr.innerHTML`td classpx-4 py-2>${timeStr}/td> td classpx-4 py-2>a href${c.url} target_blank>${c.url}/a>/td> td classpx-4 py-2>${c.nick}/td> td classpx-4 py-2>${stripTags(c.comment)}/td>`; tbody.appendChild(tr); }); } // let lastData null; // 已声明,避免重复声明 // Ajax无感刷新,先请求数据,后平滑更新各模块 let lastData null; async function update(){ try { const r await fetch(/api/dashboard, {cache:no-store}); const d await r.json(); // 只有数据变化时才更新,减少闪烁 if (!lastData || JSON.stringify(d) ! JSON.stringify(lastData)) { document.getElementById(totalComments).textContentd.totalComments; document.getElementById(todayComments).textContentd.todayComments; document.getElementById(uniqueVisitors).textContentd.uniqueVisitors; renderIPMap(d.ipDist); renderWordCloud(d.latestComments); renderTopArticles(d.topArticles); renderTrend(d.trend); renderLatest(d.latestComments); lastData d; } } catch(e) { // 网络异常时不刷新界面,避免白屏 console.error(刷新失败, e); } } document.addEventListener(DOMContentLoaded,()>{update(); setInterval(update,60000);}); window.addEventListener(resize,()>{ipMapChart&&ipMapChart.resize();trendChart&&trendChart.resize();topArticlesChart&&topArticlesChart.resize();wordCloudChart&&wordCloudChart.resize();}); /script> !-- 页脚 --> footer classmt-12 text-center text-gray-500 text-sm> div> ©a hrefhttps://blog.xingchencloud.top/ target_blank classtext-blue-600 hover:underline font-semibold>叶玖洛/a>的博客Twikoo评论数据可视化监控系统 /div> div classmt-1>本站信息为定时刷新,部分数据可能有存在延迟/div> br> /footer>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]