zoukankan      html  css  js  c++  java
  • 微信浏览器免授权获取用户ID

    微信浏览器中免授权获取用户ID,

    在微信开发中,用户ID是通过用户授权后可以获取到用户的openid或unionid,

    在没有授权时,也可以生成一个用户ID,

    接下来介绍使用Fingerprintjs2生成用户ID,此方法只适合同一设备同一浏览器使用,

    注:wifi和4g环境获取到的ID不一致,去掉userAgent即可,

    <!doctype html>
    <html>
    <head>
        <title>Fingerprintjs2 test</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <style>
            body {
                font-family: sans-serif;
                max-width: 48em;
                margin: auto;
                padding: 0 5%;
                background: #222;
                color: #fff;
            }
    
            h1 {
                margin: 2em 0 0;
            }
    
            p {
                font-size: 1.2em
            }
    
            button {
                border: none;
                color: #fff;
                font-size: 1.2em;
                background: #27e;
                padding: 0.5em 0.75em 0.6em;
                border-radius: 3px;
                box-shadow: 0 3px 0 #05c;
                outline: none;
            }
    
            button:active {
                transform: translateY(3px);
                box-shadow: none;
            }
    
            strong {
                display: block;
                letter-spacing: 1px;
                word-wrap: break-word;
            }
    
            @media (min- 32em) {
                h1 {
                    font-size: 4em;
                }
    
                strong {
                    font-size: 1.5em;
                }
            }
        </style>
    </head>
    <body>
    <div id="container"></div>
    
    <h1>Fingerprintjs2</h1>
    <a href="https://github.com/Valve/fingerprintjs2"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/365986a132ccd6a44c23a9169022c0b5c890c387/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f7265645f6161303030302e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"></a>
    
    <button type="button" id="btn">Get my fingerprint</button>
    <p>Your browser fingerprint(sha1): <strong id="fp"></strong></p>
    <p>Your browser fingerprint(md5): <strong id="fp2"></strong></p>
    <p>Time took to calculate the fingerprint: <var id="time"></var> ms</p>
    <p><strong>Detailed information: </strong></p>
    <pre id="details"></pre>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/fingerprintjs2/2.1.0/fingerprint2.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jsSHA/2.3.1/sha1.js" integrity="sha256-jzw2Wr5YCoGy7p3KfbURQK0NHirbDadS/ihnburOhlY=" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/blueimp-md5/2.10.0/js/md5.min.js" integrity="sha256-J9IhvkIJb0diRVJOyu+Ndtg41RibFkF8eaA60jdjtB8=" crossorigin="anonymous"></script>
    <script>
        var d1 = new Date()
        console.time('time.Fingerprint2.get');
        Fingerprint2.get((components) => {
                var d2 = new Date()
                time = d2 - d1
    
                console.log(components)
                console.timeEnd('time.Fingerprint2.get');
    
                // components.splice(components.findIndex(i => i.key === 'deviceMemory'), 1) // remove device_memory have a difference by ip
                components.splice(components.findIndex(i => i.key === 'userAgent'), 1) // remove userAgent
                // components.splice(components.findIndex(i => i.key === 'platform'), 1) // remove platform
    
                console.time('time.sha1');
                var shaObj = new jsSHA("SHA-1", "TEXT");
                shaObj.update(JSON.stringify(components));
                var murmur = shaObj.getHash("HEX");
                console.timeEnd('time.sha1');
    
                console.time('time.md5');
                var murmur2 = md5(JSON.stringify(components));
                console.timeEnd('time.md5');
    
                document.querySelector("#fp").textContent = murmur
                document.querySelector("#fp2").textContent = murmur2
                document.querySelector("#time").textContent = time
    
                var details = ""
    
                console.log("fingerprint hash", murmur)
                for (var index in components) {
                    var obj = components[index]
                    var line = obj.key + " = " + String(obj.value).substr(0, 100)
                    console.log(line)
                    details += line + "
    "
                }
                document.querySelector("#details").textContent = details
            }
        )
    </script>
    </body>
    </html>

     原文链接:https://www.cnblogs.com/stumpx/p/11093041.html

  • 相关阅读:
    基于UDP的聊天室一例
    用原始套接字编程实现linux中的 ping 命令
    UNIX域流式套接字一例
    基于TCP的多进程echo服务器
    网络数据包检测抓包一例
    Java中static、final用法小结
    TCP/IP 组播的发送和接收
    Java数据库连接字符串
    对java中的访问限定符的理解1
    UNIX域用户数据报套接字一例
  • 原文地址:https://www.cnblogs.com/stumpx/p/11093041.html
Copyright © 2011-2022 走看看