朋友圈的权限研究最后有个实现朋友圈的实现的推测(全网最全)
Posted 石头StoneWang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了朋友圈的权限研究最后有个实现朋友圈的实现的推测(全网最全)相关的知识,希望对你有一定的参考价值。
朋友圈的权限研究、最后有个实现朋友圈的实现的推测(全网最全)
分组可见、怎么知道对方是否删除自己、朋友圈的设计之推模式、仅聊天、不让他看、不看他、三天可见、一月可见、半年可见
一、概述
(研究时间2022年6月,ios微信版本是8.0.22,安卓8.0.23。不保证微信的逻辑会小调整,但基本上大体逻辑涉及到底层调整是不怎么改的,所以如下的研究具有较强时效性的参考作用)
文章有点长,耐心看下来会了解很多的细节。
你在朋友圈发post,哪些人能看见哪些看不见?如果让你写一个微信朋友圈你会如何设计?本文研究这些问题。
经过观察,控制是否能看到对方朋友圈post的权限配置可以归为两类,一类是动态控制,一列是静态控制。动态控制修改后立即生效,静态控制对已发布的POST不起作用。
举个例子,你把某好友改为仅聊天,那他之前能看到的 post 会立即看不到,这个改动是立即生效且影响到以前发布过的post,这是动态控制;
又如你发的 post 仅对某个分组可见,然后这个分组加了新好友,新好友是看不见这条post的,因为按照分组发post时,哪些人能看见此post已经固定下来了,分组的设置便是静态控制。
注意:我们查看朋友圈,有两个地方,第一就是自己的朋友圈时间轴,查看所有朋友的朋友圈汇成的一条时间轴;第二就是点击进入某个人查看他的时间轴(某个人的时间轴),这两者是有点区别的,需要注意。
二、细节
1、分组
分组是一种静态控制的规则
1.1 仅对某个分组可见
发post的时候选择仅对某个分组可见,则最终仅仅会针对你发post的那一刻这个分组里的人可见。即发post的时候就固定下来的了!
例如发了一条post(为了表述方便,起个名字:a),选择仅针对G分组可见(发post的时候该分组含o、p、q三人)。实际上,该操作会转化为对o、p、q可见,不管后来这个分组怎么增减成员甚至删除分组,都是针对o、p、q。
比如把p踢出分组还依然可见到a,把r加入G依然不可见到a
1.2 指定某个分组不可见
跟 1.1
一样,假设针对G不可见发了a,发a的时候G成员有o、p、q,则永远就是这三个不可见,不管G后来怎么增减成员甚至分组删除,都是剔除掉o、p、q。
2、仅聊天(Chats Only)
修改会立即生效的,是动态控制的规则。假设A和B是朋友,B设置了A为仅聊天,则B以前发的所有posts对于A都立即变成不可见。
(对方主页和自己的时间线都看不见,已验证)
3、不看他(Hide Hist Posts)
只是在朋友圈的时间轴中看不到对方发的posts,但是点击他的头像进入对方的朋友圈还是可以看到的
4、不让他看(Hide My Posts)
修改后立即生效,是动态控制的。
(对方主页和自己的时间线都看不见,已验证)
需要注意一下,保存配置的时机有差异,有点奇怪,点击了
5、一段时间内可见
修改后立即生效,这是一种动态控制。
发的朋友圈可以设置展示一定时间内的,有4种设置:3天内可见;1月内可见;半年内可见;所有可见(无时间限制)。
(时间轴和对方主页都会受到设置的影响。但是发生很奇怪的现象,就是两个地方看到的不一样,时间轴中按理应该能看到对方半年内的,但实际上漏了一些,进入对方主页看到的才是全的、准确的)
是因为这样子导致的,如果你的微信是最近注册的,即使对方设置全部可见,你在你的时间轴上也只能看到对方从你注册时间往后的,要看更多你点进他的头像就可以看到全部了。
6、拉黑对方
对方看不到自己的posts了,看到一条线。是立即生效的动态控制。
(对方主页和自己的时间线都看不见,已验证)
7、删除对方
同样的,删除对方后对方立即看不见自己发的jposts了。是立即生效的动态控制。
(对方主页和自己的时间线都看不见,已验证)
8、关闭朋友圈
可以关闭自己的朋友圈(设置->通用->发现页管理->剔除"朋友圈")。只是隐藏了自己的发现页的入口,别人照样还是能看到曾经发过的post,有点自欺欺人,另外只是隐藏了自己的发现页的入口,在 “我” 这里还是可以看到自己的朋友圈的入口。
9、允许陌生人查看十条朋友圈
这个设置是实时生效的。
第二个问题是,什么是 “十条”?是十张图片,还是没发一次叫做 “一条”?是后者!(实际验证过)
第三个问题是,就算对方设置允许陌生人查看十条朋友圈,就算对方有10条,也不是所有都能查到,比如10条中只有1条是最近的,那只能查到最近1条,至于最近是多久就不太清楚微信的定义了。
第四个问题是,能查对方超过10条吗?实际上测试,能突破限制10条(这是微信的bug吧!?)
第五个问题是,陌生人肯定在自己的时间轴上看不到对方post的(肯定的,不然乱套了,陌生人乱套了);陌生人只能点进对方头像后看到对方的post(比如通过同在一个群点击对方头像查看)
评论:微信居然默认是打开这个开关的,看来是默认鼓励人社交(牺牲了点隐私),但是这个开关其实最好关闭掉,因为测试发现陌生人看到的可能会超过10条posts(可能是bug)。
10、清空朋友圈
清空朋友圈后看到的样子是什么?
看到下图的页面没有 “朋友圈” 的入口了,所以你见到你加的人没有朋友圈的入口,就是从未发过朋友圈或者曾经发过但之后清空了。
(正常情况下在 “更多信息” 上面会有 “朋友圈” 的入口)
注意:
1、对方刚刚情况完所有朋友圈posts之后,有三四十秒的延后 “朋友圈” 的入口才会关掉。
2、如果对方公开的posts都删除,仅剩下仅自己可见的posts,则还会有这个入口,只是点击进去的时候看到一条横线。
三、总结
1、总结关于时间轴和个人主页的朋友圈
有两个地方可以看朋友圈的posts,一是自己 “发现” 的朋友圈的时间轴,第二是点击对方头像进入的信息页里查看特定某个人的朋友圈。
这两个地方查看到的东西是有点不一样的(但是大体是相同的,只有极端情况会不一样)。比如:
A发了o、p,然后添加B为好友,然后在B的时间轴上是看不到o和p的,因为加为好友的时间之前发的post是不展示在自己的时间轴的,但是可以去A的个人信息页里的朋友圈里翻是能翻到的。
此时A发了q,则此时B的时间轴中才会出现q。
2、当你看到对方的信息页没有朋友圈入口
你加了个人,点击对方头像,如果没有 “朋友圈” 的入口,则他没发过或者发过但后来清空了朋友圈(私有的posts也必须清空才会没这个入口),可能是个临时备用账号加了你。
3、当你查看对方的信息页,点击进入朋友圈只有一条横线时
如果点击对方头像,有 “朋友圈” 的入口,但是是一条横线,则
- 可能对方对你 “仅聊天”
- 可能对方对你 “不让他看”
- 可能对方拉黑了你 —非常好验证(后续见如何发现对方拉黑或(和)删掉你)
- 可能对方删掉了你 —非常好验证
- 可能对方既拉黑了你,然后再删掉你 —非常好验证
不可能:
- 从来没发过posts(尤其你知道他/她曾经发过)—因为会造成信息页没有 “朋友圈” 入口
- 清空了所有posts(含私有的) — 因为会造成信息页没有 “朋友圈” 入口
- 不可能限制了x天/月/年可见 —因为限制的话底部会有 “x天可见” 的提示(即使在x天内没有内容可以显示也会显示这句
4、当你查看对方的信息页,点击进入朋友圈,看了没多少个posts就有一条横线
横线没提示 “x天可见” 之类的,说明他/她就只发了这么点posts,有可能是临时备用的账号。
5、关于 “x天可见”,只要设置了都会有提示
只要是设置了 “3天可见、一个月可见、半年可见” 都会在横线上有标注这个时间线的限制。
6、关于拉黑
A把B拉黑后,在A的会话页面(即"微信")以及通讯录页面找不到他了,但是在 “我->设置->朋友权限->通讯录黑名单” 里可以找到他,并且A可以给B发送消息但是接受不到B的任何信息。
-
B不可以发消息(任何种类的消息)给A(会有提示 “消息已发出但被对方拒收了”)
-
B不可以转账给A(会有弹框提示 “请确认你和他(她)的好友关系是否正常”)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AEH7AAOk-1655032065641)(/Users/stonewang/Library/Application Support/typora-user-images/image-20220612160306234.png)]
-
B可以发红包给A但是会提示状态异常红包会在24小时后退款(有提示)----也不明白为啥跟转账不搞成一样的逻辑,可能红包的并发高很多采取了后判断而非预先判断。
7、关于删除
A把B删除后
-
B不可以发消息(任何种类的消息)给A(会有提示,提示语跟拉黑的不同)
-
B不可以转账给A(会有提示,跟拉黑的提示语也不同,“你不是收款方好友,对方添加你为好友后才能发起转账”)
-
B可以发红包给A但是会提示状态异常红包会在24小时后退款(有提示)----也不明白为啥跟转账不搞成一样的逻辑,可能红包的并发高很多采取了后判断而非预先判断
8、关于先拉黑再删除,以及他们的差别
先拉黑再删除,相当于删除(优先体现删除的特性,比如发消息过来会提醒对方需要先添加好友而不是消息被拒绝)。在对方重新加你的时候可以拉黑,这样就形成了既不是好友又是拉黑的状态(正常的拉黑状态双方还是好友),这种情况下优先体现的时候拉黑时的特性,比如对方发消息过来会提醒消息被拒绝而不是提醒先添加好友。
拉黑:
- 相当于临时关进笼里,可以需要的时候再放出来。拉黑不会收到任何的骚扰(包括重加好友的骚扰)
- 跟对方的聊天记录还在。
删除:
- 虽然在对方还是删除自己之前可以不需要对方验证通过就能加回来的,并且有方法做到不让对方察觉。
- 跟对方的聊天记录会清除。
- 对方可以尝试再添加你,会造成骚扰(当然你可以不通过他好友的情况下将其加入黑名单)
9、关于仅聊天和不让他看和不看他
可以简单理解为 “仅聊天=不让他看+不看他”,细说的话有一点点区别,“不让他看” 和 “不看他” 仅仅是针对朋友圈和状态两种资源,但是仅聊天针对朋友圈、微信运动等(他没有提到状态,估计这个状态是包括在 “等” 里头的)
补充:微信会根据对方的性别提示用 “他” 还是 “她”,如 “不让他看”、“不让她看” 等;微信只有男和女两个选项,没有性别保密的选项。
10、冲动删除如何加回来
A冲动删除了B,怎么将B加回来而不被B发现。首先必须在B发现之前做这些操作,否则就没意义了,另外需要在B发现并报复反删A之前做这些操作,否则A加B就需要验证了。
在B还是A的好友的时候,可以搜好友(比如他的账号、手机等、或者在共同的群里找回来),点击添加好友,并且很重要的是打招呼的消息要删掉,否则虽然不需要对方统一就能加回来但是会有打招呼的消息暴露了你曾删除过他。
11、怎么知道对方是否删除自己
有几个方法
- 最早的时候可以发一串特殊字符,这串特殊字符不会真的发给对方,但是删你的人会有提示不是好友(这个最好先试下,目前已经失效了)
- 给他转账,转账的时候不是好友或者拉黑你都会有提示的(注意不要真的转过去,到时就尴尬了,要注意将刷脸等盖住一下)—小范围(估计会长期有效,因为涉及到业务规则问题,这个规则不好改)
- 拉群,只要不聊天,所有人都不会有提示,但是删了你的、拉黑你的会列出来(截止2022-6还是有效)—可以批量操作
9、关于 “推模式” 以及一些逻辑漏洞
详细可以参考下面的描述
四、猜测微信朋友圈的实现方法
我猜测时间线使用的是推模式,拉模式效率很低。(朋友圈的业务逻辑真的很复杂!!!要你设计的话,怎么样保证查询效率?这里面肯定有些业务规则是受限于技术实现的)
假设有a、b账号,a已经发了a1、a2、a3,b发了b1、b2,然后a和b成为了好友
成为了好友是需要在对方的时间线表(假设叫timeline)里补上两个人成为好友之前就已经发了的post,不是所有的都会补,以b为例,假设a发a1的时候b账号还未创建出来,a发a2的时候b账号已经创建出来了。则b的timeline里头会将a2和a3写入(观察到似乎是这个规律,但也不一定,总之是使用推的模式)
现在假设a又发了a4,则a的所有朋友(除掉不必须的)都会被推送a4,将a4的id写到对方的timeline表里头。
“不必须的” 指的是,比如发a4的时候制定了发给某个分组,分组里有c和d,那就会往c和d的timeline中写入书序(a自己也要)但是不会往 "不必须的"b里写。
指定分组可见,就是指定分组下的人会推送标记,其他的不会。
指定分组不可见,就是出这些外的人都会推送标记。
另外如果发post的时候对方被标记为仅聊天或不让他看,也不会推送这个标记(百分百肯定,而且有个逻辑漏洞1,详细见后面)
并不是自己的timeline有这个标记就能看见,还需要进行过滤,因为存在一些能实时影响可见性的规则,比如虽然发a4的时候c、d都发了,但是现在a对d临时采取仅聊天,那就会剔除d,即d就刷不到。
查看某个人发的post的时候,逻辑相对简单,就是查这个人的发送列表,再进行过滤。
关于补推的问题,a和b账号新加为朋友,加为朋友的时候是需要在对方的timeline上补互相之间的标记。
逻辑漏洞1:假如a和b是好友,b对a设置为仅聊天(或不让他看),b发一个post,比如叫b1,则这个发布过程不会往a的timeline中写入标记。自然a在自己的时间线或者单独点开b的信息页进入b的朋友圈都是看不到b1的,但是,但是哪一天b对a设置为有权限查看,则a在自己的时间线中是看不到b1的,但是点开b的信息页的朋友圈是能看到b1的,好家伙,可以推断,b曾经将a设置为不让他看或者仅聊天发了b1这条post,现在对他开放了。
以上是关于朋友圈的权限研究最后有个实现朋友圈的实现的推测(全网最全)的主要内容,如果未能解决你的问题,请参考以下文章