和脉脉斗智斗勇的一个晚上

本文最后更新于:2018年12月12日 晚上

前言

脉脉作为一个职场交流的软件,在上面还是可以很快看到很多消息的(职言板块感觉有点类似于职场人的微博?,这个功能还是很赞的

但是脉脉出了名的恶心是对通讯录的盗取以及胡乱使用,为了不让自己的七大姑八大姨也收到什么“xxx把你标记为职场小能手的短信”,又能注册脉脉,于是折腾了大半个晚上

分析

首先,脉脉是会读取和上传通讯录的(读取和上传通讯录是不一样的),根据朋友的使用体验,发现应该是第一次注册的时候要求上传通讯录,此后不要求上传通讯录(但是可以手动更新通讯录),而至于读取通讯录的话就不知道了。会有这个结论是因为,当第一次成功注册并且上传通讯录之后,关闭掉对短信的读取权限,软件依然可以正常使用。

开始注册

起初希望使用 Google Voice 来进行注册,结果脉脉空有外国手机号输入,而却没有实际的给我的 voice 号码发送验证码….让人抓鸡

所以就只能使用自己的真实手机号注册了

但是注册了之后发现一定要读取通讯录并且上传,才能够注册成功。于是我拒绝了,开始了探索怎样才能解决这个问题,成功注册。

使用权限欺骗

Android上面,使用权限欺骗是可以伪造权限的结果,返回给 App 的,但是要基于 Xposed 才可以,我的手机版本是 Android 9,没有 Xposed ,所以没办法使用这个,(Xposed 的话似乎是使用 App Ops Xposed) 就可以了

在没有通讯录的手机上面注册

刚好手边有一台刚刚刷好 AOSP 的测试机,于是装了个脉脉,准备注册,结果发现,如果你的通讯录完全是空白的话,他会认为你没有通讯录…软件上面显示的,和你没有启用通讯录权限时候,是一样的….

添加一个联系人

然后就添加联系人了,随便添加了一个联系人,重新注册,这个时候就提示联系人太少,无法注册

添加三个联系人

随便居然还是提示联系人太少,因为没法知道到底多少个联系人才会解除这个判定,于是决定导入一整批的虚假联系人

添加多个虚拟联系人

导出了手机里面的 vcf 格式之后,照着伪造了一份有100个虚假联系人的 vcf,再导入其中,用 js 写的一个小脚本,放到浏览器里跑一下就可以了

1
2
3
4
5
6
7
8
9
10
11
let str = ""
for (let i=100;i<199;i++){
str += "BEGIN:VCARD\n"
str += "VERSION:3.0\n"
str += "N;CHARSET=UTF-8:辣鸡脉脉"+i+"\n"
str += "FN;CHARSET=UTF-8:辣鸡脉脉"+i+"\n"
str += "TEL;TYPE=CELL:13500000"+i+"\n"
str += "END:VCARD\n"
}
console.log(str)

复制输出然后粘贴到一个文件,重命名为 .vcf 格式,传到手机里,导入通讯里,于是终于能够通过那一个对联系人的判断了

后续

进入软件之后,迎面而来的就是脉脉的老拉新活动,拉一个新用户给老用户发个5块钱红包…而具体的操作,自然也是让你选择向你通讯录当中的哪个好友发送“xxx把你标记为职场小能手”的消息了…实在是无力吐槽了