V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
benter
V2EX  ›  iOS

想问下试客小兵获取微信用户信息是如何实现的?

  •  
  •   benter · 2015-03-17 11:15:41 +08:00 · 14568 次点击
    这是一个创建于 3320 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有人关注过应用试客这个微信公众号吗?他有个应用叫试客小兵,他获取我微信信息的方式很奇怪,流程是如下:

    ’关注他们的公众号’ - ‘获取APP(试客小兵)下载地址‘ - ’下载‘ - ‘运行APP’ 一运行这个app,app就自动获取了我的微信信息(昵称,头像,openid)

    这个应用是怎么获取我的信息的?

    目前知道微信公众号可以获取我的微信资料,但APP是怎么知道我当前登陆的哪个微信用户,并获取相应用户的信息的?

    第 1 条附言  ·  2015-03-17 14:11:16 +08:00
    应用是iOS的,没有上架AppStore,也没有登陆授权的步骤,所以比较迷惑是怎么实现的。PS:真的不是广告,只是最近在做一个有关通信的APP,需要实现这样的一个效果。
    30 条回复    2016-03-07 22:21:14 +08:00
    kacong
        1
    kacong  
       2015-03-17 11:52:54 +08:00
    url referral 里面难道有相关的信息的蛛丝被他们解读了?
    wdd2007
        2
    wdd2007  
       2015-03-17 11:59:19 +08:00
    1、微信公众号可以获取你的微信资料;

    2、网页和 App 是可以建立通信的;

    3、所以是网页把你的信息传给了 App。
    frankzeng
        3
    frankzeng  
       2015-03-17 12:00:52 +08:00
    是网页传过去的吧
    abelyao
        4
    abelyao  
       2015-03-17 12:04:51 +08:00
    我就好奇楼主用的是 iOS 吗?APP 是在 App Store 下载的吗?
    ETiV
        5
    ETiV  
       2015-03-17 12:11:49 +08:00 via iPhone
    如果是网页部分实现的,LZ可以试试做一次中间人,看看各种http请求。
    b821025551b
        6
    b821025551b  
       2015-03-17 12:32:46 +08:00
    广告,各位block吧
    qiayue
        7
    qiayue  
       2015-03-17 12:39:51 +08:00
    我的想法是,你打开下载页面的时候,网页获取到了你的 iOS 设备的某个唯一码,并且与你的微信对应那个公众号的 opneid 相关联。
    安装好应用后,应用也去获取你的这个唯一码,就能够跟你的微信绑定了
    simman
        8
    simman  
       2015-03-17 12:42:37 +08:00
    1、下载完应用以后是否需要再次使用微信登陆?
    2、请问是IOS还是Android应用?

    =======
    1、如果下载完应用以后还需要再次使用微信登陆,那么当然可以通过SDK拿到相关的信息。
    2、下载应用的时候通过记录Session,或者其他的表示记录此台设备登陆的微信信息。然后打开应用就可以在服务器端拿到信息了。
    benter
        9
    benter  
    OP
       2015-03-17 14:02:07 +08:00
    @b821025551b 不是广告。
    benter
        10
    benter  
    OP
       2015-03-17 14:03:11 +08:00
    @abelyao 他们应用是通过证书分发,估计使用了私有函数,不能在苹果商城下载
    benter
        11
    benter  
    OP
       2015-03-17 14:03:40 +08:00
    @simman 下载应用之后,不需要再登录微信了。直接运行那个应用就可以获取到我的微信信息了。
    benter
        12
    benter  
    OP
       2015-03-17 14:06:15 +08:00
    @qiayue 微信JS SDK没有提供相应获取设备的API,另外据我所知,网页通过User Agent 获取到的设备信息不包含设备唯一码,网页貌似也获取不到什么设备唯一码。
    benter
        13
    benter  
    OP
       2015-03-17 14:07:20 +08:00
    @wdd2007 这个目前没考虑过,请问微信里网页怎么和我的应用通信,还没想到怎么能通信。
    touzi
        14
    touzi  
       2015-03-17 14:14:01 +08:00 via iPhone
    关注的时候就获取了头像用户名,然后你跳转App Store时有小尾巴标记就可以了
    abelyao
        15
    abelyao  
       2015-03-17 14:15:20 +08:00 via iPhone
    @benter 网页获取你的 IP 地址以及 UserAgent 等识别信息,然后 APP 中也获取这些,很大程度上就可以匹配到一起了
    abelyao
        16
    abelyao  
       2015-03-17 14:17:59 +08:00 via iPhone
    @benter 使用私有函数的话玩法就多咯,甚至是根据你的 openid 动态生成一个 app 给你都可以
    chairuosen
        17
    chairuosen  
       2015-03-17 14:21:46 +08:00
    那个app可能不同url会埋不同初始信息?埋了你的fake_id,再去自己库里取fake_id对应信息就行
    benter
        18
    benter  
    OP
       2015-03-17 17:04:09 +08:00
    @abelyao 你说的第一种很大概率可以匹配,是OK的,其实还是一个概率问题,比如同一局域网3台5s,系统也相同,就出现混乱了,因为网页获取的信息都是一样的,第二种,就是不同的用户打不同的ipa,就能完全匹配了,另外还想到一种,网页写cookies,在微信app的cookies里,然后他的应用读cookies,这个要绕过沙盒,还没找到方法获取到其他应用的cookies。
    b821025551b
        19
    b821025551b  
       2015-03-17 17:52:34 +08:00
    @benter 好吧,我错了。刚刚认真看了一下,是2楼所说的那种方法。你看这个微信号跳转的地址:
    http://www.weadds.com/weixin/test/regist.html?openid=ov4w-s81j8aowzYTBO42J5cmkJa8@259
    看见了吧,那个openid就是你关注微信号时获取的,以及你的头像、昵称等信息
    b821025551b
        20
    b821025551b  
       2015-03-17 17:55:01 +08:00
    @benter 如果不是根据他正常的流程走的话,也就不跳我所说的那个地址,会登录失败的
    alex321
        21
    alex321  
       2015-03-17 18:09:16 +08:00
    关注的时候可以通过后台拉取用户资料,前提是服务号,并通过高级认证。
    这个获取用户资料的操作我两个公众号平台上几十个供公众号都在用了,而非采用的网页跳转授权的形式。
    benter
        22
    benter  
    OP
       2015-03-17 18:58:11 +08:00
    @b821025551b 你关注的应该不是我说的那一个。你关注的应该是安卓类型的哦,我疑惑的是ios平台上的那个
    benter
        23
    benter  
    OP
       2015-03-17 19:03:59 +08:00
    @alex321 你说的是公众号获取用户资料,这一步肯定是可以的。现在是iOS应用要获取用户资料,比如说我后台有50个人的openid个人资料什么的,应用第一次启动时怎么知道要获取哪个openid用户的资料。app可以拿到设备唯一标识,后台有openid,现在就要把这两个一对一关联上的问题了,要么应用能得到当前登录的用户的openid,要么微信公众号能得到设备唯一标识。
    alex321
        24
    alex321  
       2015-03-17 20:23:30 +08:00
    获取APP(试客小兵)下载地址。
    我怀疑这个是关键。你提到未通过 app store 发布这个试客小兵,可能使用了苹果的企业证书签名,特征就是安装的时候会有一个弹框提示是否安装什么企业颁发签名的应用证书之类的,这种发行途径可以自行生成近乎无限的 iOS app 安装 ipk 文件;这个是我后续猜测的基础。
    我有理由相信这个下载地址可能是针对你的 openId 定制的下载地址,或者说你下载的时候是经过对方服务器后台即时自动打包了一个包含你的 openId 信息在内的 app,当你启动的时候自然就能匹配到你的信息。简单的验证方式是另外找一个微信账号关注然后下载安装包,两个包的指纹等信息。
    paradoxs
        25
    paradoxs  
       2015-03-17 21:51:27 +08:00
    下载地址是在微信内部生成的。。 获得这些信息,合情合理。
    demen
        26
    demen  
       2015-03-18 12:14:45 +08:00
    关注公众号这步已经搞定了 , 来看这个http://mp.weixin.qq.com/wiki/14/bb5031008f1494a59c6f71fa0f319c66.html
    knightlhs
        27
    knightlhs  
       2015-03-18 12:53:50 +08:00
    @benter 对于已经关注的用户 获取用户信息的 OpenID 可以使用静默方式进行
    此方式不会告知用户授权#19 的 URL 就是拿到了 OpenID 的典范
    然后根据 OpenID 服务号可以异步去获取你的身份信息 包括用户名 头像 地区等
    moxiami
        28
    moxiami  
       2015-12-28 23:10:16 +08:00
    挖个坟,最近正好在关注这个问题,好像没那么简单,做了几个测试,结论:
    1 、尝试过同一 IP 下的两个终端,下载的 ipa 是同一个文件;
    2 、下载 App 后,尚未打开(还没弹出“信任”、“不信任”之前),关闭 safari 页面、清空 safari 数据、重启路由器(更新 IP ),打开 App ,貌似还可以关联上
    zhuziyi
        29
    zhuziyi  
       2016-01-31 17:01:37 +08:00
    这类应用都是通过「企业应用」安装,又没说你危害?另外他们的账号跟手机是怎么确定唯一标识的?
    YLGG
        30
    YLGG  
       2016-03-07 22:21:14 +08:00
    我比较想知道到底要怎么破?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3441 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:21 · PVG 19:21 · LAX 04:21 · JFK 07:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.