JS 怎样获取客户端唯一识别信息 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
8023
V2EX    Javascript

JS 怎样获取客户端唯一识别信息

  •  
  •   8023 2016-12-19 16:16:58 +08:00 15920 次点击
    这是一个创建于 3300 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在做一个网页, 环境 LNAMP, PHP 只能获取到客户端 IP 地址, 现在我想获取到有唯一性的客户端识别码, 比如 MAC 之类的. 思路是用 JS 获取然后提交到服务器上, 但网上搜了搜除了用 IE + ActiveX 没啥其他方法了. 请问 V2 的大佬: 有没有什么方法可以获取到客户端 MAC? 如果不能获取到, 有没有类似的信息可以获取到呢?

    22 条回复    2018-03-16 15:42:16 +08:00
    yanyu0517
        1
    yanyu0517  
       2016-12-19 16:19:57 +08:00
    canvas
    knightdf
        2
    knightdf  
       2016-12-19 16:23:27 +08:00   1
    learnshare
        3
    learnshare  
       2016-12-19 16:34:52 +08:00   1
    Don't do that
    INW017bzMfgkkYGn
        4
    INW017bzMfgkkYGn  
       2016-12-19 16:45:26 +08:00   1
    你姐姐的隐形眼镜还好吗
    Rice
        5
    Rice  
       2016-12-19 16:54:48 +08:00 via iPhone
    没有办法,要不试试画布指纹加 cookie 加 etag 加浏览器信息采集组合拳?
    jugelizi
        6
    jugelizi  
       2016-12-19 16:56:11 +08:00
    这种行为....
    R18
        7
    R18  
       2016-12-19 16:58:34 +08:00
    浏览器指纹么? Fingerprintjs2 但如果你真的是想要 MAC 地址 我想也许是很难的吧??
    leega0
        8
    leega0  
       2016-12-19 17:31:31 +08:00 via iPhone
    canvas ,学到了
    woyaojizhu8
        9
    woyaojizhu8  
       2016-12-19 17:58:55 +08:00
    利用缓存跟踪,最难避免
    gongbaodd
        10
    gongbaodd  
       2016-12-19 18:10:36 +08:00
    canvas ,学习了+1
    yushiro
        11
    yushiro  
       2016-12-19 18:14:51 +08:00 via iPhone
    canvas 那个不行,重复率还是很高的,我试了几个 iphone 手机都一样的指纹
    UnisandK
        12
    UnisandK  
       2016-12-19 18:29:36 +08:00
    UnisandK
        13
    UnisandK  
       2016-12-19 18:33:53 +08:00   2
    1. 浏览器在使用过程中,所使用的缓存机制会暴露。
    你最近访问过支付宝,那么在缓存期间,访问支付宝的响应速度会很快。这些对于不同网站的访问速度,可以得出类似用户访问历史的数据,而每个人这份数据都是不同的,你爱淘宝我爱天猫就是如此。

    这个是很有意思的一个思路,比如下边这个

    http://www.solidot.org/story?sid=45943
    q397064399
        14
    q397064399  
       2016-12-19 18:52:52 +08:00
    这个几乎无解,浏览器 设置成 隐私模式 你很难 跟踪某个客户,
    用 IP 来判断 很容易误伤,尤其是现在 手机 这么多设备都是 在公网 IP 后面
    另外广域网 无法跟踪对面的 mac

    当然针对普通用户 cookies 就差不多够了
    miyuki
        15
    miyuki  
       2016-12-19 19:00:06 +08:00 via Android
    MAC 地址基本无解

    可以有类似的指纹比如 Canvas Fingerprint
    t6attack
        16
    t6attack  
       2016-12-19 20:29:39 +08:00
    和 php 、服务环境没关系,任何服务端环境、任何语言,都只能获取数据报文里有的东西。
    MAC 就别想了。连运营商都拿不到 NAT 里面设备的 MAC 。

    另外,除了 IP 地址,其他信息都可以 0 成本伪造。如果目的是为了限制重复注册之类的,这没用。
    zxy
        17
    zxy  
       2016-12-19 21:54:20 +08:00 via Android
    @default 看了你的回复,忍不住去看了那贴,也想知道那个隐形眼镜拿掉了么…
    zsx
        18
    zsx  
       2016-12-19 22:10:33 +08:00
    Canvas FingerPrint 没什么意义,我去年测试的结果是“由浏览器在不同环境下生成的 Canvas 图像不同而得以追踪用户,所以是跟着浏览器走。无法被清除,但当浏览器更新,或是安装什么奇怪的软件后可能便会被视为一个新用户。在 IE10+生成的信息完全一样,在同配置的 iPhone 上生成的信息也完全一样。其它浏览器下重复率非常高。”

    当时最有意义的还是 HSTS SuperCookie ,不过 Firefox 34+也不能用了,而且这玩意慢的要命。总之,你只能综合判断,但没法获知身份。
    em70
        19
    em70  
       2016-12-19 22:12:28 +08:00 via Android
    让用户注册吧
    pigsinthesky
        20
    pigsinthesky  
       2016-12-19 22:15:22 +08:00
    cookie+注册
    mingyun
        21
    mingyun  
       2016-12-19 22:52:38 +08:00
    js 获取不靠谱吧
    qsnow6
        22
    qsnow6  
       2018-03-16 15:42:16 +08:00
    如果是为了防止重复注册

    * 如果你依赖 Cookies 或缓存,清理一下就没了
    * 如果是依赖 IP,挂下代理就伪装了

    -----------

    从 HTTP 协议的角度来看,底层协议本身就是无状态的,无法做到绝对的唯一。如果可以接受一定的重复率,可以看看楼上提到的 Canvas
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2596 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 13:58 PVG 21:58 LAX 05:58 JFK 08:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86