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('
登录以体验 Microsoft Copilot
') >= 0) { return { ip, status: false, reason: "ddddddddddd" }; } // if (txt.indexOf('copilot.microsoft.com:9980') >= 0) { // return { ip, status: false, reason: "9980" }; // } const rt = /Region:"(.*?)"/.exec(txt); if (!rt) { return { ip, status: false }; } const rg = rt[1]; if (!rg) { return { ip, status: false }; } console.log(`[${ip}, ${rg}]`); return { ip, status: true, region: rg }; } const testAll = async (startIP, endIP, res) => { 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); if (result.status) { res.write(JSON.stringify([result.ip, result.region]) + ",\n"); } } catch (error) { console.error(error); } return true; } let count = 0; let stop = false; res.write("[\n"); // Start of the array while (true) { while (count >= 16) { await new Promise((t) => { setTimeout(t, 100) }); } count++; testNext().then((rt) => { count--; if (!rt) { stop = true; } }); if (stop) { break; } } res.write("];\n"); // End of the array res.end(); } app.post("/test", async (req, res) => { const { startIP, endIP } = req.body; res.setHeader('Content-Type', 'text/plain'); await testAll(startIP, endIP, res); }); app.get("/", (req, res) => { res.send(` IP Range Checker

IP Range Checker



结果:


`); }); app.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); });