自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

支付寶AR搶紅包?前端輕松就破解

開發(fā) 前端
不過對于機智的前端童鞋來說,只需要簡單的一段代碼就能破解AR紅包(當(dāng)然成功率也不是100%)。我們要做的事情其實很簡單 —— 把系統(tǒng)自帶的小橫條都去掉,去掉的部分取其附近的圖片內(nèi)容來填充。

近期阿里搞了各LBS+AR實景的紅包玩法,小伙伴們在公司里都玩瘋了~

有時候為了搶一個紅包,會跑到另一個地方去拍照,雖然略麻煩,但整體的互動還是很有意思的。

不過對于機智的前端童鞋來說,只需要簡單的一段代碼就能破解AR紅包(當(dāng)然成功率也不是100%)。

破解原理見《上線僅一天:支付寶AR紅包慘遭技術(shù)流破解》(https://news.cnblogs.com/n/559670/),感謝這位設(shè)計師童鞋。

我們要做的事情其實很簡單 —— 把系統(tǒng)自帶的小橫條都去掉,去掉的部分取其附近的圖片內(nèi)容來填充,最終得到的效果圖有不小的幾率會被識別為匹配成功: 

[[179937]]

對于上圖中間那塊區(qū)域,我們可以通過固定的輪廓對底圖進行遮罩得出。

所以對于前端而言,我們可以通過這樣的 DOM 結(jié)構(gòu)來實現(xiàn)如上需求:

 

[[179938]]

其中 C 和 B 其實是同一個背景(即搶紅包頁面的手機截圖),A 是一個遮罩輪廓,會對 B 進行剪輯獲得非條紋部分的圖片內(nèi)容。同時 B 再相對 C 進行垂直偏移,用自身被剪輯后的內(nèi)容擋住 C 的條紋。

根據(jù)圖片alpha通道來做遮罩的能力,我們可以使用 CSS3 的 mask-image 特性來實現(xiàn),其具體應(yīng)用在我之前《巧用 mask-image 實現(xiàn)簡單進度加載界面》一文中已做了詳細介紹:

 

[[179939]]

本文不再贅述該 CSS3 特性。

另外還有一點小需求 —— 希望 B 和 C 的底圖可以動態(tài)更換。這個我們使用 input[type=file] 組件來實現(xiàn)即可。

直接貼代碼吧:

  1. <head> 
  2.  
  3.     <meta charset="UTF-8"
  4.  
  5.     <title>Title</title> 
  6.  
  7.     <style> 
  8.  
  9.         div { 
  10.  
  11.             margin-top: -1500px; 
  12.  
  13.             position: relative; 
  14.  
  15.             overflow: hidden; 
  16.  
  17.             background: #EEE; 
  18.  
  19.             width: 1440px; 
  20.  
  21.             height: 2110px; 
  22.  
  23.         } 
  24.  
  25.   
  26.  
  27.         #bg, #mask-bg { 
  28.  
  29.             position: absolute; 
  30.  
  31.             width: 1440px; 
  32.  
  33.             height: 2560px; 
  34.  
  35.             background-size: cover; 
  36.  
  37.         } 
  38.  
  39.         #mask-bg{ 
  40.  
  41.             top:9px; 
  42.  
  43.             mask-image: url(mask.png); 
  44.  
  45.             -webkit-mask-image: url(mask.png); 
  46.  
  47.         } 
  48.  
  49.         input { 
  50.  
  51.             height: 60px; 
  52.  
  53.             margin-top: 20px; 
  54.  
  55.         } 
  56.  
  57.     </style> 
  58.  
  59. </head> 
  60.  
  61. <body> 
  62.  
  63. <div> 
  64.  
  65.     <p id="bg"></p> 
  66.  
  67.     <p id="mask-bg"></p> 
  68.  
  69. </div> 
  70.  
  71. <input type="file"
  72.  
  73.   
  74.  
  75. <script> 
  76.  
  77.     var input = document.querySelector('input'), 
  78.  
  79.         bg = document.querySelector('#bg'), 
  80.  
  81.         maskBg = document.querySelector('#mask-bg'); 
  82.  
  83.   
  84.  
  85.     input.onchange = function () { 
  86.  
  87.         var src = getObjectURL(this.files[0]); 
  88.  
  89.         setBg(src); 
  90.  
  91.   
  92.  
  93.     }; 
  94.  
  95.   
  96.  
  97.     function setBg(src){ 
  98.  
  99.         bg.style.backgroundImage = 'url(' + src + ')'
  100.  
  101.         maskBg.style.backgroundImage = 'url(' + src + ')'
  102.  
  103.     } 
  104.  
  105.   
  106.  
  107.     /** 
  108.  
  109.      * 通過選擇的文件獲取其圖片路徑(blob) 
  110.  
  111.      * @param file 
  112.  
  113.      * @returns {*} 
  114.  
  115.      */ 
  116.  
  117.     function getObjectURL(file) { 
  118.  
  119.         var url = null
  120.  
  121.         if (window.createObjectURL != undefined) { 
  122.  
  123.             url = window.createObjectURL(file) 
  124.  
  125.         } else if (window.URL != undefined) { 
  126.  
  127.             url = window.URL.createObjectURL(file) 
  128.  
  129.         } else if (window.webkitURL != undefined) { 
  130.  
  131.             url = window.webkitURL.createObjectURL(file) 
  132.  
  133.         } 
  134.  
  135.         return url 
  136.  
  137.     } 
  138.  
  139.   
  140.  
  141. </script> 
  142.  
  143. </body> 

需要了解的是,我們在 getObjectURL 方法中使用了 URL.createObjectURL 接口來為所選文件生成對應(yīng)的 blob 內(nèi)容的URL,再將其賦給底圖的 background-image。其格式是這樣的:

 

最終整體效果如下:

 

需要注意的是,這里的圖片寬高值,以及遮罩圖 mask.png,都是根據(jù)我的手機分辨率來定制的,所以要使用該工具的話請自行修改樣式和遮罩圖片。

該小工具掛在我的 github 倉庫上,有需求的可以自助下載修改。

Tips:

1. 這里無法保證成功率100%,盡量選擇顏色較深、沒有文字出現(xiàn)的照片,成功率會大一點;

2. 支付寶是有防刷措施的,每天都有領(lǐng)取紅包的數(shù)量上限,所以要通過AR紅包來發(fā)家致富是走不通了(手動滑稽);

3. 現(xiàn)在破解起來很輕松的一個地方是,支付寶每次生成的條紋都是固定的(條數(shù)、位置、粗度),說不好以后會對這塊進行優(yōu)化,進而動態(tài)生成條紋,那本文的辦法就不適用了(mask.png無法適應(yīng))。不過即使那樣也可以走canvas來hack。

責(zé)任編輯:張燕妮 來源: VaJoy Larn
相關(guān)推薦

2016-12-27 18:54:47

AR支付寶紅包

2017-01-13 16:06:57

支付寶

2025-02-18 16:00:00

SpringBoot支付Java

2015-07-15 10:09:43

2015-02-26 13:37:13

紅包

2025-02-17 00:00:45

接口支付寶沙箱

2015-02-26 14:45:42

微信支付寶紅包

2024-02-28 08:59:47

2021-09-09 15:30:28

鴻蒙HarmonyOS應(yīng)用

2017-12-29 18:37:35

支付寶大額紅包邏輯漏洞

2021-03-13 06:59:07

支付寶隱藏技巧支付平臺

2014-11-17 10:52:56

支付寶去阿里化

2021-01-25 14:13:26

iOS支付寶支付

2017-01-03 15:51:43

2020-10-15 14:00:47

數(shù)字人民幣紅包中國人民銀行

2018-03-27 12:02:31

央行支付寶紅包

2009-09-17 12:15:28

互聯(lián)網(wǎng)

2011-04-21 11:27:42

Firefox支付寶

2021-09-14 07:47:16

支付寶架構(gòu)監(jiān)控
點贊
收藏

51CTO技術(shù)棧公眾號