Spaces:
jiome
/
Sleeping

coip / indexall.js
jiome's picture
Rename index.js to indexall.js
b284aa2 verified
import express from "express";
import bodyParser from "body-parser";
const app = express();
const port = 7860;
app.use(bodyParser.json());
const isipok = async (ip) => {
const ret = await fetch("https://copilot.microsoft.com/", {
headers: {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0",
"X-forwarded-for": ip
}
});
if (!ret.ok) {
return { ip, status: false };
}
const txt = await ret.text();
if (txt.indexOf("studiostaticassetsprod.azureedge.net/bundle-cmc/assets/bundle.js") >= 0) {
return { ip, status: false, reason: "nononononon" };
}
if (txt.indexOf('<div class="title" role="heading" aria-level="1">登录以体验 Microsoft Copilot</div>') >= 0) {
return { ip, status: false, reason: "ddddddddddd" };
}
const rt = /Region:"(.*?)"/.exec(txt);
if (!rt) {
return { ip, status: false };
}
const rg = rt[1];
if (!rg) {
return { ip, status: false };
}
return { ip, status: true, region: rg };
}
const testAll = async (startIP, endIP) => {
const results = [];
const [startI, startI0, startI1, startI2] = startIP.split('.').map(Number);
const [endI, endI0, endI1, endI2] = endIP.split('.').map(Number);
let i = startI, i0 = startI0, i1 = startI1, i2 = startI2;
const testNext = async () => {
i2++;
if (i2 > 255) {
i2 = 0;
i1++;
}
if (i1 > 255) {
i1 = 0;
i0++;
}
if (i0 > 255) {
i0 = 0;
i++;
}
if (i > endI || (i === endI && i0 > endI0) || (i === endI && i0 === endI0 && i1 > endI1) || (i === endI && i0 === endI0 && i1 === endI1 && i2 > endI2)) {
return false;
}
const XForwardedForIP = `${i}.${i0}.${i1}.${i2}`;
try {
const result = await isipok(XForwardedForIP);
results.push(result);
} catch (error) {
console.error(error);
}
return true;
}
let count = 0;
let stop = false;
while (true) {
while (count >= 16) {
await new Promise((t) => { setTimeout(t, 100) });
}
count++;
testNext().then((rt) => {
count--;
if (!rt) {
stop = true;
}
});
if (stop) {
break;
}
}
return results;
}
app.post("/test", async (req, res) => {
const { startIP, endIP } = req.body;
const results = await testAll(startIP, endIP);
res.json(results);
});
app.get("/", (req, res) => {
res.send(`
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>IP Range Checker</title>
</head>
<body>
<h1>IP Range Checker</h1>
<form id="ipForm">
<label for="startIP">开始地址:</label>
<input type="text" id="startIP" name="startIP" required>
<br>
<label for="endIP">结束地址:</label>
<input type="text" id="endIP" name="endIP" required>
<br>
<button type="submit">检查</button>
</form>
<h2>结果:</h2>
<textarea id="results" rows="10" cols="50"></textarea>
<br>
<button id="copyButton">复制</button>
<script>
document.getElementById('ipForm').addEventListener('submit', async (event) => {
event.preventDefault();
const startIP = document.getElementById('startIP').value;
const endIP = document.getElementById('endIP').value;
const response = await fetch('/test', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ startIP, endIP })
});
const results = await response.json();
document.getElementById('results').value = JSON.stringify(results, null, 2);
});
document.getElementById('copyButton').addEventListener('click', () => {
const results = document.getElementById('results');
results.select();
document.execCommand('copy');
});
</script>
</body>
</html>
`);
});
app.listen(port, () => {
console.log(`Server is running at http://localhost:${port}`);
});