File size: 2,625 Bytes
fdbbc8e
ea617ca
 
fdbbc8e
ea617ca
fdbbc8e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ea617ca
fdbbc8e
 
 
 
 
 
 
 
 
 
ea617ca
fdbbc8e
 
 
 
 
d769de8
 
 
fdbbc8e
 
b84a5c7
 
 
fdbbc8e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ea617ca
fd75d7e
fdbbc8e
 
05c66dd
 
fdbbc8e
 
ea617ca
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import express from "express";

const app = express();
const port = 7860;

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 (i, i0, i1, i2) => {
    const results = [];
    const testNext = async () => {
        i2++;
        if (i2 > 255) {
            return false;
        //    i2 = 1;
        //    i1++;
        }
        if (i1 > 255) {
          return false;
       //     i1 = 1;
       //     i0++;
        }
        if (i0 > 255) {
            i0 = 1;
            i++;
        }
        if (i > 255) {
            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.get("/", async (req, res) => {
    const results = await testAll(104, 28, 1, 1);
    res.json(results);
});

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