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

iOS 微信会拦截你在微信 App 内的截图,在使用微信快捷发送图片功能时候需要额外注意

  •  
  •   elfive · 2021-11-01 07:31:58 +08:00 · 4071 次点击
    这是一个创建于 1120 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天在微信小程序里帮朋友测试东西的时候,需要我截图给他,截图中包含了我的个人信息,所以在截图后,我直接编辑图片( iOS 截图后自带的编辑界面,不是微信图片编辑界面)将部分信息去除(下图为示例,注意我把文件传输助手那几个字裁剪了)
    V2erForiOS

    编辑完成后,进入聊天会话界面,一般来说点击➕号后会直接在➕号上面快捷显示这个图片以快速发送,如图:
    V2erForiOS

    这个时候我没注意,因为当时只是裁剪了图片,那个快捷图片几乎看不出来区别。所以直接点了这个快捷图片就发出去了,然而一看,发出去的却是没经过编辑的原截图,注意看文件传输助手那几个字
    V2erForiOS

    这个时候我去检查微信选择图片的界面,发现这张截图并没有出现在选择列表中
    V2erForiOS

    我没记错的话,之前的微信,截图后图片是会在这个列表中出现的,猜想是微信实际上是通过某些系统 API 获得了这个图片的原始内容,然后直接拿来就用了。虽然这个 API 只能获取到微信在前台时候截图的内容,但起码我们在使用快捷发送这个功能的时候要尤其注意。

    45 条回复    2021-11-11 10:14:07 +08:00
    elfive
        1
    elfive  
    OP
       2021-11-01 07:34:29 +08:00 via iPhone   ❤️ 2
    发错节点了……骂人的话我就不说了。
    个人的价值观都那么难以转变,何况是这么大体量的一个公司。尽量不用才是我们应该做的。
    wd
        2
    wd  
       2021-11-01 07:43:37 +08:00 via iPhone   ❤️ 7
    不明白这里怎么就和价值观有关系了,你也说了微信可能只获取到截图的原图了啊?微信自己难道不想准确点么....
    botshawn
        3
    botshawn  
       2021-11-01 07:46:11 +08:00 via iPhone
    虽然我是真的不想用微信,但是目前感觉国内的聊天软件只谈聊天功能和界面舒适程度的话,微信确实还不错……
    morize
        4
    morize  
       2021-11-01 07:46:43 +08:00
    这个现象我也观察到了。虽然张小聋没 x ,但微信也真是挺难做的,不开相册权限还想快速截图,那当然只能 app 内自己处理了,应该是用了检测截图的什么 api ,但只能拿到当下的图片。所以发的只能是原图。
    whasyt
        5
    whasyt  
       2021-11-01 07:50:37 +08:00 via iPhone
    亲测可复现
    lucifer9
        6
    lucifer9  
       2021-11-01 07:52:23 +08:00
    正常操作,这里编辑完成以后是直接右上角点分享,然后选择微信好友
    elfive
        7
    elfive  
    OP
       2021-11-01 07:53:33 +08:00 via iPhone
    @wd #2 所以他就不考虑我为什么要编辑图片的逻辑?我因为用这个功能把一些信息泄漏出去也是他们能接受的吗?我记得以前的截图是会直接出现在图片选择列表里面,而且是编辑之后的图片。现在改成这样还不算?
    ccvzz
        8
    ccvzz  
       2021-11-01 07:54:42 +08:00 via iPhone
    如果你截图的时候正在打视频电话 你还会发现快捷图片上的视频悬浮窗是黑的(存到相册的悬浮窗是有画面的
    elfive
        9
    elfive  
    OP
       2021-11-01 07:54:55 +08:00 via iPhone
    @lucifer9 #6 我大多数情况会这么做,主要是微信确实能获取到你不想分享出去的东西。
    allenchen10
        10
    allenchen10  
       2021-11-01 08:08:27 +08:00   ❤️ 3
    @elfive 一部分用户(包括我)不会给微信读取系统相册的权限,微信为了实现截图之后快捷发送的功能,只能调用某个 API 在应用内截一张图,你对于系统截图的修改没有反映到微信内截图是符合逻辑的,不然相当于微信未经允许读取了系统相册。
    elfive
        11
    elfive  
    OP
       2021-11-01 08:11:52 +08:00 via iPhone
    @allenchen10 #10 是的,是你这个说法,程序逻辑没错,主要是间接实现了未经授权获取到了相册图片的读取权限,即使只能在非常有限的范围内的图片。
    eternityz
        12
    eternityz  
       2021-11-01 08:17:47 +08:00   ❤️ 2
    这个功能不需要相册权限,只需要监听 UIApplication.userDidTakeScreenshotNotification 事件,再对 keyWindow 截图就可以。也因此获取不到用户编辑后的截图,只能发送原图,而且不包含系统状态栏。(这种功能完全没有必要)
    Leonard
        13
    Leonard  
       2021-11-01 09:17:59 +08:00
    在哪个 App 内截图,这个 App 就可以获取到截图的,不需要权限,而且没状态栏
    jch
        14
    jch  
       2021-11-01 09:19:30 +08:00
    @eternityz 说得对,这是微信自己做的 window 截图,跟相册没关系
    damnu
        15
    damnu  
       2021-11-01 09:28:11 +08:00
    正常操作应该是截图编辑完点分享选择 wx 或复制,微信粘贴。
    yangluhui
        16
    yangluhui  
       2021-11-01 09:37:55 +08:00
    为了快速发图做的,监听截图事件,自己在微信内生成当前界面截图,由于只生成了微信本身的内容,所以并没有状态栏,状态栏是空的
    xingyuc
        17
    xingyuc  
       2021-11-01 10:34:01 +08:00
    越用 telegram 就越觉得 nb ,IM 的天花板不过分吧
    hingle
        18
    hingle  
       2021-11-01 10:41:24 +08:00 via iPhone
    就是这样的啊,你可以把微信放前台,然后在锁屏页面截图

    聊天页面也会有提示框,发送出去是微信的页面截图,而不是锁屏页面。
    hingle
        19
    hingle  
       2021-11-01 10:43:15 +08:00 via iPhone
    @hingle 复现不了了,记得以前我试过是可以的
    yangzzzzzz
        20
    yangzzzzzz  
       2021-11-01 10:54:31 +08:00
    我记得苹果有个 bug 编辑图片保存后发现没编辑。不知道修复了没
    7gugu
        21
    7gugu  
       2021-11-01 10:59:54 +08:00
    这个是微信自动生成的图片,不是拦截你的截图。对于部分用户来说还是挺方便的。
    cairnechen
        22
    cairnechen  
       2021-11-01 11:03:30 +08:00
    @xingyuc

    天花板怎么也要请求相册权限?不是有系统提供的 picker 么?
    eitomomobaohua
        23
    eitomomobaohua  
       2021-11-01 11:12:50 +08:00
    前段时间发现个事和楼主的遭遇有点像。众所周知 iPhone 的相机有一个正方形取景框,在上面拍的 1:1 比例的照片在某 App 里能读出来 16:9 的未裁切原图,属实震惊到我了。
    MegrezZhu
        24
    MegrezZhu  
       2021-11-01 11:17:31 +08:00   ❤️ 2
    本来就是微信手里的信息(微信 app 自己渲染出来的内容),截图,楼主删掉,然后发现没删掉,于是楼主宣称微信获得了不该获得的东西……?
    不抖机灵的话,获得截图跟“实现了未经授权获取到了相册图片的读取权限”,相差其实还是挺远的
    Lemeng
        25
    Lemeng  
       2021-11-01 11:30:22 +08:00
    个人觉得无所谓吧
    wofave
        26
    wofave  
       2021-11-01 11:46:29 +08:00 via iPhone
    我也发现了。和楼主情况类似,只授予微信选中照片权限,后来测试先后在微信内、外截两次图(并使用系统批注功能画几道),「你可能要发送」这里只有第一次微信内的、无批注的截图,所以我猜想是微信在前台运行时,如果发现截图事件就私自也截一张。
    wofave
        27
    wofave  
       2021-11-01 12:20:16 +08:00 via iPhone
    @wofave #23 至于为什么是「私自也截一张」而不是「私自获取系统截图的原图」,#12 从代码上解释了前者的可能性,而我观察到了两张截图的时间差:

    例如 Jetbrains 公众号 10 月 22 日发的抽奖文里有一张内容不断变化的 GIF 。在这个位置截图->查看「你可能要发送的照片」->对比系统相册中的截图。反复若干次(因为 GIF 变换没那么快,所以不能 100%复现)可以发现两张图片上 GIF 里的字是不同的。
    wofave
        28
    wofave  
       2021-11-01 12:21:57 +08:00 via iPhone
    @wofave #24 (我讨厌这个自作聪明的功能)
    lmmortal
        29
    lmmortal  
       2021-11-01 12:24:18 +08:00 via iPhone
    @yangzzzzzz 编辑后的图片只是多了个同名的其他格式文件,原图还是在的 可以复原
    @eitomomobaohua 应该也可以用这个解释,原图在,只是呈现的是裁切后的 1:1 效果
    elfive
        30
    elfive  
    OP
       2021-11-01 13:27:27 +08:00 via iPhone
    @MegrezZhu #24 不是说不想让微信知道它自己提供给我的内容,而是这个功能,在不非常仔细注意的时候容易让我们错误地把自己不想分享的内容分享出去。
    PerFectTime
        31
    PerFectTime  
       2021-11-01 13:47:29 +08:00
    虽然微信做的确实🌶🐔,但我觉得这个没问题
    ABCDiSDR
        32
    ABCDiSDR  
       2021-11-01 13:58:54 +08:00
    @elfive 还有两个方面你没提到:

    1 、ios 微信相册权限设置为选择时,通过聊天列表与任意对象(包括人,文件传送功能),点击右下角+号,拍摄任意照片 A 点击发送,此照片 A 默认被给微信使用。

    2 、ios 微信相册权限设置为选择时,给了它一张图片 A 的权限,那么在此 A 图片基础上做的任何标注修改裁剪等操作后新的图片 B ,微信也默认有权限。
    bronco
        33
    bronco  
       2021-11-01 14:10:40 +08:00 via iPhone
    在手机上试了下。微信没开照片权限。

    截图编辑好之后直接点了右上角的分享,发送给微信好友,最后看发出来的图片是编辑后的。
    ourstars
        34
    ourstars  
       2021-11-01 14:20:05 +08:00
    复现成功
    ourstars
        35
    ourstars  
       2021-11-01 14:31:54 +08:00
    是微信自己应用内的截图才会这样,只能说是这个功能会让那些开启了选择部分图片或者不允许图片权限的用户造成困扰(实际上自己编辑的图片微信是没有权限去读取的)。
    PostMeridiem18
        36
    PostMeridiem18  
       2021-11-01 14:37:43 +08:00
    @yangzzzzzz 这个 bug 在 iOS 11 上面遇到过几次,iOS 12 之后就没再碰到过了
    ABCDiSDR
        37
    ABCDiSDR  
       2021-11-01 15:17:25 +08:00
    微信就是🌶🐔,它明明可以做到,而且现在就已经做到了调用系统 api 来获取用户选择的相片。(点击“我”-“设置”-“帮助与反馈”-“意见反馈”-“其他”-“其他”-“点击+”直接调用系统 api 选择相片)
    但它还是要你给它权限,甚至它已经有了相册的权限,只是获取程序非法,现在要你再次授权将非法获取的信息洗白而已。
    lanlanye
        38
    lanlanye  
       2021-11-01 16:13:16 +08:00 via iPhone
    上面说不开权限发图就一定不方便的,建议去用一用钉钉
    ggmood
        39
    ggmood  
       2021-11-01 16:18:55 +08:00 via iPhone
    有些截图通过 wx 分享是发不出去的,估计扫描过内容来做判定
    tin3w5
        40
    tin3w5  
       2021-11-01 20:38:38 +08:00 via iPhone
    说真的,我不知道为什么,这分明是张小聋在挑战用户底线,怎么到了某些水军嘴里就 TM 成了“加速”利器、产品怎么怎么不错、张小聋有多么不容易……

    用户要的功能是发送指定的图片,不是他的自作多情。不要用一句美其名曰的“为你好”抹杀掉用户原本的意愿。

    如果真的想提升用户体验,难道不是好好的把界面设计的“适合正常人操作”吗?现在的设计只能说是符合某个“聋子”操作习惯的设计。如果没那个本事可以从现在的位置上滚下来,没人逼着你负责这个产品。

    还有,产品做的像坨屎一样,收发消息的时候丢消息、屁大点事要扫码、非手机端完全不能用户名密码登陆、文件传输限制一堆、无论电脑端还是移动端,从装上就 TM 开始疯狂占用空间、不仅什么权限都想获取还总 TM 尝试自动唤醒。就这德行的 APP 还谈什么狗屁用户体验?讲用户体验就 TM 别把文件有效期设成两天,别把传输的图片压缩的那么严重啊!当婊子还 TM 自己花钱请水军给自己立牌坊,话说出来难道自己的脸不疼吗?哦,忘了,张小聋是聋子,自己说的话自己也听不见。那那些给张小聋唱赞歌的脑残粉和水军呢?你们也一个毛病?
    xingyuc
        41
    xingyuc  
       2021-11-11 09:38:43 +08:00
    @cairnechen 你可以不给啊,功能设计而已,杠什么,微信某个版本不给权限不能通过外部分享发送图片和文件,那可真是小而美
    cairnechen
        42
    cairnechen  
       2021-11-11 09:43:11 +08:00
    @xingyuc

    「天花板」已经沦落到比烂了吗?

    p.s.如果陈述事实也叫杠的话,那您也太容易被杠了,呵呵
    xingyuc
        43
    xingyuc  
       2021-11-11 09:51:55 +08:00
    @cairnechen 我说这个是 IM 里的天花板,你非要杠他要相册权限,你不给不就完了,我就不给,又不是不能用,完了来陈述事实,太逗了,你还是用小而美吧
    cairnechen
        44
    cairnechen  
       2021-11-11 10:04:29 +08:00
    @xingyuc

    扑哧,「天花板」的定义不用我教你吧,在权限管理上明明可以做到更好却选择了和微信一样的方式,这能叫「天花板」,自己逻辑混乱,说不过就开始打滚,装什么大尾巴狼啊?
    cairnechen
        45
    cairnechen  
       2021-11-11 10:14:07 +08:00
    @xingyuc

    看了下发帖,补一个 BLOCK
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1029 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:44 · PVG 04:44 · LAX 12:44 · JFK 15:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.