整型和bcd的对应关系_微信与多闪之争背后,好友关系链到底是如何窃取的?

这几天从发布到全面推广,多闪已经快速的超越100万用户,迅速占领了appsotre榜首,在七麦数据中也是蝉联第一。

91d579694af047c5583ba5ace4c37604.png


但因多闪包括头条产品登录采取都支持【微信第三方登录】。很多用户都反馈是否自己的关系链被多闪、甚至是抖音窃取,并且腾讯也封杀了头条系产品的【微信登录方式】,关于:“微信好友关系链”的盗取之说在互联网中传的沸沸羊羊。

b95cb054b67fabcfb3e70e1012f55419.png


我也是一个抖音用户。在账户注册的时候采取了微信第三方登录加手机号验证的形式注册的。
在互联网产品中,产品镜框里在设计账户体系时候,要求第三方登录后求进行用户手机号验证。目的是为了降低一个用户拥有多个账户,并且减少用户账户维护成本。

fe4f9ab6c9bc0655f4c789a0ce0b90d4.png


作为产品经理,看到网上来自朋友的各类猜疑与讨论点,就“如何获取微信好友关系链的方式”做了调研,通过梳理用户在产品使用路径,发现其实是可能做到抓取获得微信好友关系链的。方法可能比较涉及逻辑较多,因此自己做了一张流程图方便大家理解
只要授权登录了,就可以获得好友列表?
现在很多网上吃瓜群总,认为获取关系链的本质原因是微信授权后,多闪是通过直接读取微信好友列表即可完成。这个完成路径的方式大概是:

e86d421bb4216260ab0ea141b9bbb45e.png


用户通过授权登录进入到多闪(头条系产品),在授权登录中读取用户的好友、并验证好友是否存在添加关系(类似拉黑、删除的好友就不再读取),在头条服务器中上传数据。进入到多闪后反向给用户推荐好友。

87c3dfc07c731fc323521b6b7ff7e666.png


要想做到直接调取用户的好友列表,首先就是要知道微信是否开放这样的接口。通过查询微信开放平台,我们可以知道微信只能给予如下

bf18eb804c34720b20920fd6e0900128.png

用户的基本信息:性别、昵称、头像、地区。
通过上面4个字段,是无法推算出用户与用户之间的好友关系链。我们最多也只能推算出用户的用户画像。并且这个画像是非常有限的,类似地区、用户人群占比、性别分布。
但要获得用户关系链,用户与用户之间必须要有除了空间、时间外的另一个重要因子:互相的交互行为。

3abe4e23efa29879b86ccba1e773f4f8.png


但这样的交互池目前不同于在一个游戏广场中,而是需要之间互相有个联系、交流。微信作为一个熟人社交的工具,就成了这个交互池的典型代表。
所以既然我们否决了上面的方式,那我们还可以或可能从什么样的方式去获得用户A与用户B之间的关系呢?
通过分享朋友圈与点击
微信是基于熟人社交的关系,所以我们只要获取了一个用户ID后,继续获得他/她与其他人的互动行为,即可导出好友关系,方便大家理解,可以实现的方式我以下面流程图分场景介绍:
微信用户通过授权登录注册头条系产品:

efa38262afbd12b3a4d9801e317a9571.png

该用户成了头条系的新用户:A,当这个用户在头条产品中发现了好的内容,开始分享到朋友圈或分享给微信某个好友

fe3debe57c0e29d45acdf110369fecab.png


上面的页面图我是以朋友圈的入口,好友入口也同样。此时在微信中的好友bcd是点击并查看该分享内容的好友。bcd好友分别进入到微信浏览器下的H5头条系产品中,头条服务器可以获得对应的3个uv与分享者A的头条系ID因为头条系的ID是来自A用户采取微信授权登录的方式获得的。
所以头条系服务器若能够通过对bcd的微信账号进行回溯。其实建立了下面的关系

c23f9d363fc2e0111e0754bc96570ad2.png


建立了微信A在头条系产品产生的账户“ A”关联的数据好友关系分别是:bcd
当bcd用户各自分别注册了头条系产品后,产生了对应的头条系账户:"BCC”。好友关系链就可以生成了,至少A与B、A与C、A与D 一定是微信好友关系
但我们的难点在于,如何通过在微信浏览器中获取bcd的uv外的微信标示。
微信只开放了openid
互联网研发中,运营人员也常使用h5 页面去获取数据,通过后台去抓取uv、地理位置、甚至是手机信息。比如我们投放了什么H5活动,我们都可以基于uvpv去分析该活动的效果甚至是转化。路径如下:

54bf42130387712297d86e9b54576622.png


来自kevin lu(https://www.cnblogs.com/Xjng/p/3910511.html)
回到上面说的头条系产品分享朋友圈、或发送给好友列表。其实也是产生这样的url。我们的后端(头条系服务器),上面openid在微信中。每个用户是唯一标示的。
最终我们建立了一个什么关系网?
用户进入分享的url我们常可以看到下图的登录提示框

e859e3fb1cd494376a8fff31915e7154.png


这在只有认证的服务号才可以开启的功能。但一旦通过该弹窗点击:授权登录后,我们可以获得什么关系链?

bf18eb804c34720b20920fd6e0900128.png

如上,我们可以获得每个用户之间的间接关系。但其实是可以回溯到:A与B用户。
这就是一个我们获得关系链的方式。再加上LBS、年龄、性别,我们甚至也可以借此再优化算法,获得更多、更准确的好友关系链。
头条系产品没有授权微信登录
回过头来,我们看下头条的产品分享到微信中。其实是没有拉取微信的授权登录

0acc9a74595ddd3791b2ee162c63db72.png


在该类H5 下我们只能获得更少的数据。但是否能够在H5分享中获得点击该页面的微信好友数据呢?

3bb06e630dd11cac05c061b9d9ac945f.png


看到一篇来自财氪的报道,提出:“今日头条对微信浏览器的cookie进行了篡改,并回传到了头条的服务器。理论上来说,这种行为可能获取到微信好友信息。”

929bc05e188c9a9c23bb6469bb1a3480.png

报道地址:https://zhuanlan.zhihu.com/p/55675417
就算攻破了浏览器,但仍然违规
当然技术上,能够通过微信内置浏览器去获取:分享者、阅读者的关系。那么多闪、头条系的产品能够有好友关系链其实就说的过去了。
我们看这场大战的本职:微信和头条系产品到底谁是受害者?答案:用户才是受害者
用户的数据是个人数据,是隐私数据。用户对自己的数据使用权肯定是需要知道和并且有主动权。但目前这场所谓的关系链窃取最终让用户成了一个“透明人”继续看微信的数据开放规范中说明:

a8b38a0f8a95b136d9f5f599acc00123.png


如果获取了用户数据后用于扩展关系链等,其实是腾讯禁止的。因此若真的是上述这样逻辑,我们可以认定是头条系对用户数据的窃取后再补充到自身的关系链。答案:明显的违规使用
最后让我们看下这一场关系链拉取的核心难点就是在蓝色页面中:基于微信浏览器中H5的数据信息获取

aa70fabe0ba75932898313eee05e126b.png


能不能通过在该H5页面的数据,获得可以推到出用户关系信息是关键,反而不是获取用户微信ID。
最后,我认为腾讯系产品的自身强势就是基于关系链的衍生。产品的定位就注定了这样的信息窃取行为是必然的方式之一。一款基于熟人社交的产品,好友列表一定是你的好友。这样的熟人好友关系链才是有价值的,反而是基于陌生人社交的好友关系链,可能就算你窃取了也没办法达到高频的社交行为。
在今天的数据算法中,结合用户的标签爱好、用户画像,获得【推荐给你】的这样用户列表其实不是难事。
好啦,今天的原创就在这里。我会每周坚持更新两篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线程同步,线程不同步_同步多线程集成测试

线程同步,线程不同步测试线程非常困难,这使得为被测多线程系统编写良好的集成测试非常困难。 这是因为在JUnit中,测试代码,被测对象和任何线程之间没有内置的同步。 这意味着,当您必须为创建并运行线程的方法编写测试时&#xff0…

ehcache 默认大小_简单的使用ehcache

ehcache是一个用Java实现的使用简单,高速,实现线程安全的缓存管理类库,ehcache提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案。同时ehcache作为开放源代码项目,采用限制比较宽松…

JS定时器使用,定时定点,固定时刻,循环执行

本文概述:本文主要介绍通过JS实现定时定点执行,在某一个固定时刻执行某个函数的方法。比如说在下一个整点执行,在每一个整点执行,每隔10分钟定时执行的方法。 JavaScript中有两个定时器方法:setTimeout(&am…

axios 跨域_当遇到跨域开发时,我们如何处理好前后端配置和请求库封装

我们知道很多大型项目都或多或少的采用跨域的模式开发, 以达到服务和资源的解耦和高效利用. 在大前端盛行的今天更为如此, 前端工程师可以通过nodejs或者Nginx轻松搭建起web服务器.这个时候我们只需要请求后端服务器的接口即可实现系统的业务功能开发.这个过程中会涉及到web页面…

Java数据类型和标识符

在本教程中,我们将了解Java中的数据类型和标识符。 Java语言具有丰富的数据类型实现。 数据类型指定大小和可以存储在标识符中的值的类型。 Java数据类型分为两类: 原始数据类型 非原始数据类型 原始类型 Java定义了八种原始数据类型:字…

哈罗顺风车送到终点吗_没有了顺风车,滴滴“特惠拼车”来了!比拼车更低价,比顺风车更安全吗?...

近日,有网友表示,滴滴出行App内出现了“特惠拼车”功能,据悉,该功能主要给乘客提供长距离拼车出行的优惠折扣。如果拼车价格为44.8元,那“特惠拼车”的价格为30.7元。但是该功能目前还未在上海出现。近日,有…

管理角色认知-工程师到管理者角色发生了哪些变化?

背景 不同等级的管理者需求不同; 管理者需求说明新经理提供管理相关的工具和方法能力层面,术高级经理提升角色认知认知和理解,道,系统通过认知上的改变达到能力和行为上的改善一个人的行为,能力,价值观都源…

axure 小程序 lib_小程序定制开发的步骤有哪些?

经过两年多的微信小程序开发,各种功能应用变得越来越成熟,越来越多的企业和企业正在开发微信小程序用于在线营销。如果您的公司尚未开发成都小程序,它将变得越来越凶猛。在竞争激烈的市场环境中,将失去许多获得和营销客户的机会。…

java 检查打印机状态_爱普生打印机常见故障有哪些 爱普生打印机故障解决方法【详解】...

任何设备在使用一段时间后都会出现一些小问题,打印机也不例外,那么爱普生打印机常见的故障有哪些 ,出现问题该怎么解决呢?下面小编就来分享2018爱普生打印机故障解决方法 ,一起来看看吧!一、故障现象 &a…

eureka 之前的服务如何关闭_干货分享 | 服务注册中心Spring Cloud Eureka部分源码分析...

友情提示:全文13000多文字,预计阅读时间10-15分钟Spring Cloud Eureka作为常用的服务注册中心,我们有必要去了解其内在实现机制,这样出现问题的时候我们可以快速去定位问题。当我们搭建好Eureka Server服务注册中心并启动后&#…

局部变量写在循环内还是外_循环内的局部变量和性能

局部变量写在循环内还是外总览 有时会出现一个问题,即分配一个新的局部变量需要多少工作。 我的感觉一直是,代码已优化到成本为静态的程度,即一次执行,而不是每次运行都执行一次。 最近, Ishwor Gurung建议考虑将一些…

csp-s模拟测试44「D·E·F」

用心出题,用脚造数据 乱搞场 1 #include<bits/stdc.h>2 #define re register3 #define int long long4 #define inf 0x7ffffffffffffff5 using namespace std;6 int n,a[100010],b[100010],ansinf;7 double st,ed;8 inline int read(){9 re int a0,b1; re char chget…

c++中的new_怎么在java中创建一个自定义的collector

简介在之前的java collectors文章里面&#xff0c;我们讲到了stream的collect方法可以调用Collectors里面的toList()或者toMap()方法&#xff0c;将结果转换为特定的集合类。今天我们介绍一下怎么自定义一个Collector。Collector介绍我们先看一下Collector的定义&#xff1a;Co…

Java 9中的新Regex功能

最近&#xff0c;我收到了Packt出版的Anubhava Srivastava提供的免费书籍“ Java 9 Regular Expressions” 。 这本书是一个很好的教程&#xff0c;它向任何想学习正则表达式并从头开始的人介绍。 那些知道如何使用正则表达式的人可能仍然很有趣&#xff0c;以重申其知识并加深…

c语言实现二分法_C语言实现二分法求解方程在区间内的根

C语言实现二分法求解方程在区间内的根。设有非线性方程&#xff1a;其中&#xff0c; 为 上连续函数且设 (不妨设方程在 内仅有一个实根)&#xff0c;求上述方程实根的二分法过程&#xff0c;就是将含根区间[a,b]逐步分半&#xff0c;检查函数值符号的变化&#xff0c;以便确定…

计划

赤 wqs二分 https://www.cnblogs.com/Juve/p/11479423.html https://www.cnblogs.com/Rorschach-XR/p/11479602.html 反悔贪心 https://www.cnblogs.com/cjyyb/p/9367948.html https://www.cnblogs.com/Miracevin/p/9795871.html https://blog.csdn.net/weixin_34344677/articl…

java写入文件编码格式为ansi_Windows10 bat批处理删除 快速打开文件夹 固定到开始菜单或任务栏...

1. 快速打开文件夹1.1 bat文件如果你经常打开一个被放在很深的文件夹&#xff0c;于是浪费很多打开文件的时间&#xff1a;开始>此电脑>Data(D:)>文件夹1>文件夹2...>文件夹n>平均要浪费大约10秒的时间&#xff0c;如果每天打开100次&#xff0c;那么1000秒&…

python中__init__.py的作用、module和package

控制包的导入行为&#xff1a; 1、声明当前文件是一个可导入的包&#xff1b;2、如果当下包下有多个.py文件使用__ all__ [ 模块名]&#xff0c;也就是form XXX import YYYmodule和package 为了编写可维护的代码&#xff0c;我们把很多函数分组&#xff0c;分别放到不同的文件…

java default修饰符_Java基础语法二

Java循环结构for循环/* for(初始化;布尔表达式;更新) {执行代码 } */ for(int i0; i < 5; i) {System.out.println(i); }最先执行初始化步骤&#xff1b;可以声明一种类型&#xff0c;但可初始化一个或多个循环控制变量&#xff0c;也可以是空语句然后检测布尔表达式&#x…

微信开发修改button里的字体大小_微信小程序全栈开发课程【视频版】2.2 index页面完善...

​点击观看视频课程 ↓↓↓微信小程序首页完善https://www.zhihu.com/video/1195308096099282944课程文字版1、template 部分&#xff08;1&#xff09;修改template部分的代码template里面包含html代码&#xff0c;对应着原生小程序框架里中的.wxml文件。我们将index.vue文件中…