1316 lines
48 KiB
HTML
1316 lines
48 KiB
HTML
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="x-dns-prefetch-control" content="on">
|
||
<link rel="dns-prefetch" href="//cdn.jsdelivr.net">
|
||
<link rel="dns-prefetch" href="//whois.pconline.com.cn">
|
||
<link rel="dns-prefetch" href="//pubstatic.b0.upaiyun.com">
|
||
<link rel="dns-prefetch" href="//api-ipv4.ip.sb">
|
||
<link rel="dns-prefetch" href="//api.ipify.org">
|
||
<link rel="dns-prefetch" href="//api.ttt.sh">
|
||
<link rel="dns-prefetch" href="//myip.ipip.net">
|
||
<link rel="dns-prefetch" href="//qqwry.api.skk.moe">
|
||
<link rel="dns-prefetch" href="//d.skk.moe">
|
||
<link rel="preconnect" href="https://pubstatic.b0.upaiyun.com">
|
||
<link rel="preconnect" href="https://whois.pconline.com.cn">
|
||
<link rel="preconnect" href="https://api-ipv4.ip.sb">
|
||
<link rel="preconnect" href="https://api.ipify.org">
|
||
<link rel="preconnect" href="https://api.ttt.sh">
|
||
<link rel="preconnect" href="https://qqwry.api.skk.moe">
|
||
<link rel="preconnect" href="https://d.skk.moe">
|
||
<link rel="preconnect" href="http://myip.ipip.net">
|
||
<meta name="referrer" content="no-referrer">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no,minimal-ui">
|
||
<title>IP 地址查询</title>
|
||
|
||
<style>
|
||
|
||
.oc {
|
||
--card-item-padding: 12px 8px;
|
||
--card-item-min-height: 100px;
|
||
--card-item-border-radius: var(--radius-md);
|
||
}
|
||
|
||
.oc[data-darkmode="true"] #mode-icon rect[stroke="#333"] {
|
||
stroke: var(--text-primary, #fff);
|
||
}
|
||
|
||
.oc[data-darkmode="true"] #mode-icon path[stroke="#333"] {
|
||
stroke: var(--text-primary, #fff);
|
||
}
|
||
|
||
.oc[data-darkmode="true"] {
|
||
background-color: var(--bg-light, #111827);
|
||
}
|
||
|
||
.oc[data-darkmode="true"] .myip-main-card {
|
||
background: var(--bg-white, #1f2937);
|
||
border-color: var(--border-light, #374151);
|
||
}
|
||
|
||
.oc[data-darkmode="true"] .myip-ip-item,
|
||
.oc[data-darkmode="true"] .myip-check-item {
|
||
background: var(--bg-gray, #374151);
|
||
border-color: var(--border-light, #4b5563);
|
||
}
|
||
|
||
.oc[data-darkmode="true"] .myip-ip-item:hover,
|
||
.oc[data-darkmode="true"] .myip-check-item:hover {
|
||
background: var(--hover-bg, #4b5563);
|
||
border-color: var(--primary-color, #3b82f6);
|
||
}
|
||
|
||
.oc[data-darkmode="true"] .myip-section-title {
|
||
color: var(--text-primary, #f9fafb);
|
||
border-bottom-color: var(--border-light, #374151);
|
||
}
|
||
|
||
.oc[data-darkmode="true"] .ip-title,
|
||
.oc[data-darkmode="true"] .ip-state_title {
|
||
color: var(--text-title, --text-title);
|
||
}
|
||
|
||
.oc[data-darkmode="true"] .ip-title::after,
|
||
.oc[data-darkmode="true"] .ip-state_title::after {
|
||
background-color: var(--border-color, --border-color);
|
||
}
|
||
|
||
.oc[data-darkmode="true"] .ip-result {
|
||
color: var(--text-primary, #f9fafb);
|
||
}
|
||
|
||
.oc[data-darkmode="true"] .ip-geo {
|
||
color: var(--text-secondary, #d1d5db);
|
||
}
|
||
|
||
.oc[data-darkmode="true"] .myip-footer p {
|
||
color: var(--text-secondary, #d1d5db);
|
||
}
|
||
|
||
.oc[data-darkmode="true"] .mode-label {
|
||
color: var(--text-secondary, #d1d5db);
|
||
}
|
||
|
||
.oc[data-darkmode="true"] .sk-text-success {
|
||
color: var(--success-color, #10b981);
|
||
}
|
||
|
||
.oc[data-darkmode="true"] .sk-text-error {
|
||
color: var(--error-color, #ef4444);
|
||
}
|
||
|
||
.oc .myip-main-card {
|
||
background: var(--bg-white, #ffffff);
|
||
border: 1px solid var(--border-light, #e5e7eb);
|
||
border-radius: var(--radius-lg);
|
||
padding: var(--card-padding);
|
||
box-shadow: var(--shadow-md);
|
||
margin: 12px auto;
|
||
width: 100%;
|
||
transition: all var(--transition-fast);
|
||
}
|
||
|
||
.oc .myip-content-grid {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr;
|
||
gap: 12px;
|
||
align-items: start;
|
||
}
|
||
|
||
.oc .myip-ip-section {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 12px;
|
||
}
|
||
|
||
.oc .myip-check-section {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 12px;
|
||
}
|
||
|
||
.oc .myip-section-title {
|
||
font-size: 25px;
|
||
font-weight: bold;
|
||
color: var(--text-primary, #111827);
|
||
margin: 8px;
|
||
padding: 0;
|
||
text-align: left;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
min-height: 32px;
|
||
border-bottom: 2px solid var(--border-light, #e5e7eb);
|
||
padding-bottom: 12px;
|
||
}
|
||
|
||
.oc .myip-toolbar {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 8px;
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.oc .myip-ip-list {
|
||
display: grid;
|
||
grid-template-columns: repeat(2, 1fr);
|
||
gap: 8px;
|
||
margin: auto 8px;
|
||
}
|
||
|
||
.oc .myip-check-list {
|
||
display: grid;
|
||
grid-template-columns: repeat(2, 1fr);
|
||
gap: 8px;
|
||
margin: auto 8px;
|
||
}
|
||
|
||
.oc .myip-ip-item,
|
||
.oc .myip-check-item {
|
||
display: flex;
|
||
flex-direction: column;
|
||
justify-content: space-between;
|
||
padding: var(--card-item-padding);
|
||
background: var(--bg-gray, #f9fafb);
|
||
border: 1px solid var(--border-light, #e5e7eb);
|
||
border-radius: var(--card-item-border-radius);
|
||
transition: all var(--transition-fast);
|
||
min-height: var(--card-item-min-height);
|
||
text-align: center;
|
||
position: relative;
|
||
max-height: 104px;
|
||
}
|
||
|
||
.oc .myip-ip-item:hover,
|
||
.oc .myip-check-item:hover {
|
||
background: var(--hover-bg, #f3f4f6);
|
||
border-color: var(--primary-color, #3b82f6);
|
||
transform: translateY(-2px);
|
||
box-shadow: var(--shadow-sm);
|
||
}
|
||
|
||
.oc .ip-title,
|
||
.oc .ip-state_title {
|
||
font-weight: bold;
|
||
font-size: 14px;
|
||
color: var(--text-title, --text-title);
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
margin-bottom: 8px;
|
||
white-space: nowrap;
|
||
text-align: center;
|
||
line-height: 1.2;
|
||
flex-shrink: 0;
|
||
position: relative;
|
||
padding-bottom: 4px;
|
||
}
|
||
|
||
.oc .ip-title::after,
|
||
.oc .ip-state_title::after {
|
||
content: '';
|
||
position: absolute;
|
||
bottom: 0;
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
width: 30px;
|
||
height: 1px;
|
||
background-color: var(--border-color, --border-color);
|
||
}
|
||
|
||
.oc .myip-ip-result {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
gap: 8px;
|
||
flex: 1;
|
||
justify-content: center;
|
||
min-height: 50px;
|
||
line-height: 15px;
|
||
}
|
||
|
||
.oc .ip-result {
|
||
font-size: 13px;
|
||
color: var(--text-primary, #111827);
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
text-align: center;
|
||
font-weight: 500;
|
||
width: 100%;
|
||
}
|
||
|
||
.oc .ip-geo {
|
||
font-size: 13px;
|
||
line-height: 16px;
|
||
color: var(--text-secondary, #6b7280);
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
text-align: center;
|
||
display: -webkit-box;
|
||
-webkit-line-clamp: 2;
|
||
-webkit-box-orient: vertical;
|
||
white-space: normal;
|
||
width: 100%;
|
||
font-weight: 500;
|
||
}
|
||
|
||
.oc .myip-status-result {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
gap: 1px;
|
||
flex: 1;
|
||
justify-content: center;
|
||
min-height: 50px;
|
||
}
|
||
|
||
.oc .sk-text-success,
|
||
.oc .sk-text-error {
|
||
font-size: 13px;
|
||
line-height: 18px;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
font-weight: 500;
|
||
width: 100%;
|
||
text-align: center;
|
||
display: inline-block;
|
||
vertical-align: bottom;
|
||
margin-bottom: 2px;
|
||
}
|
||
|
||
.oc .sk-text-success {
|
||
color: var(--success-color, #059669);
|
||
}
|
||
|
||
.oc .sk-text-error {
|
||
color: var(--error-color, #dc2626);
|
||
}
|
||
|
||
.oc .sk-load-success {
|
||
font-size: 13px;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
width: 100%;
|
||
text-align: center;
|
||
display: inline-block;
|
||
vertical-align: bottom;
|
||
font-weight: 500;
|
||
}
|
||
|
||
.oc .myip-footer {
|
||
position: relative;
|
||
height: 24px;
|
||
padding-top: 8px;
|
||
grid-column: 1 / -1;
|
||
}
|
||
|
||
.oc .myip-footer p {
|
||
position: absolute;
|
||
right: 0% !important;
|
||
top: 0 !important;
|
||
margin: 0 !important;
|
||
font-size: 15px !important;
|
||
line-height: 20px !important;
|
||
padding: 0px 10px !important;
|
||
white-space: nowrap;
|
||
z-index: 1;
|
||
color: var(--text-secondary, #6b7280);
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
max-width: 100%;
|
||
box-sizing: border-box;
|
||
text-align: right;
|
||
}
|
||
|
||
.oc .myip-footer a {
|
||
text-decoration: none;
|
||
color: var(--primary-color, #3b82f6);
|
||
opacity: 0.8;
|
||
transition: opacity var(--transition-fast);
|
||
font-weight: 500;
|
||
}
|
||
|
||
.oc .myip-footer a:hover {
|
||
opacity: 1;
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.oc .mode-label {
|
||
font-size: 14px;
|
||
color: var(--text-secondary, #666);
|
||
vertical-align: middle;
|
||
}
|
||
|
||
.oc .mode-icon {
|
||
margin: 0 8px;
|
||
vertical-align: middle;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.oc #mode-icon,
|
||
.oc #eye-icon,
|
||
.oc #data-refresh-icon {
|
||
vertical-align: bottom;
|
||
margin: 0 3px;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.oc #mode-icon {
|
||
cursor: pointer;
|
||
transition: all 0.2s ease;
|
||
vertical-align: middle;
|
||
}
|
||
|
||
.oc #mode-icon:hover {
|
||
transform: scale(1.1);
|
||
}
|
||
|
||
.oc #eye-icon {
|
||
cursor: pointer;
|
||
transition: all 0.2s ease;
|
||
vertical-align: middle;
|
||
color: currentColor;
|
||
}
|
||
|
||
.oc #eye-icon:hover {
|
||
transform: scale(1.1);
|
||
}
|
||
|
||
.oc #data-refresh-icon {
|
||
cursor: pointer;
|
||
transition: all 0.2s ease;
|
||
vertical-align: middle;
|
||
color: currentColor;
|
||
margin-top: 1px;
|
||
}
|
||
|
||
.oc #data-refresh-icon:hover {
|
||
transform: scale(1.1) rotate(90deg);
|
||
}
|
||
|
||
.oc .myip-icon-btn {
|
||
cursor: pointer;
|
||
transition: all 0.2s ease;
|
||
vertical-align: middle;
|
||
color: currentColor;
|
||
}
|
||
|
||
.oc .myip-icon-btn:hover {
|
||
transform: scale(1.1);
|
||
color: var(--primary-color, #3b82f6);
|
||
}
|
||
|
||
@media screen and (max-width: 1200px) {
|
||
.oc .myip-main-card {
|
||
margin: 11px auto;
|
||
}
|
||
}
|
||
|
||
@media screen and (max-width: 768px) {
|
||
.oc {
|
||
--card-item-padding: 8px 6px;
|
||
--card-item-min-height: 80px;
|
||
}
|
||
|
||
.oc .myip-content-grid {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
|
||
.oc .myip-main-card {
|
||
margin: 10px auto;
|
||
}
|
||
|
||
.oc .myip-section-title {
|
||
font-size: 22px;
|
||
margin-bottom: 12px;
|
||
}
|
||
|
||
.oc .myip-ip-list,
|
||
.oc .myip-check-list {
|
||
grid-template-columns: repeat(2, 1fr);
|
||
}
|
||
|
||
.oc .ip-title,
|
||
.oc .ip-state_title {
|
||
font-size: 13px;
|
||
}
|
||
|
||
.oc .ip-title::after,
|
||
.oc .ip-state_title::after {
|
||
width: 25px;
|
||
}
|
||
|
||
.oc .ip-result {
|
||
font-size: 12px;
|
||
}
|
||
|
||
.oc .ip-geo {
|
||
font-size: 12px;
|
||
}
|
||
|
||
.oc .sk-text-success,
|
||
.oc .sk-text-error {
|
||
font-size: 12px;
|
||
}
|
||
|
||
.oc .sk-load-success {
|
||
font-size: 12px;
|
||
}
|
||
|
||
.oc .myip-footer p {
|
||
font-size: 15px;
|
||
line-height: 18px;
|
||
}
|
||
}
|
||
|
||
@media screen and (max-width: 575px) {
|
||
.oc {
|
||
--card-item-padding: 6px 4px;
|
||
--card-item-min-height: 70px;
|
||
}
|
||
|
||
.oc .myip-main-card {
|
||
padding: 8px;
|
||
margin: 8px auto;
|
||
}
|
||
|
||
.oc .myip-section-title {
|
||
font-size: 20px;
|
||
margin-bottom: 10px;
|
||
}
|
||
|
||
.oc .ip-title,
|
||
.oc .ip-state_title {
|
||
font-size: 12px;
|
||
margin-bottom: 6px;
|
||
}
|
||
|
||
.oc .ip-title::after,
|
||
.oc .ip-state_title::after {
|
||
width: 20px;
|
||
}
|
||
|
||
.oc .ip-result {
|
||
font-size: 11px;
|
||
}
|
||
|
||
.oc .ip-geo {
|
||
font-size: 11px;
|
||
}
|
||
|
||
.oc .sk-text-success,
|
||
.oc .sk-text-error {
|
||
font-size: 11px;
|
||
}
|
||
|
||
.oc .sk-load-success {
|
||
font-size: 11px;
|
||
}
|
||
|
||
.oc .myip-footer p {
|
||
font-size: 14px;
|
||
line-height: 16px;
|
||
}
|
||
}
|
||
</style>
|
||
</head>
|
||
|
||
<fieldset class="cbi-section">
|
||
<table width="100%">
|
||
<tr>
|
||
<td>
|
||
<div class="oc">
|
||
<div class="myip-main-card">
|
||
<div class="myip-content-grid">
|
||
<div class="myip-ip-section">
|
||
<p class="myip-section-title">
|
||
<%:IP Address%>
|
||
<span class="myip-toolbar">
|
||
<svg id="eye-icon" class="myip-icon-btn" width="20" height="20" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg" onclick="return privacy_my_ip(this)">
|
||
<title><%:Hide IP%></title>
|
||
<path id="eye-open" d="M128,56C48,56,16,128,16,128s32,72,112,72,112-72,112-72S208,56,128,56Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="12"></path>
|
||
<circle id="eye-open-circle" cx="128" cy="128" r="40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="12"></circle>
|
||
<g id="eye-closed" style="display: none;">
|
||
<line x1="48" y1="40" x2="208" y2="216" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="12"></line>
|
||
<path d="M154.9,157.6A39.6,39.6,0,0,1,128,168a40,40,0,0,1-26.9-69.6" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="12"></path>
|
||
<path d="M74,68.6C33.2,89.2,16,128,16,128s32,72,112,72a117.9,117.9,0,0,0,54-12.6" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="12"></path>
|
||
<path d="M208.6,169.1C230.4,149.6,240,128,240,128S208,56,128,56a123.9,123.9,0,0,0-20.7,1.7" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="12"></path>
|
||
<path d="M135.5,88.7a39.9,39.9,0,0,1,32.3,35.5" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="12"></path>
|
||
</g>
|
||
</svg>
|
||
</span>
|
||
</p>
|
||
|
||
<div class="myip-ip-list">
|
||
<div class="myip-ip-item">
|
||
<span class="ip-title">UpaiYun</span>
|
||
<div class="myip-ip-result">
|
||
<span class="ip-result" id="ip-upaiyun"></span>
|
||
<span class="ip-geo" id="ip-upaiyun-geo"></span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="myip-ip-item">
|
||
<span class="ip-title">IPIP.NET</span>
|
||
<div class="myip-ip-result">
|
||
<span class="ip-result" id="ip-ipip"></span>
|
||
<span class="ip-geo" id="ip-ipip-geo"></span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="myip-ip-item">
|
||
<span class="ip-title">IP.SB</span>
|
||
<div class="myip-ip-result">
|
||
<span class="ip-result" id="ip-ipsb"></span>
|
||
<span class="ip-geo" id="ip-ipsb-geo"></span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="myip-ip-item">
|
||
<span class="ip-title">IPIFY</span>
|
||
<div class="myip-ip-result">
|
||
<span class="ip-result" id="ip-ipify"></span>
|
||
<span class="ip-geo" id="ip-ipify-geo"></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="myip-check-section">
|
||
<p class="myip-section-title">
|
||
<%:Access Check%>
|
||
<span class="myip-toolbar">
|
||
<svg id="mode-icon" class="mode-icon myip-icon-btn" width="22" height="22" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg" onclick="return toggle_mode_by_icon(this)">
|
||
<title><%:Router Mode%></title>
|
||
<rect x="4" y="28" width="40" height="14" rx="2" fill="#2F88FF" stroke="#333" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||
<path d="M14 35L22 35" stroke="#FFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||
<rect x="30" y="33" width="4" height="4" rx="2" fill="#FFF"/>
|
||
<path d="M12 28L12 8" stroke="#333" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||
<path d="M36 28V8" stroke="#333" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||
</svg>
|
||
<svg id="data-refresh-icon" class="myip-icon-btn" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" onclick="return refresh_myip(this)">
|
||
<title><%:Refresh%></title>
|
||
<path d="M23 4v6h-6"></path>
|
||
<path d="M20.49 15a9 9 0 1 1-2.12-9.36L23 10"></path>
|
||
</svg>
|
||
</span>
|
||
</p>
|
||
|
||
<div class="myip-check-list">
|
||
<div class="myip-check-item">
|
||
<span class="ip-state_title"><%:Baidu Search%></span>
|
||
<div class="myip-status-result">
|
||
<span id="http-baidu"></span>
|
||
<span id="ldtime-baidu"></span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="myip-check-item">
|
||
<span class="ip-state_title"><%:NetEase Music%></span>
|
||
<div class="myip-status-result">
|
||
<span id="http-163"></span>
|
||
<span id="ldtime-163"></span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="myip-check-item">
|
||
<span class="ip-state_title">GitHub</span>
|
||
<div class="myip-status-result">
|
||
<span id="http-github"></span>
|
||
<span id="ldtime-github"></span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="myip-check-item">
|
||
<span class="ip-state_title">YouTube</span>
|
||
<div class="myip-status-result">
|
||
<span id="http-youtube"></span>
|
||
<span id="ldtime-youtube"></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="myip-footer">
|
||
<p>Powered by <a onclick="return ip_skk()" href="javascript:void(0);">ip.skk.moe</a></p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</fieldset>
|
||
|
||
<script>
|
||
function addTitleOnOverflow() {
|
||
document.querySelectorAll('.ip-result, .ip-geo').forEach(function (span) {
|
||
if (span.scrollWidth > span.clientWidth && localStorage.getItem('privacy_my_ip') !== 'true') {
|
||
span.setAttribute('title', span.textContent);
|
||
} else {
|
||
span.removeAttribute('title');
|
||
}
|
||
});
|
||
}
|
||
function ip_skk()
|
||
{
|
||
url2='https://ip.skk.moe';
|
||
window.open(url2);
|
||
}
|
||
const $$ = document;
|
||
var ip_ipip_ip;
|
||
var ip_ipsb_ip;
|
||
var ip_upaiyun_ip;
|
||
var ip_ipify_ip;
|
||
var refresh_http;
|
||
var refresh_ip;
|
||
$$.getElementById('ip-ipip').innerHTML = '<%:Querying...%>';
|
||
$$.getElementById('ip-ipify').innerHTML = '<%:Querying...%>';
|
||
$$.getElementById('ip-upaiyun').innerHTML = '<%:Querying...%>';
|
||
$$.getElementById('ip-ipsb').innerHTML = '<%:Querying...%>';
|
||
let random = parseInt(Math.random() * 100000000);
|
||
let IP = {
|
||
get: (url, type) =>
|
||
fetch(url, { method: 'GET' }).then((resp) => {
|
||
if (type === 'text')
|
||
return Promise.all([resp.ok, resp.status, resp.text(), resp.headers]);
|
||
else {
|
||
return Promise.all([resp.ok, resp.status, resp.json(), resp.headers]);
|
||
}
|
||
}).then(([ok, status, data, headers]) => {
|
||
if (ok) {
|
||
let json = {
|
||
ok,
|
||
status,
|
||
data,
|
||
headers
|
||
}
|
||
return json;
|
||
} else {
|
||
throw new Error(JSON.stringify(json.error));
|
||
}
|
||
}).catch(error => {
|
||
throw error;
|
||
}),
|
||
parseIPIpip: (ip, elID) => {
|
||
const v4 = '(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}';
|
||
const v4Exact = new RegExp(`^${v4}$`);
|
||
const anonymizedIp = (() => {
|
||
if (v4Exact.test(ip)) {
|
||
const [a, b, c] = ip.split('.');
|
||
return `${a}.${b}.${c}.0`;
|
||
}
|
||
return ip;
|
||
})();
|
||
|
||
fetch(`https://api.ip.sb/geoip/${anonymizedIp}`, {
|
||
referrerPolicy: 'no-referrer-when-downgrade',
|
||
}).then(r => r.json())
|
||
.then(resp => {
|
||
if ( resp.country && resp.country != '' && resp.isp && resp.isp != '' ) {
|
||
$$.getElementById(elID).innerHTML = resp.country + ' ' + resp.isp;
|
||
}
|
||
else {
|
||
fetch(`https://qqwry.api.skk.moe/${anonymizedIp}`, {
|
||
referrerPolicy: 'no-referrer-when-downgrade',
|
||
}).then(r => r.json())
|
||
.then(resp => {
|
||
if ( resp.geo.indexOf('skk.moe') == -1 ) {
|
||
$$.getElementById(elID).innerHTML = resp.geo;
|
||
}
|
||
else {
|
||
$$.getElementById(elID).innerHTML = 'Unknown';
|
||
}
|
||
})
|
||
}
|
||
})
|
||
},
|
||
getUpaiIP: () => {
|
||
IP.get(`https://pubstatic.b0.upaiyun.com/?_upnode&z=${random}`, 'json')
|
||
.then(resp => {
|
||
if (localStorage.getItem('privacy_my_ip') != 'true') {
|
||
$$.getElementById('ip-upaiyun').innerHTML = resp.data.remote_addr;
|
||
};
|
||
$$.getElementById('ip-upaiyun-geo').innerHTML = resp.data.remote_addr_location.country + ' ' + resp.data.remote_addr_location.province + ' ' + resp.data.remote_addr_location.city + ' ' + resp.data.remote_addr_location.isp;
|
||
addTitleOnOverflow();
|
||
})
|
||
},
|
||
getIpipIP: () => {
|
||
IP.get(`http://myip.ipip.net?z=${random}`, 'text')
|
||
.then(resp => {
|
||
const ipMatch = resp.data.match(/当前 IP:([0-9.]+)/);
|
||
const geoMatch = resp.data.match(/来自于:(.+)/);
|
||
|
||
if (ipMatch && geoMatch) {
|
||
if (localStorage.getItem('privacy_my_ip') != 'true') {
|
||
$$.getElementById('ip-ipip').innerHTML = ipMatch[1];
|
||
}
|
||
$$.getElementById('ip-ipip-geo').innerHTML = geoMatch[1].trim();
|
||
addTitleOnOverflow();
|
||
}
|
||
})
|
||
},
|
||
getIpifyIP: () => {
|
||
IP.get(`https://api.ipify.org/?format=json&z=${random}`, 'json')
|
||
.then(resp => {
|
||
if (localStorage.getItem('privacy_my_ip') != 'true') {
|
||
$$.getElementById('ip-ipify').innerHTML = resp.data.ip;
|
||
};
|
||
return resp.data.ip;
|
||
})
|
||
.then(ip => {
|
||
IP.parseIPIpip(ip, 'ip-ipify-geo');
|
||
addTitleOnOverflow();
|
||
})
|
||
}
|
||
};
|
||
|
||
$$.getElementById('http-baidu').innerHTML = '<span><%:Testing...%></span>';
|
||
$$.getElementById('http-163').innerHTML = '<span><%:Testing...%></span>';
|
||
$$.getElementById('http-github').innerHTML = '<span><%:Testing...%></span>';
|
||
$$.getElementById('http-youtube').innerHTML = '<span><%:Testing...%></span>';
|
||
let HTTP = {
|
||
checker: (domain, cbElID, cbLoID) => {
|
||
if (use_router_mode) {
|
||
HTTP.checker_router(domain, cbElID, cbLoID);
|
||
} else {
|
||
HTTP.checker_browser(domain, cbElID, cbLoID);
|
||
}
|
||
},
|
||
checker_browser: (domain, cbElID, cbLoID) => {
|
||
let img = new Image;
|
||
let img_start_time = (+new Date());
|
||
let timeout = setTimeout(() => {
|
||
img.onerror = img.onload = null;
|
||
$$.getElementById(cbLoID).style.display = 'none';
|
||
$$.getElementById(cbElID).innerHTML = '<span class="sk-text-error"><%:Access Timed Out%></span>'
|
||
}, 5000);
|
||
|
||
img.onerror = () => {
|
||
clearTimeout(timeout);
|
||
$$.getElementById(cbLoID).style.display = 'none';
|
||
$$.getElementById(cbElID).innerHTML = '<span class="sk-text-error"><%:Access Denied%></span>'
|
||
}
|
||
|
||
img.onload = () => {
|
||
clearTimeout(timeout);
|
||
let img_load_time = (new Date())- img_start_time;
|
||
if ($$.getElementById(cbLoID).style.display == 'none') {
|
||
$$.getElementById(cbLoID).style.display = '';
|
||
}
|
||
if (img_load_time <= 500) {
|
||
$$.getElementById(cbLoID).innerHTML = '<span class="sk-load-success">' + img_load_time + ' ms</span>'
|
||
$$.getElementById(cbLoID).style.color = '#32b643';
|
||
}
|
||
else if (img_load_time > 500 && img_load_time <= 1000) {
|
||
$$.getElementById(cbLoID).innerHTML = '<span class="sk-load-success">' + img_load_time + ' ms</span>'
|
||
$$.getElementById(cbLoID).style.color = 'var(--warning-color)';
|
||
}
|
||
else {
|
||
$$.getElementById(cbLoID).innerHTML = '<span class="sk-load-success">' + img_load_time + ' ms</span>'
|
||
$$.getElementById(cbLoID).style.color = '#e85600';
|
||
}
|
||
$$.getElementById(cbElID).innerHTML = '<span class="sk-text-success"><%:Access Normal%></span>'
|
||
}
|
||
|
||
img.src = `https://${domain}/favicon.ico?${+(new Date)}`
|
||
},
|
||
checker_router: (domain, cbElID, cbLoID) => {
|
||
let start_time = (+new Date());
|
||
|
||
var xhr = new XMLHttpRequest();
|
||
xhr.open('GET', '/cgi-bin/luci/admin/services/openclash/website_check?domain=' + encodeURIComponent(domain), true);
|
||
xhr.timeout = 10000;
|
||
|
||
xhr.onreadystatechange = function() {
|
||
if (xhr.readyState === 4) {
|
||
let response_time = (new Date()) - start_time;
|
||
|
||
if (xhr.status === 200) {
|
||
try {
|
||
var response = JSON.parse(xhr.responseText);
|
||
if (response.success) {
|
||
if ($$.getElementById(cbLoID).style.display == 'none') {
|
||
$$.getElementById(cbLoID).style.display = '';
|
||
}
|
||
|
||
let load_time = response.response_time || response_time;
|
||
if (load_time <= 500) {
|
||
$$.getElementById(cbLoID).innerHTML = '<span class="sk-load-success">' + load_time + ' ms</span>'
|
||
$$.getElementById(cbLoID).style.color = '#32b643';
|
||
}
|
||
else if (load_time > 500 && load_time <= 1000) {
|
||
$$.getElementById(cbLoID).innerHTML = '<span class="sk-load-success">' + load_time + ' ms</span>'
|
||
$$.getElementById(cbLoID).style.color = 'var(--warning-color)';
|
||
}
|
||
else {
|
||
$$.getElementById(cbLoID).innerHTML = '<span class="sk-load-success">' + load_time + ' ms</span>'
|
||
$$.getElementById(cbLoID).style.color = '#e85600';
|
||
}
|
||
$$.getElementById(cbElID).innerHTML = '<span class="sk-text-success"><%:Access Normal%></span>'
|
||
} else {
|
||
$$.getElementById(cbLoID).style.display = 'none';
|
||
$$.getElementById(cbElID).innerHTML = '<span class="sk-text-error"><%:Access Denied%></span>'
|
||
}
|
||
} catch (e) {
|
||
$$.getElementById(cbLoID).style.display = 'none';
|
||
$$.getElementById(cbElID).innerHTML = '<span class="sk-text-error"><%:Access Denied%></span>'
|
||
}
|
||
} else {
|
||
$$.getElementById(cbLoID).style.display = 'none';
|
||
$$.getElementById(cbElID).innerHTML = '<span class="sk-text-error"><%:Access Denied%></span>'
|
||
}
|
||
}
|
||
};
|
||
|
||
xhr.ontimeout = function() {
|
||
$$.getElementById(cbLoID).style.display = 'none';
|
||
$$.getElementById(cbElID).innerHTML = '<span class="sk-text-error"><%:Access Timed Out%></span>'
|
||
};
|
||
|
||
xhr.onerror = function() {
|
||
$$.getElementById(cbLoID).style.display = 'none';
|
||
$$.getElementById(cbElID).innerHTML = '<span class="sk-text-error"><%:Access Denied%></span>'
|
||
};
|
||
|
||
xhr.send();
|
||
},
|
||
runcheck: () => {
|
||
HTTP.checker('www.baidu.com', 'http-baidu', 'ldtime-baidu');
|
||
HTTP.checker('s1.music.126.net/style', 'http-163', 'ldtime-163');
|
||
HTTP.checker('github.com', 'http-github', 'ldtime-github');
|
||
HTTP.checker('www.youtube.com', 'http-youtube', 'ldtime-youtube');
|
||
}
|
||
};
|
||
|
||
//function getPcolIP(data){
|
||
// let pcisp = data.addr.split(' ');
|
||
// if (localStorage.getItem('privacy_my_ip') != 'true') {
|
||
// $$.getElementById('ip-pcol').innerHTML = data.ip;
|
||
// };
|
||
// $$.getElementById('ip-pcol-geo').innerHTML = `${data.pro} ${data.city} ${data.region} ${pcisp[1]}`;
|
||
// addTitleOnOverflow();
|
||
//};
|
||
|
||
function getIpsbIP(data){
|
||
if (localStorage.getItem('privacy_my_ip') != 'true') {
|
||
$$.getElementById('ip-ipsb').innerHTML = data.ip;
|
||
};
|
||
$$.getElementById('ip-ipsb-geo').innerHTML = `${data.country} ${data.isp}`;
|
||
addTitleOnOverflow();
|
||
};
|
||
|
||
function delete_ip_script()
|
||
{
|
||
var scripts = document.getElementsByTagName('script');
|
||
for (var i = scripts.length; i--; ) {
|
||
if (document.getElementsByTagName("script")[i]['src'] &&
|
||
(document.getElementsByTagName("script")[i]['src'].indexOf('whois.pconline.com.cn') > -1
|
||
|| document.getElementsByTagName("script")[i]['src'].indexOf('api-ipv4.ip.sb') > -1)) {
|
||
scripts[i].parentNode.removeChild(scripts[i]);
|
||
};
|
||
};
|
||
};
|
||
|
||
function myip_Load()
|
||
{
|
||
delete_ip_script();
|
||
var mypage = document.getElementsByTagName('HEAD').item(0);
|
||
var random = parseInt(Math.random() * 100000000);
|
||
//var pcipScript= document.createElement("script");
|
||
//pcipScript.defer = "defer";
|
||
//pcipScript.src=`https://whois.pconline.com.cn/ipJson.jsp?callback=getPcolIP&z=${random}`;
|
||
//mypage.appendChild(pcipScript);
|
||
|
||
var sbipScript= document.createElement("script");
|
||
sbipScript.defer = "defer";
|
||
sbipScript.src=`https://api-ipv4.ip.sb/geoip?callback=getIpsbIP&z=${random}`;
|
||
mypage.appendChild(sbipScript);
|
||
|
||
IP.getUpaiIP();
|
||
IP.getIpipIP();
|
||
IP.getIpifyIP();
|
||
};
|
||
|
||
function show_my_ip() {
|
||
if (localStorage.getItem('privacy_my_ip') == 'true') {
|
||
update_eye_icon(false);
|
||
ip_ipip_ip = $$.getElementById('ip-ipip').innerHTML;
|
||
ip_ipsb_ip = $$.getElementById('ip-ipsb').innerHTML;
|
||
ip_upaiyun_ip = $$.getElementById('ip-upaiyun').innerHTML;
|
||
ip_ipify_ip = $$.getElementById('ip-ipify').innerHTML;
|
||
$$.getElementById('ip-ipip').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-ipsb').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-upaiyun').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-ipify').innerHTML = '***.***.***.***';
|
||
addTitleOnOverflow();
|
||
}
|
||
else {
|
||
if (!refresh_http) {
|
||
refresh_http = setInterval("HTTP.runcheck()", Math.floor(Math.random()*(10-5+1)+5)*1000);
|
||
}
|
||
if (!refresh_ip) {
|
||
if (use_router_mode) {
|
||
refresh_ip = setInterval("get_router_ip_info()", Math.floor(Math.random()*(40-15+1)+15)*1000);
|
||
} else {
|
||
refresh_ip = setInterval("myip_Load()", Math.floor(Math.random()*(40-15+1)+15)*1000);
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
function update_eye_icon(isOpen) {
|
||
var eyeIcon = document.getElementById('eye-icon');
|
||
var eyeOpen = document.getElementById('eye-open');
|
||
var eyeOpenCircle = document.getElementById('eye-open-circle');
|
||
var eyeClosed = document.getElementById('eye-closed');
|
||
var titleElement = eyeIcon.querySelector('title');
|
||
|
||
if (isOpen) {
|
||
eyeOpen.style.display = '';
|
||
eyeOpenCircle.style.display = '';
|
||
eyeClosed.style.display = 'none';
|
||
if (titleElement) titleElement.textContent = '<%:Hide IP%>';
|
||
} else {
|
||
eyeOpen.style.display = 'none';
|
||
eyeOpenCircle.style.display = 'none';
|
||
eyeClosed.style.display = '';
|
||
if (titleElement) titleElement.textContent = '<%:Show IP%>';
|
||
}
|
||
};
|
||
|
||
function privacy_my_ip(svgElement) {
|
||
var isCurrentlyOpen = document.getElementById('eye-open').style.display !== 'none';
|
||
|
||
if (isCurrentlyOpen) {
|
||
delete_ip_script();
|
||
clearInterval(refresh_ip);
|
||
refresh_ip = null;
|
||
localStorage.setItem('privacy_my_ip', 'true');
|
||
update_eye_icon(false);
|
||
|
||
ip_ipip_ip = $$.getElementById('ip-ipip').innerHTML;
|
||
ip_ipsb_ip = $$.getElementById('ip-ipsb').innerHTML;
|
||
ip_upaiyun_ip = $$.getElementById('ip-upaiyun').innerHTML;
|
||
ip_ipify_ip = $$.getElementById('ip-ipify').innerHTML;
|
||
$$.getElementById('ip-ipip').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-ipsb').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-upaiyun').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-ipify').innerHTML = '***.***.***.***';
|
||
addTitleOnOverflow();
|
||
} else {
|
||
update_eye_icon(true);
|
||
localStorage.removeItem('privacy_my_ip');
|
||
|
||
if (ip_ipip_ip && ip_ipsb_ip && ip_upaiyun_ip && ip_ipify_ip) {
|
||
$$.getElementById('ip-ipip').innerHTML = ip_ipip_ip;
|
||
$$.getElementById('ip-ipsb').innerHTML = ip_ipsb_ip;
|
||
$$.getElementById('ip-upaiyun').innerHTML = ip_upaiyun_ip;
|
||
$$.getElementById('ip-ipify').innerHTML = ip_ipify_ip;
|
||
} else {
|
||
if (use_router_mode) {
|
||
get_router_ip_info();
|
||
refresh_ip = setInterval("get_router_ip_info()", Math.floor(Math.random()*(40-15+1)+15)*1000);
|
||
} else {
|
||
myip_Load();
|
||
refresh_ip = setInterval("myip_Load()", Math.floor(Math.random()*(40-15+1)+15)*1000);
|
||
}
|
||
}
|
||
if (use_router_mode) {
|
||
refresh_ip = setInterval("get_router_ip_info()", Math.floor(Math.random()*(40-15+1)+15)*1000);
|
||
} else {
|
||
refresh_ip = setInterval("myip_Load()", Math.floor(Math.random()*(40-15+1)+15)*1000);
|
||
}
|
||
addTitleOnOverflow();
|
||
};
|
||
};
|
||
|
||
var use_router_mode = true;
|
||
|
||
function toggle_mode_by_icon(svgElement) {
|
||
var rect = svgElement.querySelector('rect[fill="#2F88FF"]');
|
||
if (rect && rect.getAttribute('fill') === '#2F88FF') {
|
||
use_router_mode = false;
|
||
localStorage.setItem('myip_check_mode', 'false');
|
||
update_mode_icon();
|
||
clearAllIntervals();
|
||
init_browser_mode();
|
||
} else {
|
||
use_router_mode = true;
|
||
localStorage.setItem('myip_check_mode', 'true');
|
||
update_mode_icon();
|
||
clearAllIntervals();
|
||
init_router_mode();
|
||
}
|
||
}
|
||
|
||
function update_mode_icon() {
|
||
var modeIcon = document.getElementById('mode-icon');
|
||
var rect = modeIcon.querySelector('rect[x="4"]');
|
||
var paths = modeIcon.querySelectorAll('path');
|
||
var smallRect = modeIcon.querySelector('rect[x="30"]');
|
||
var titleElement = modeIcon.querySelector('title');
|
||
|
||
if (use_router_mode) {
|
||
rect.setAttribute('fill', '#2F88FF');
|
||
rect.setAttribute('stroke', '#333');
|
||
paths[0].setAttribute('stroke', '#FFF');
|
||
paths[1].setAttribute('stroke', '#333');
|
||
paths[2].setAttribute('stroke', '#333');
|
||
smallRect.setAttribute('fill', '#FFF');
|
||
if (titleElement) titleElement.textContent = '<%:Router Mode%>';
|
||
} else {
|
||
rect.setAttribute('fill', '#666');
|
||
rect.setAttribute('stroke', '#999');
|
||
paths[0].setAttribute('stroke', '#CCC');
|
||
paths[1].setAttribute('stroke', '#999');
|
||
paths[2].setAttribute('stroke', '#999');
|
||
smallRect.setAttribute('fill', '#CCC');
|
||
if (titleElement) titleElement.textContent = '<%:Browser Mode%>';
|
||
}
|
||
}
|
||
|
||
function init_router_mode() {
|
||
if (refresh_ip) {
|
||
clearInterval(refresh_ip);
|
||
refresh_ip = null;
|
||
}
|
||
delete_ip_script();
|
||
|
||
if (localStorage.getItem('privacy_my_ip') === 'true') {
|
||
$$.getElementById('ip-ipip').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-ipsb').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-upaiyun').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-ipify').innerHTML = '***.***.***.***';
|
||
}
|
||
|
||
get_router_ip_info();
|
||
HTTP.runcheck();
|
||
|
||
refresh_http = setInterval("HTTP.runcheck()", Math.floor(Math.random()*(10-5+1)+5)*1000);
|
||
if (localStorage.getItem('privacy_my_ip') !== 'true') {
|
||
refresh_ip = setInterval("get_router_ip_info()", Math.floor(Math.random()*(40-15+1)+15)*1000);
|
||
}
|
||
}
|
||
|
||
function init_browser_mode() {
|
||
if (localStorage.getItem('privacy_my_ip') === 'true') {
|
||
$$.getElementById('ip-ipip').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-ipsb').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-upaiyun').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-ipify').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-ipip-geo').innerHTML = '';
|
||
$$.getElementById('ip-ipsb-geo').innerHTML = '';
|
||
$$.getElementById('ip-upaiyun-geo').innerHTML = '';
|
||
$$.getElementById('ip-ipify-geo').innerHTML = '';
|
||
} else {
|
||
reset_display();
|
||
}
|
||
|
||
myip_Load();
|
||
HTTP.runcheck();
|
||
|
||
refresh_http = setInterval("HTTP.runcheck()", Math.floor(Math.random()*(10-5+1)+5)*1000);
|
||
if (localStorage.getItem('privacy_my_ip') !== 'true') {
|
||
refresh_ip = setInterval("myip_Load()", Math.floor(Math.random()*(40-15+1)+15)*1000);
|
||
}
|
||
}
|
||
|
||
function get_router_ip_info() {
|
||
var xhr = new XMLHttpRequest();
|
||
xhr.open('GET', '/cgi-bin/luci/admin/services/openclash/myip_check', true);
|
||
xhr.timeout = 15000;
|
||
|
||
xhr.onreadystatechange = function() {
|
||
if (xhr.readyState === 4) {
|
||
if (xhr.status === 200) {
|
||
try {
|
||
var response = JSON.parse(xhr.responseText);
|
||
if (response && (response.upaiyun || response.pcol || response.ipsb || response.ipify)) {
|
||
update_ip_display(response);
|
||
} else {
|
||
show_querying_state();
|
||
}
|
||
} catch (e) {
|
||
show_querying_state();
|
||
}
|
||
} else {
|
||
show_querying_state();
|
||
}
|
||
}
|
||
};
|
||
|
||
xhr.ontimeout = function() {
|
||
show_querying_state();
|
||
};
|
||
|
||
xhr.onerror = function() {
|
||
show_querying_state();
|
||
};
|
||
|
||
xhr.send();
|
||
}
|
||
|
||
function show_querying_state() {
|
||
if (localStorage.getItem('privacy_my_ip') === 'true') {
|
||
$$.getElementById('ip-ipip').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-ipsb').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-upaiyun').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-ipify').innerHTML = '***.***.***.***';
|
||
} else {
|
||
$$.getElementById('ip-ipip').innerHTML = '<%:Querying...%>';
|
||
$$.getElementById('ip-ipsb').innerHTML = '<%:Querying...%>';
|
||
$$.getElementById('ip-upaiyun').innerHTML = '<%:Querying...%>';
|
||
$$.getElementById('ip-ipify').innerHTML = '<%:Querying...%>';
|
||
}
|
||
$$.getElementById('ip-ipip-geo').innerHTML = '';
|
||
$$.getElementById('ip-ipsb-geo').innerHTML = '';
|
||
$$.getElementById('ip-upaiyun-geo').innerHTML = '';
|
||
$$.getElementById('ip-ipify-geo').innerHTML = '';
|
||
}
|
||
|
||
function update_ip_display(data) {
|
||
if (localStorage.getItem('privacy_my_ip') === 'true') {
|
||
$$.getElementById('ip-ipip').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-ipsb').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-upaiyun').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-ipify').innerHTML = '***.***.***.***';
|
||
} else {
|
||
if (data.upaiyun && data.upaiyun.ip) {
|
||
$$.getElementById('ip-upaiyun').innerHTML = data.upaiyun.ip;
|
||
} else {
|
||
$$.getElementById('ip-upaiyun').innerHTML = '<%:Querying...%>';
|
||
}
|
||
if (data.ipip && data.ipip.ip) {
|
||
$$.getElementById('ip-ipip').innerHTML = data.ipip.ip;
|
||
} else {
|
||
$$.getElementById('ip-ipip').innerHTML = '<%:Querying...%>';
|
||
}
|
||
if (data.ipsb && data.ipsb.ip) {
|
||
$$.getElementById('ip-ipsb').innerHTML = data.ipsb.ip;
|
||
} else {
|
||
$$.getElementById('ip-ipsb').innerHTML = '<%:Querying...%>';
|
||
}
|
||
if (data.ipify && data.ipify.ip) {
|
||
$$.getElementById('ip-ipify').innerHTML = data.ipify.ip;
|
||
} else {
|
||
$$.getElementById('ip-ipify').innerHTML = '<%:Querying...%>';
|
||
}
|
||
}
|
||
|
||
if (data.upaiyun && data.upaiyun.geo) {
|
||
$$.getElementById('ip-upaiyun-geo').innerHTML = data.upaiyun.geo;
|
||
} else {
|
||
$$.getElementById('ip-upaiyun-geo').innerHTML = '';
|
||
}
|
||
if (data.ipip && data.ipip.geo) {
|
||
$$.getElementById('ip-ipip-geo').innerHTML = data.ipip.geo;
|
||
} else {
|
||
$$.getElementById('ip-ipip-geo').innerHTML = '';
|
||
}
|
||
if (data.ipsb && data.ipsb.geo) {
|
||
$$.getElementById('ip-ipsb-geo').innerHTML = data.ipsb.geo;
|
||
} else {
|
||
$$.getElementById('ip-ipsb-geo').innerHTML = '';
|
||
}
|
||
if (data.ipify && data.ipify.geo) {
|
||
$$.getElementById('ip-ipify-geo').innerHTML = data.ipify.geo;
|
||
} else {
|
||
$$.getElementById('ip-ipify-geo').innerHTML = '';
|
||
}
|
||
|
||
addTitleOnOverflow();
|
||
}
|
||
|
||
function reset_display() {
|
||
$$.getElementById('ip-ipip').innerHTML = '<%:Querying...%>';
|
||
$$.getElementById('ip-ipify').innerHTML = '<%:Querying...%>';
|
||
$$.getElementById('ip-upaiyun').innerHTML = '<%:Querying...%>';
|
||
$$.getElementById('ip-ipsb').innerHTML = '<%:Querying...%>';
|
||
|
||
$$.getElementById('ip-ipip-geo').innerHTML = '';
|
||
$$.getElementById('ip-ipify-geo').innerHTML = '';
|
||
$$.getElementById('ip-upaiyun-geo').innerHTML = '';
|
||
$$.getElementById('ip-ipsb-geo').innerHTML = '';
|
||
}
|
||
|
||
function clearAllIntervals() {
|
||
if (refresh_http) {
|
||
clearInterval(refresh_http);
|
||
refresh_http = null;
|
||
}
|
||
if (refresh_ip) {
|
||
clearInterval(refresh_ip);
|
||
refresh_ip = null;
|
||
}
|
||
}
|
||
|
||
function refresh_myip(svgElement) {
|
||
svgElement.style.transform = 'rotate(360deg)';
|
||
setTimeout(function() {
|
||
svgElement.style.transform = '';
|
||
}, 500);
|
||
|
||
clearAllIntervals();
|
||
|
||
if (use_router_mode) {
|
||
get_router_ip_info();
|
||
HTTP.runcheck();
|
||
refresh_http = setInterval("HTTP.runcheck()", Math.floor(Math.random()*(10-5+1)+5)*1000);
|
||
if (localStorage.getItem('privacy_my_ip') !== 'true') {
|
||
refresh_ip = setInterval("get_router_ip_info()", Math.floor(Math.random()*(40-15+1)+15)*1000);
|
||
}
|
||
} else {
|
||
if (localStorage.getItem('privacy_my_ip') === 'true') {
|
||
$$.getElementById('ip-ipip-geo').innerHTML = '';
|
||
$$.getElementById('ip-ipsb-geo').innerHTML = '';
|
||
$$.getElementById('ip-upaiyun-geo').innerHTML = '';
|
||
$$.getElementById('ip-ipify-geo').innerHTML = '';
|
||
$$.getElementById('ip-ipip').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-ipsb').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-upaiyun').innerHTML = '***.***.***.***';
|
||
$$.getElementById('ip-ipify').innerHTML = '***.***.***.***';
|
||
}
|
||
|
||
myip_Load();
|
||
HTTP.runcheck();
|
||
|
||
refresh_http = setInterval("HTTP.runcheck()", Math.floor(Math.random()*(10-5+1)+5)*1000);
|
||
if (localStorage.getItem('privacy_my_ip') !== 'true') {
|
||
refresh_ip = setInterval("myip_Load()", Math.floor(Math.random()*(40-15+1)+15)*1000);
|
||
}
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
function init_page() {
|
||
var saved_mode = localStorage.getItem('myip_check_mode');
|
||
if (saved_mode === 'true' || saved_mode === null) {
|
||
use_router_mode = true;
|
||
update_mode_icon();
|
||
init_router_mode();
|
||
} else {
|
||
use_router_mode = false;
|
||
update_mode_icon();
|
||
init_browser_mode();
|
||
}
|
||
|
||
if (localStorage.getItem('privacy_my_ip') === 'true') {
|
||
update_eye_icon(false);
|
||
} else {
|
||
update_eye_icon(true);
|
||
}
|
||
}
|
||
|
||
window.addEventListener('load', function() {
|
||
init_page();
|
||
});
|
||
|
||
window.addEventListener('beforeunload', function() {
|
||
clearAllIntervals();
|
||
});
|
||
</script>
|
||
</html> |