這些濫用剪貼板的App,背後玩的是什麼把戲?
上週,隨着蘋果召開年度全球開發者大會,iOS 14 開發者預覽版本 (以下簡稱iOS 14 預覽版) 也正式上線了。
有開發者發現,在 iOS 14 預覽版 上,當前台活躍的應用讀取了剪貼板裏的內容時,會在界面上彈出提示告知用户。
具體來説,當 App 從關閉狀態打開或者從後台進入前台時,都會讀取用户剪貼板裏的內容,iOS 14 預覽版會顯示 “xxx pasted from yyy“ 的字樣,其中 xxx 是讀取了剪貼板內容的應用,yyy 是剪貼板內容的來源應用。例如:
根據獨立開發者 Talal Bakry 和 Tommy Mysk 的研究整理,發現了至少53個應用具有這樣的行為,除了 TikTok 之外還有《紐約時報》和《經濟學人》的手機端、微博、AccuWeather、阿里巴巴的全球速賣通 (AliExpress) 等,涵蓋社交網絡、新聞客户端、遊戲和電商等類型。
不過,最受人矚目的就是字節跳動旗下的海外短視頻軟件 TikTok。
Emojipedia 創始人 Jeremy Burge 上傳的視頻顯示,每當他在 TikTok 的評論文本框裏輸入文字的時候,會一直不停彈出 TikTok 讀取剪貼板的通知:
需要明確的是,此前蘋果一直允許前台的應用靜默讀取剪貼板內容,只是從 iOS 14 預覽版開始,才會進行明顯的提示。很多用户也是有這些提示第一次明確意識到,自己每天使用的應用會“偷偷”讀取剪貼板裏的內容。再加上 TikTok 的那段視頻,一度讓人誤會 TikTok 在監聽自己輸入的內容。
TikTok 真的在這樣做嗎?這些應用為什麼要讀取剪貼板內容?背後到底玩的是什麼把戲?
硅星人就此採訪了 TikTok,以及其他多位資深 iOS 開發者,帶你全面瞭解開發者正常讀取以及濫用剪貼板的那些事。
TikTok 發言人對硅星人表示,開發者之所以會在 iOS 14 預覽版看到 TikTok 頻繁讀取剪貼板內容,實際上是因為 TikTok iOS 應用會通過調用剪貼板進行垃圾內容防禦 (anti-spam)。
這個問題被公眾發現之後,TikTok 已經在 App Store 發了新版,去掉了這一功能。
一位瞭解情況的員工對 TikTok 剪貼板反垃圾的工作機制進行了具體解釋:
當用户在文本框輸入時,應用會對用户剪貼板裏是否存在內容,進行一個“是”或“否”判定。
如果答案是“是”的話,該用户在 TikTok 視頻下方留下的評論,其權重就會降低,不會出現在留言的靠前位置。
TikTok 不會讀取剪貼板裏的具體內容,只會看剪貼板裏是否有內容。
這個思路背後的邏輯是:認定那些在進入 TikTok 後剪貼板裏仍有未清理內容的用户,其剪貼板內容是垃圾內容的可能性更大。
這是個一概而論的邏輯,甚至有些匪夷所思。
正常來講,反垃圾內容的對象應該是用户提交的內容,而非保存在剪貼板裏的內容。事實上,由於剪貼板功能設計,粘貼完成之後剪貼板裏的內容依舊存在。正在讀文章的你可以看一下,自己的剪貼板裏是否有文字——如果用這個標準來判斷垃圾內容,那誤傷簡直不要太多。
內容平台有很多其他更常見的反垃圾做法:絕大多數平台都會在服務器端進行反垃圾內容處理;在客户端本地,也可以檢測文本框單位時間內是否輸入了太多文字。這些都比 TikTok 整改之前的方法更有邏輯。
而且,該員工透露,這一功能並非由 TikTok 的反垃圾組開發,而是由另一個業務方向相近的團隊負責。
不過可以確認的是,TikTok 並沒有像很多人看了視頻之後所擔心的那樣,在監聽用户在文本框輸入的內容。
這一説法得到了多位資深 iOS 開發者的支持。
知乎 iOS 話題優秀回答者、iOS 開發教程作者王禹效告訴硅星人,當用户在 TikTok 內輸入內容時,剪貼板調用的通知頻繁出現,疑似因為調用了一個名叫 textFieldDidEndEditing(_:) 的函數,也即“文本框輸入結束”。
結果就是,當用户在 TikTok 的文本框輸入文字,每次輸入動作停止的時候,都會觸發對剪貼板內容的調用。
至少兩位資深 iOS 開發者認為,從視頻裏的應用行為來看,頂部彈窗通知只是代表讀取了剪貼板裏的內容而已,“有人以為這代表 TikTok 在監聽用户打字,其實沒有。只是在文本框輸入文字的行為觸發了讀取剪貼板內容。”王禹效表示。
據硅星人瞭解,TikTok 在去掉前述反垃圾內容的功能後,仍會繼續在應用內保留調取剪貼板的功能,會在合法合規的原則上使用。不過 TikTok 暫未透露會具體的使用目的。
那麼,調取剪貼板這件事,都有什麼可能的使用目的?請繼續往下讀。
濫用剪貼板背後是什麼把戲?
讀取剪貼板內容是 iOS 平台允許的功能。多位受訪的資深開發者和業內人士也表示,調取剪貼板確實是中美互聯網行業的慣常做法。原則上,只要信息需要在應用之間傳遞,就可以調取剪貼板。
王禹效認為,啓動即調用剪貼板,按照合理猜測,可能有幾類原因:
程序寫錯了,用錯了插件,錯誤調用了接口,(比如 TikTok 的情況,出於有意或者無意,都暫可算這一類);
開發過程中接入了一些常見的第三方功能,比如第三方賬户登陸(如 Facebook、Twitter、微信、微博等),也就接入了這些功能對應的廣告聯盟。調取剪貼板的行為可能是這些第三方功能或廣告聯盟 SDK 導致的,一般來講不屬於開發者第一方的過錯;
補完用户畫像或提取關鍵詞推送廣告:這種做法就接近灰色產業的範疇了。結合上一類理由,應用完全可以提取剪貼板裏的內容,通過第三方廣告聯盟,補足用户畫像,從而更精確地推送廣告。這也是為什麼很多人經常感覺廣告有“心電感應”的能力,明明沒有在當前應用裏輸入有關內容,卻也收到了關聯度很高的廣告。
知乎 iOS 話題優秀回答者、資深開發者 Bill Cheng 透露,在中文互聯網的語境下,應用調取剪貼板一般有如下幾種場景:
首先,應用之間的跳轉,通常會通過剪貼板來實現。比如在第三方應用裏選擇通過微信進行登錄,或者通過支付寶進行支付,此時嵌入在第三方應用裏的微信和支付寶組件,會在跳轉之前將一段數據放到 iOS 的系統剪貼板裏,跳轉之後再進行讀取;
以及,一些應用,特別是某些阿里系和字節系應用,因為眾所周知的原因,應用裏的內容或鏈接無法通過微信進行分享,所以轉而通過剪貼板實現。
“比如,由於中文互聯網陣營之間的信息禁運,淘寶只能通過淘口令來完成微信傳播,或者支付和電商應用的口令紅包,只能通過解析剪貼板特定的數據格式,幫助用户快速地觸達產品的某個功能,提升體驗。”
久而久之,隨着這些中國互聯網公司勢力的增長和人員的流動,這種做法慢慢變成了中國互聯網行業的常態。
微博 CEO 王高飛在應用被發現讀取剪貼板內容後承認,微博的分享功能也是通過剪貼板來實現的。
一位網友表示:接口應用主動去嗅探用户的剪貼板內容,和用户主動把剪貼板內容複製在接口應用裏,是兩種不同的行為,看似很方便,實際很不妥,缺的是用户的粘貼授權。
濫用剪貼板,終於該治一治了?
剪貼板調用的中國互聯網“特色”的存在,長期來看並不是好事。一些新的玩法,已經從灰色轉向黑色了。
去年雙十一期間,有用户發現自己的搜狗輸入法內置剪貼板裏開始頻繁出現未知的淘口令。
更誇張的是,搜狗輸入法也內置了複製內容後提示的功能,打開了這個功能的用户,會頻繁跳出“你剛剛複製了xxxx”的提示——儘管自己並未進行任何複製的動作。
在此前提之下,當用户打開淘寶、一淘之類的應用時,這些未知淘口令就會被調用、識別,進而觸發鎖傭紅包的頁面。一些用户不注意點擊了之後,使用購物返利應用下單獲得的返利,就進入了別人——未知淘口令的原主——的賬户裏。
有受訪者對硅星人反映,在今年618購物節期間,搜狗輸入法也出現了類似的情況。
結果,在之後的一段時間裏,很多移動網站的開發者動了歪心眼,通過網頁 API 往剪貼板裏填充吱口令,不僅會覆蓋掉用户剪貼板裏之前的內容,還會導致用户進入支付寶等應用時莫名其妙彈出窗口。
Bill Cheng 認為,調用剪貼板在 iOS 14 之前是一個灰色的地帶,功能需求是存在的,對用户隱私的侵犯也沒有那麼被人關注,所以也沒人質疑這種做法的合理性。iOS 14 的新提示框將調用剪貼板的動作暴露出來,在他看來是一件好事。
“應用在打開時隨意讀取剪貼板,是對用户隱私的一種侵犯。剪切板裏面很有可能儲存並不是分享的亂碼字段,而是你的姓名、銀行卡號、手機號甚至是密碼。”
這部分信息很有可能隨着剪貼板讀取上傳到應用的服務器上,和用户的賬號綁定在一起,聯繫方式或財務信息就這樣不知不覺泄漏了。
沈寅認為,上傳用户剪貼板內容,確實可以提取到很多用户的隱私信息,在應用上是沒有必要的,“不論這些應用有沒有做剪貼板數據的收集或者分析,這種行為都會讓用户很恐慌。作為一名剪貼板應用的開發者,個人的態度是必須把用户的隱私放在第一位。”
Bill Cheng 指出,剪貼板作為用户行為操作的系統及工具,不應該被用在非用户行為的操作上。如果用户沒有進行剪切複製粘貼操作,應用就不應該去讀取剪貼板的內容,或者往裏面寫入內容。“別説當前存在隱私問題的剪貼板分享,就是跳轉登陸,或者支付,都不應該使用剪貼板。”
他認為,讓剪貼板迴歸最初的工具用途,是蘋果 iOS 14 這次展示彈窗的初衷,“把這種做法暴露出來,我覺得是件好事。這代表蘋果官方將這個曾經灰色的地帶定義成黑色。”