【搬运】「IP 检测」多源风控看板油猴脚本
原作者: https://www.nodeloc.com/u/godeluoo
大家好,最近手痒,写了一款基于多源 IP 风险、地理及安全检测面板脚本。支持随时拖动和自由拉伸大小。
先上几张功能预览和排版效果:
绿灯全亮:AI 与流媒体连通性拉满,代理链路健康度一目了然。
高精风控指标 :bar_chart::集成全球最权威的 IP 欺诈识别库。
核心亮点
- 多源高精归属地 & 类型并发对照
竞态机制获取主 IP:国内走淘宝,国外走 ipify/ipapi.is,并发竞态,秒速获取。
多库对照:同时聚合了 IPInfo.io、IP-API.is、IP.SB、IP-API.com 等多路权威数据库,精准区分 数据中心 (Hosting)、住宅家宽 (Residential) 以及运营商 ASN 流量构成比例。 - AI / 常用服务连通性指示灯网格
绕过 WAF 盾探测:采用免 HEAD 拦截的 GET 异步请求,直接测速并判断当前节点是否被 ChatGPT、Claude 进行区域阻断,以及 GitHub、YouTube 等出口是否连通。 - 零成本白嫖顶级防欺诈风控 API (可选)
支持在脚本中直接填入你申请的 IPQualityScore (IPQS) 和 AbuseIPDB 的免费 API Key。
每天 1000~5000 次的官方免费额度,直接本地查询该 IP 的 实时欺诈得分 (Fraud Score) 以及 历史滥用举报频次,企业级风控画像一屏展示。
:hammer_and_wrench: 安装与使用教程
第一步:安装 Tampermonkey (油猴) 插件
如果你的浏览器还没有安装油猴插件,请前往对应浏览器应用商店搜索并安装 Tampermonkey。
第二步:新建用户脚本
点击油猴插件图标,选择 「添加新脚本」。
清空编辑器中默认的代码。
复制下方的完整脚本代码贴进去,按 Ctrl + S (Mac 为 Cmd + S) 保存即可。
第三步(可选):激活企业级风控 Key
展开面板后,切换到 「设置 (Key)」 页签。
贴入你注册好的免费 Key(建议去 AbuseIPDB 官网 和 IPQS 官网 注册免费账户,注册即送免费查询额度,普通人完全用不完)。
点击保存,即可解锁主面板的安全得分评估和黑历史排查记录。


完整脚本源码
复制
// ==UserScript==
// @name IP 检测
// @namespace http://tampermonkey.net/
// @version 3.4.4
// @description 基于 Cyberpunk-Glassmorphism 科技美学的高级多源 IP 风险、地理及安全检测面板,已集成多源 IP 类型表格、多源定位对照、多源风险占比柱状图、风险因子小红旗表格。
// @author Antigravity
// @match *://*/*
// @grant GM_xmlhttpRequest
// @grant GM_setValue
// @grant GM_getValue
// @connect api.ipify.org
// @connect ipapi.co
// @connect ip-api.com
// @connect api.ip.sb
// @connect ipinfo.io
// @connect api.ipapi.is
// @connect www.ipqualityscore.com
// @connect api.abuseipdb.com
// @connect www.taobao.com
// @connect chatgpt.com
// @connect claude.ai
// @connect github.com
// @connect youtube.com
// @connect ippure.com
// @run-at document-end
// ==/UserScript==
(function() {
'use strict';
// 1. 动态加载 Google Font
const linkFont = document.createElement('link');
linkFont.rel = 'stylesheet';
linkFont.href = 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Outfit:wght@400;600;700&display=swap';
document.head.appendChild(linkFont);
// 2. 注入全局看板样式 (Cyberpunk Glassmorphism Design System)
const style = document.createElement('style');
style.innerHTML = `
.ip-super-panel {
position: fixed;
bottom: 24px;
right: 24px;
width: 490px;
height: 560px; /* 剥离地图与流媒体后,高度缩减,界面更紧凑 */
min-width: 420px;
min-height: 380px;
max-width: 90vw;
max-height: 95vh;
background: rgba(10, 12, 22, 0.78);
backdrop-filter: blur(30px) saturate(220%);
-webkit-backdrop-filter: blur(30px) saturate(220%);
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 20px;
box-shadow:
0 0 1px rgba(255, 255, 255, 0.2) inset,
0 24px 60px rgba(0, 0, 0, 0.7),
0 0 40px rgba(99, 102, 241, 0.15);
z-index: 999999;
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
color: #cbd5e1;
display: flex;
flex-direction: column;
overflow: hidden;
transition: width 0.4s cubic-bezier(0.16, 1, 0.3, 1), height 0.4s cubic-bezier(0.16, 1, 0.3, 1), border-radius 0.4s, background-color 0.4s, border-color 0.4s, box-shadow 0.4s;
user-select: none;
}
.ip-super-panel.minimized {
width: 220px !important; /* 强制拉回折叠态尺寸,覆盖 JS 的 inline-style */
height: 44px !important;
min-width: 0 !important;
min-height: 0 !important;
border-radius: 22px !important;
background: rgba(10, 12, 22, 0.92) !important;
border-color: rgba(99, 102, 241, 0.3) !important;
box-shadow: 0 8px 32px rgba(99, 102, 241, 0.2) !important;
cursor: move !important;
}
.ip-super-panel.minimized .ip-super-header {
padding: 0 16px;
height: 100%;
background: transparent;
border-bottom: none;
display: flex;
align-items: center;
justify-content: space-between;
white-space: nowrap;
cursor: move; /* 折叠态的头部也展示拖动鼠标手势 */
}
.ip-super-panel.minimized .ip-super-btn {
padding: 4px 8px;
font-size: 10px;
}
.ip-super-header {
padding: 14px 20px;
background: linear-gradient(90deg, rgba(99, 102, 241, 0.15) 0%, rgba(6, 182, 212, 0.1) 100%);
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
display: flex;
justify-content: space-between;
align-items: center;
cursor: move;
font-family: 'Outfit', sans-serif;
font-weight: 600;
font-size: 15px;
letter-spacing: 0.5px;
white-space: nowrap; /* 强行不折行 */
}
.ip-super-header-title {
display: flex;
align-items: center;
gap: 8px;
background: linear-gradient(90deg, #818cf8 0%, #34d399 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-size: 16px;
white-space: nowrap; /* 强行不折行 */
flex-shrink: 0;
}
.ip-super-ctrls {
display: flex;
gap: 8px;
align-items: center;
}
.ip-super-btn {
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.08);
color: #94a3b8;
padding: 6px 12px;
border-radius: 8px;
cursor: pointer;
font-size: 11px;
font-weight: 500;
transition: all 0.25s;
}
.ip-super-btn:hover {
background: rgba(99, 102, 241, 0.2);
border-color: rgba(99, 102, 241, 0.4);
color: #fff;
box-shadow: 0 0 10px rgba(99, 102, 241, 0.3);
}
.ip-super-body {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
}
.ip-super-panel.minimized .ip-super-body {
display: none;
}
/* Dashboard Hero Section */
.ip-super-hero {
padding: 16px 20px;
display: flex;
align-items: center;
gap: 20px;
background: rgba(255, 255, 255, 0.01);
border-bottom: 1px solid rgba(255, 255, 255, 0.04);
}
.ip-score-ring {
position: relative;
width: 76px;
height: 76px;
display: flex;
align-items: center;
justify-content: center;
}
.ip-score-value {
position: absolute;
font-family: 'Outfit', sans-serif;
font-size: 20px;
font-weight: 700;
color: #10b981;
text-shadow: 0 0 15px currentColor;
}
.ip-hero-info {
flex: 1;
}
.ip-hero-ip {
font-family: 'Outfit', monospace;
font-size: 22px;
font-weight: 700;
background: linear-gradient(90deg, #ffffff 0%, #cbd5e1 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
letter-spacing: 0.5px;
}
.ip-hero-meta {
font-size: 12px;
color: #94a3b8;
margin-top: 6px;
display: flex;
align-items: center;
gap: 8px;
}
/* Navigation Tabs */
.ip-super-tabs {
display: flex;
background: rgba(0, 0, 0, 0.15);
border-bottom: 1px solid rgba(255, 255, 255, 0.04);
padding: 0 16px;
overflow-x: auto;
}
.ip-super-tabs::-webkit-scrollbar {
display: none;
}
.ip-super-tab {
padding: 12px 14px;
font-size: 12px;
font-weight: 500;
color: #64748b;
cursor: pointer;
border-bottom: 2px solid transparent;
transition: all 0.2s;
white-space: nowrap;
}
.ip-super-tab:hover {
color: #cbd5e1;
}
.ip-super-tab.active {
color: #818cf8;
border-bottom-color: #818cf8;
font-weight: 600;
}
/* Tab Contents */
.ip-super-content {
flex: 1;
overflow-y: auto;
padding: 16px 20px;
}
.tab-panel {
display: none;
height: 100%;
}
.tab-panel.active {
display: block;
}
/* 智能诊断评价总结面板 (AI Diagnostic Summary) */
.ai-summary-card {
background: linear-gradient(135deg, rgba(99, 102, 241, 0.08) 0%, rgba(6, 182, 212, 0.04) 100%);
border: 1px solid rgba(99, 102, 241, 0.15);
border-radius: 14px;
padding: 14px;
margin-bottom: 16px;
font-size: 12px;
line-height: 1.6;
}
.ai-summary-title {
display: flex;
align-items: center;
gap: 6px;
font-weight: 700;
font-size: 13px;
color: #818cf8;
margin-bottom: 8px;
}
.ai-summary-section {
margin-bottom: 8px;
}
.ai-summary-label {
font-weight: 600;
color: #94a3b8;
display: inline-block;
margin-right: 4px;
}
.ai-summary-text {
color: #cbd5e1;
}
/* Split layout for visual dashboard */
.dashboard-split {
display: flex;
gap: 16px;
margin-bottom: 16px;
}
.dashboard-left {
width: 140px;
background: rgba(255, 255, 255, 0.02);
border: 1px solid rgba(255, 255, 255, 0.04);
border-radius: 14px;
padding: 14px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.dashboard-right {
flex: 1;
display: flex;
flex-direction: column;
gap: 8px;
}
.overview-title {
font-size: 11px;
font-weight: 600;
color: #64748b;
text-align: center;
margin-bottom: 10px;
}
.risk-bubble {
margin-top: 10px;
font-size: 11px;
font-weight: 700;
padding: 3px 10px;
border-radius: 20px;
text-align: center;
}
.risk-bubble.danger {
background: rgba(239, 68, 68, 0.2);
color: #fca5a5;
border: 1px solid rgba(239, 68, 68, 0.3);
}
.risk-bubble.warning {
background: rgba(245, 158, 11, 0.2);
color: #fde047;
border: 1px solid rgba(245, 158, 11, 0.3);
}
.risk-bubble.safe {
background: rgba(16, 185, 129, 0.2);
color: #a7f3d0;
border: 1px solid rgba(16, 185, 129, 0.3);
}
.threat-count-text {
font-size: 11px;
color: #94a3b8;
margin-top: 8px;
text-align: center;
}
/* Detail attributes list styling */
.attr-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 6px 0;
border-bottom: 1px solid rgba(255, 255, 255, 0.03);
font-size: 12px;
}
.attr-row:last-child {
border-bottom: none;
}
.attr-label {
color: #64748b;
font-weight: 500;
}
.attr-val {
color: #e2e8f0;
font-weight: 600;
text-align: right;
max-width: 70%;
word-break: break-all;
}
/* Status Badges */
.badge-tag {
display: inline-block;
padding: 2px 8px;
border-radius: 6px;
font-size: 10px;
font-weight: bold;
letter-spacing: 0.5px;
}
.badge-tag.dc {
background: linear-gradient(135deg, rgba(239, 68, 68, 0.18) 0%, rgba(239, 68, 68, 0.05) 100%);
color: #fca5a5;
border: 1px solid rgba(239, 68, 68, 0.25);
}
.badge-tag.residential {
background: linear-gradient(135deg, rgba(16, 185, 129, 0.18) 0%, rgba(16, 185, 129, 0.05) 100%);
color: #a7f3d0;
border: 1px solid rgba(16, 185, 129, 0.25);
}
/* 网络构成比例 (运营商业务范围) */
.net-composition-card {
background: rgba(255, 255, 255, 0.02);
border: 1px solid rgba(255, 255, 255, 0.04);
border-radius: 14px;
padding: 14px;
margin-top: 14px;
}
.net-comp-bar {
display: flex;
height: 10px;
border-radius: 5px;
overflow: hidden;
background: rgba(255, 255, 255, 0.08);
margin: 8px 0;
}
.net-comp-chunk {
height: 100%;
transition: width 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
.net-comp-legend {
display: flex;
justify-content: space-between;
font-size: 10px;
color: #94a3b8;
flex-wrap: wrap;
gap: 8px;
}
/* Comparisons Lists in Compare Tab */
.compare-section-title {
font-size: 12px;
font-weight: 700;
color: #818cf8;
margin: 16px 0 8px 0;
display: flex;
align-items: center;
gap: 6px;
}
.compare-section-title:first-child {
margin-top: 0;
}
.compare-table {
width: 100%;
border-collapse: collapse;
font-size: 11px;
margin-bottom: 12px;
}
.compare-table th {
text-align: left;
padding: 8px 10px;
background: rgba(0, 0, 0, 0.2);
color: #64748b;
font-weight: 600;
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.compare-table td {
padding: 8px 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.03);
color: #cbd5e1;
}
/* Multi-Source Location Compare list */
.loc-compare-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 14px;
background: rgba(255, 255, 255, 0.01);
border: 1px solid rgba(255, 255, 255, 0.03);
border-radius: 10px;
margin-bottom: 8px;
font-size: 12px;
}
.loc-source-name {
font-weight: 600;
color: #818cf8;
display: flex;
align-items: center;
gap: 6px;
}
/* Multi-Source Risk Score meters */
.risk-meter-wrapper {
margin-bottom: 12px;
}
.risk-meter-header {
display: flex;
justify-content: space-between;
font-size: 11px;
margin-bottom: 4px;
}
.risk-meter-bar {
height: 6px;
border-radius: 3px;
overflow: hidden;
display: flex;
background: rgba(255,255,255,0.08);
}
.risk-meter-fill-safe {
background: #10b981;
height: 100%;
}
.risk-meter-fill-danger {
background: #ef4444;
height: 100%;
}
.risk-level-badge {
font-size: 9px;
font-weight: bold;
padding: 1px 5px;
border-radius: 4px;
}
.risk-level-badge.high { background: rgba(239, 68, 68, 0.2); color: #fca5a5; border: 1px solid rgba(239,68,68,0.3); }
.risk-level-badge.mid { background: rgba(245, 158, 11, 0.2); color: #fde047; border: 1px solid rgba(245,158,11,0.3); }
.risk-level-badge.low { background: rgba(16, 185, 129, 0.2); color: #a7f3d0; border: 1px solid rgba(16,185,129,0.3); }
/* Multi-Source Risk Factor Flag Grid Table */
.factor-table-container {
overflow-x: auto;
margin-top: 16px;
border: 1px solid rgba(255, 255, 255, 0.05);
border-radius: 12px;
background: rgba(0,0,0,0.15);
}
.factor-table {
width: 100%;
border-collapse: collapse;
font-size: 10px;
text-align: center;
}
.factor-table th {
padding: 8px 6px;
font-weight: 600;
color: #64748b;
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
background: rgba(0, 0, 0, 0.2);
}
.factor-table td {
padding: 8px 6px;
border-bottom: 1px solid rgba(255, 255, 255, 0.03);
vertical-align: middle;
}
.factor-table th:first-child, .factor-table td:first-child {
text-align: left;
padding-left: 12px;
font-weight: 600;
color: #818cf8;
font-size: 11px;
}
.factor-indicator {
display: inline-flex;
align-items: center;
justify-content: center;
width: 16px;
height: 16px;
border-radius: 4px;
}
.factor-indicator.positive {
color: #ef4444; /* 阳性 (红色小旗 🚩) */
}
.factor-indicator.negative {
color: #10b981; /* 阴性 (绿色圆点 🟢) */
}
.factor-indicator.unsupported {
color: #475569; /* 不支持 (灰色斜纹 ▨) */
}
/* Settings CSS */
.ip-settings-group {
margin-bottom: 14px;
}
.ip-settings-label {
display: block;
font-size: 11px;
color: #64748b;
margin-bottom: 6px;
font-weight: 600;
}
.ip-settings-input {
width: 100%;
background: rgba(0, 0, 0, 0.3);
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 8px;
padding: 10px 12px;
color: #fff;
font-size: 12px;
font-family: monospace;
box-sizing: border-box;
outline: none;
transition: all 0.25s;
}
.ip-settings-input:focus {
border-color: rgba(99, 102, 241, 0.5);
box-shadow: 0 0 10px rgba(99, 102, 241, 0.2);
}
/* AI 连通性指示灯网格 */
.ai-status-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 8px;
margin-bottom: 12px;
background: rgba(255, 255, 255, 0.02);
border: 1px solid rgba(255, 255, 255, 0.05);
border-radius: 12px;
padding: 8px 12px;
}
.ai-status-item {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
font-size: 11px;
font-weight: 500;
color: #94a3b8;
background: rgba(255, 255, 255, 0.03);
padding: 6px 4px;
border-radius: 8px;
bor
完整代码