获取苹果设备的UDID

160 阅读1分钟

细节原理:juejin.cn/post/684490…

I dont b b,show you my 能跑的code。 github.com/cococe/get-…

代码能跑,不要在意细节哈。

const koa = require('koa');
const Router = require('@koa/router');
const convert = require('xml-js');
const fs = require('fs');

const app = new koa();

const router = new Router();


router.post('/tools/udid', async (ctx, next) => {

    function aa() {
        return new Promise((resolve, reject) => {
            // 获取原始请求体
            let rawBody = '';
            ctx.req.on('data', chunk => {
              rawBody += chunk;
            });
          
            ctx.req.on('end', () => {
                ctx.rawBody = rawBody;
                const obj = convert.xml2js(ctx.rawBody.match(/<dict>[\s\S]*<\/dict>/)[0], {compact: true});
                const a = obj.dict.key.findIndex(item => item._text === 'UDID')
                ctx.status = 301;
                ctx.redirect(`/show?udid=${obj.dict.string[a]._text}`);
                ctx.body = 'Redirecting to shopping cart';
                resolve(true)
            });
        })
    }

    await aa();
    next();

})

router.get('/show', (ctx, next) => {
    ctx.status = 200;
    ctx.set('content-type', 'text/html');
    ctx.body=`<html>
                <meta charset="utf-8">
                <body>
                    <div></div>
                </body>
                <script>
                    const udid = new URLSearchParams(location.search).get('udid');
                    document.querySelector('div').innerText = '您的udid为:' + udid;
                </script>
            </html>`;
    next();
})

router.get('/config', (ctx, next) => {
    const file = fs.readFileSync('./udid.mobileconfig') 
    ctx.set('content-type', 'application/x-apple-aspen-config');
    ctx.set('Content-disposition', `attachment;filename=udid.mobileconfig`);
    ctx.body = file;
    next();
})


app.use(router.routes());

app.listen(9000);

用户访问127.0.0.1:9000/config 下载配置文件,输入密码完成后,会自动重定向到127.0.0.1:9000/show,能查看到用户的udid