关于网站强奸剪切板那点事

2018-01-27 18:02:11 +08:00
 MonoLogueChi

最近手机剪切板经常被强奸,我好像也看到过,有人提问剪切板到底是怎么被强奸的,就简单的写了一篇文章讲述某些网站是怎么强奸你的剪切板的,文章地址是https://www.xxwhite.com/2018/Clipboard.html

我把文章在这里复制了一遍,但是排版什么的可能不太理想,或者想体验一下剪切板是怎么被强奸的,可以去我的博客里看一下,进去之后只要随便点击一下就会被强奸。

最近因为种种原因,经常有网页强奸手机剪切板,今天我们就来探究一下,这些网页究竟是怎么强奸你的剪切板的。

起因

事情的起因其实很奇怪,我昨天晚上去查资料的时候,无意中发现我的剪切板被强奸的,所以就仔细研究了一下这个东西。

本来我对 JS 也是一窍不通,这是我第二次写 JS 脚本,上一次是写那个跳转页面。如果本文有什么错误,欢迎大佬指正。

先说一下我访问的网页,菜鸟教程手机版https://m.runoob.com/

发现剪切板被强奸之后,我就去下载了一个剪切板监控插件https://www.coolapk.com/apk/com.chili.ClipboardManager

然后找到了一点线索

这里说明一下,显示的操作应用时系统 web 内核,其实时 via 调用了系统 web 内核,而这个复制操作又是在 via 浏览器中执行的,所以会提示 web 内核访问了剪切板。

原理解析

好了,元凶找到了,我们就要看看他是怎么作案的,手机浏览器调试不太方便,我就等到第二天到电脑上来看看。

首先打开网页,然后打开调试工具,然后重新刷新一下网页看看。

看看我找到了什么,果然是通过 JS 实现的

这个 clipboard.min.js 就是用于实现复制文本到剪切板的,而且兼容性非常好。

好了,既然知道是怎么作案的,那就再往深了查一点,咱们看看 index.html 里都写了什么。

先把网页复制出来,然后搜索clipboard,找到相关的线索。

简单解释一下,他先通过https://m.runoob.com/api/codexx.php这个接口获取数据,你们有兴趣的可以自己去看一下,这个时候我得到的是

{"flag":true,"ins_data":"\uffe5Sh7p0Osu3GO\uffe5"}

然后接着往下看,接下来就是改变 body 的 id 和 data-clipboard-text,这两步都是给接下来强奸你的剪切板做准备,然后就是强奸你剪切板的方法咯,再后面就是验证有没有强奸成功。

除此之外,还要判断你是不是移动设备,因为强奸你电脑的剪切板时完全没用的。

验证一下

看到别人剧本写的挺好的,难免想要验证一下,所以自己改了一个剧本

结果:

好了我已经可以成功强奸剪切板了。

附代码

真的写的很丑,基本都是复制粘贴的,不要太在意细节啊

<!doctype html>
<html lang="">
<head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <title>测试页面</title>
</head>
<body>
<div id="copy" data-clipboard-text="测试剪切板">
    <p>准备强奸
        <br><br><br><br><br><br><br><br><br><br>
        结束</p>
</div>

<script src="https://cdnjs.cat.net/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cat.net/ajax/libs/clipboard.js/1.7.1/clipboard.min.js"></script>
<script>
     $("body").onclick = copycode();

    function copycode()
    {
        if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))
        {
            var clipboard = new Clipboard('#copy');

            clipboard.on('success', function (e)
            {
                alert("复制成功");
            });
            clipboard.on('error', function (e)
            {
                alert("复制失败");
            });
        }
    }

</script>
</body>
</html>

写在后面的

我很负责任的告诉你,当你看到这里时,你的手机剪切板八成已经被我强奸了。如果你对这篇文章感兴趣的话,可以支持我一下哟,点击下方赞赏,请我吃包辣条啥的都行。

附本文所用代码

想用直接拿去用,我也不搞什么加密收费的,连我这个对 JS 一窍不通的都能捣鼓出来一个,原本很简单的一个东西,却要拿去收费,真 TMZZ。

<script src="https://cdnjs.cat.net/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cat.net/ajax/libs/clipboard.js/1.7.1/clipboard.min.js"></script>
<script>
    $("body").onclick = copycode();
    $("body").attr("id" ,"copy");
    $("body").attr("data-clipboard-text" ,"强奸你的剪切板 lieetD58G4");
    function copycode()
    {
        //if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))
        {
            var clipboard = new Clipboard('#copy');
            clipboard.on('success', function (e)
            {
                //alert("复制成功");
            });
            clipboard.on('error', function (e)
            {
                //alert("复制失败");
            });
        }
    }
</script>
26656 次点击
所在节点    JavaScript
70 条回复
Showfom
2018-01-27 18:04:15 +08:00
岂不是放入支付宝红包口令卡然后就等着别人领红包去了
MonoLogueChi
2018-01-27 18:05:31 +08:00
sobigfish
2018-01-27 18:10:30 +08:00
@Showfom #1 最近很多网站 小程序 都这么干( app 估计也有 只是不好抓现行)
youyaang
2018-01-27 18:48:32 +08:00
@Showfom 已经有很多这样干了,是真的烦
littlebutt
2018-01-27 18:50:18 +08:00
我更想知道 clipboard.min.js 里面是怎么实现的。。
q33q33
2018-01-27 18:57:36 +08:00
所以手机端怎么防止 js 强奸呢?
sobigfish
2018-01-27 18:59:51 +08:00
@q33q33 #6 我准备去找个 adblock 的浏览器提个 feature request
xiaopc
2018-01-27 19:01:38 +08:00
coolcoffee
2018-01-27 19:03:00 +08:00
@littlebutt 利用这个 document.execcommand('copy')实现的

@q33q33 个人用户根本没那精力去折腾。 如果要避免的话, 就像楼主的文章中提到了一个获取支付宝内容的接口,把那个域名写入 hosts 就能避免。
MonoLogueChi
2018-01-27 19:16:41 +08:00
@sobigfish 安卓手机可以安装我提到的那个 xposed 插件看一下,但是能不能抓到真正的元凶,真不一定
@littlebutt 看#8 发的 github 地址
@q33q33 @coolcoffee 个人感觉屏蔽接口不如屏蔽 clipboard.min.js ,但是这么做有的时候网页上那种点击复制的按钮可能会失效
@littlebutt @coolcoffee 具体调用的哪个方法我也不太清楚,貌似不同的浏览器会有不同,毕竟 document.execCommand('copy')兼容性不如 clipboard
yksoft1
2018-01-27 19:35:51 +08:00
为啥强奸 PC 的剪贴板没用?玩黑客的挂个脚本强制复制和提交 PC 剪贴板内容可以起重大作用
MonoLogueChi
2018-01-27 19:47:10 +08:00
@yksoft1 就事论事,别太认真啊。我是说我提到的这个用处,强奸电脑剪切板没啥用
ke1vin
2018-01-27 20:22:32 +08:00
这样做的意义是什么?领支付宝红包?
jason19659
2018-01-27 20:35:19 +08:00
必须得点一下才能复制
yangyaofei
2018-01-27 20:43:31 +08:00
这个半年前上 1024 站的时候也有时候出现过,因为我这个系统,复制东西有提示。话说,随意获取剪贴板浏览器不管么,这么隐私的东西……
YLGG
2018-01-27 21:11:20 +08:00
表示 iPhone 好早就中招了!!防不胜防!!!
geekzu
2018-01-27 21:13:24 +08:00
我这边移动宽带直接在网页里插 js 跳转支付宝红包链接,浏览器链接默认打开支付宝的话就直接领取了…
MonoLogueChi
2018-01-27 21:27:10 +08:00
@geekzu 可能是 dns 劫持吧,以前经常遇到插广告的。这个貌似可以举报,取消参加活动资格
@jason19659 因为触发事件是点击,触发事件可以改成其他的动作
liangzi
2018-01-27 21:33:53 +08:00
楼主博客主题不错我正好在找~ so
dic
2018-01-27 21:37:49 +08:00
已经把各软件的剪切板权限关了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/426432

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX