chrome 調試之 - 給微軟小冰看病(無論給小冰發送什么內容都只回復“我已經開始升級啦,期待一下吧!”)

微軟 Bing 搜索推出了小冰AI智能聊天模塊,具體啟用方式是用edge或chrome瀏覽器打開鏈接?cn.bing.com 后在輸入框搜索任意內容,待搜索結果頁面加載完并稍等片刻,頁面右側就會出現一個躲在滾動條后面的小蘿莉,撫摸...不,點擊她,就會彈出這個聊天框了

不幸的是,無論我向她發送什么內容,她都只會說一句“我已經開始升級啦,期待一下吧!”

作為一個喜歡探索的bug研發工程師,我想方設法,不成功調戲小冰一下誓不罷休。然而一頓操作下來(不限于換瀏覽器、換電腦、搭梯子、登錄bing賬號等等),聊天框依舊如此,小冰對我的調戲視而不見,始終是那句“我已經開始升級啦,期待一下吧!”。

百思不得解,后來我打開F12,查看了network面板發現,這貨其實是返回了有效聊天內容的(之所以想看看F12,我認為既然是AI聊天機器人,那應答機制必定是要在服務器處理的,既如此,就一定會有網絡交互來傳遞對話內容)

既然在明明返回了有效聊天內容的情況下聊天框仍然給用戶顯示了無意義的提示信息,那一定就是微軟Bing在搞鬼!我們且不論微軟這么做的動機是什么,正事要緊(調戲小冰)。

通過前文操作可以推斷,微軟 Bing 肯定是攔截了小冰真正想要說的話,強行讓小冰變成了一個人工智障。

那么我要做的事情就是分析在跟小冰聊天時點擊發送消息后代碼的執行過程。

首先我通過F12的Element面板選中聊天框內的發送消息按鈕,找出為這個按鈕自身綁定的點擊事件:

具體步驟如上,按圖索驥,跟著箭頭直到最后一步,點擊綠色框圈出的js文件,代碼被定位到 vr() 這個方法,也就是說我在點擊發送消息按鈕時其實是調了這個方法。我給vr這個方法打斷點,然后在聊天框輸入內容后點擊發送按鈕,代碼進入斷點,使用F10一步步調試,邏輯走到 hi() 這個方法時使用F9進入hi這個方法,不難看出,hi方法的核心邏輯是在創建一個ajax請求,并監聽請求的成功回調,隨后把我們鍵入的聊天內容發送出去。當接口返回成功時調用af()這個方法進一步處理接口回調內容(如下圖):

在當前js代碼窗口中使用CTRL+F,全局搜索af這個方法,找到這個方法的源碼,給他打斷點(為了方便后續調試,在這之前我先取消掉上一個斷點)

到了這里其實我只要稍微看一下代碼就會發現問題的根本所在,注意看af方法中的這個vu方法調用,它接收的第1個參數就是這句 "我已經開始升級啦,期待一下吧!"

不用想,這個參數最終會被作為小冰的回答顯示在聊天框中,而現在這句回復被微軟給強制寫死了,且 i 這個參數中不就是接口返回來的真實聊天回復內容嗎?可以發現 i 這個參數被賦值后根本就沒有使用過!后續我又跟進了?vu 這個方法,進一步確認了微軟強制篡改回復內容這個事實。

到這里就已經真相大白了,微軟這是故意不給咱使用這個玩意啊。

接下來我只需要想辦法修改這行代碼的邏輯,如果能成功,就可以和小冰愉快地玩耍啦!

// vu("我已經開始升級啦,期待一下吧!", ""),
vu(i[0].content.text, ""),

可能你會說,道理咱都懂,但這是在線網站呀,你難不成還能鉆進微軟的靜態網站服務器去改人家的網頁源碼不成?你咋不上天呢!哎,我還真能鉆進微軟的服務器,嘿嘿!(開個玩笑)

然鵝我幾乎馬上就想到了chrome前不久新增的那個開發者功能:Overrides。這玩意是啥?其實就是字面意思--覆蓋。它可以把一個網站(不限于線上還是本地開發環境的網站)的靜態資源用本地的文件給覆蓋掉,這樣你就可以使代碼臨時按照自己修改后的邏輯運行,以便模擬程序在真實環境下是否正常。此時你想到了什么?沒錯,XSS,跨站腳本攻擊!異曲同工有木有?當然,Overrides 這個覆蓋只是臨時的,它只在我的本機目標瀏覽器且打開F12開發者工具時生效,無需擔心安全問題。事實上在2018年的時候chrome就已經正式向開發者提供了這個功能,只是在最近的更新中又強調了這個功能的可玩性。講真,我其實很早以前就設想過這個功能了,吼吼!(事實上每次更新Chrome之后首次打開F12都能在調試窗口底部看到本次有哪些變更,有時候看看這個玩意還挺有意思,能使你對好玩的新特性了然于胸)。如果我說的不是很明白,沒關系,繼續往下看。

如下圖所示,首先在開發者工具中的sources面板下,點擊切換到 Overrides 二級面板,然后繼續點擊 Overrides 下面的 select folder for overrides。哦不,在這之前我首先得在電腦上找一個地方創建一個干凈的文件夾,就取名叫 chrome-overrides 吧。然后要在點擊?select folder for overrides 時選擇這個干凈的文件(如遇提示,點擊“允許”):

然后重新去到那個js文件中(不要問我是哪個js文件以及怎么找到它,我們一直在討論關于它的話題),這時候你會發現這個js文件竟然變成了可編輯狀態,神奇!

那好,我就把代碼改成我想要的樣子,改完后使用快捷鍵 CTRL+S保存,你又發現此時在左側剛選擇的那個文件夾中出現了我修改的代碼--被保存在本地了。

這時候不要關閉開發者工具,直接刷新當前的 Bing 搜索頁面,稍后開發者工具會自動定位到這個js文件(如果沒有定位回來,那就自己想辦法重新找到它),我們取消剛才在這個文件中打的所有斷點,然后重新打開小冰和她聊天...

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208680.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208680.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208680.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java-網絡通信總結

文章目錄 網絡程序設計基礎局域網與互聯網 網絡協議IP協議TCP/IP 協議端口域套接字 TCP 程序InterAddress 類ServerSocket 類 UDP 程序DatagramPacket 類DatagramSocket 類 網絡程序設計基礎 網絡程序設計編寫的是與其他計算機進行通信的程序。Java 已經將網絡程序所需要的元素…

RK3588平臺開發系列講解(hardware)reference-ril源碼分析

平臺內核版本安卓版本RK3588Linux 5.10Android 12文章目錄 一、reference-ril目錄介紹二、支持的功能三、Android RIL 框架沉淀、分享、成長,讓自己和他人都能有所收獲!?? 一、reference-ril目錄介紹 目錄:3588-android12/hardware/ril/reference-ril

ElementUI 時間選擇器如何限定選擇時間

DatePicker 日期選擇器 | Element Plus 我們如何限定我們的選擇時間呢,比如限定選擇時間為今天之前,或者今天之后的時間? 我們可以使用官方提供的disabled-date來實現 我們通過這個屬性 做一個回調函數,在里面比較我們想要限定的時…

MongoDB數據建模與文檔設計

目錄 1. 文檔數據庫的概念 2. 數據建模的最佳實踐 3. 復雜文檔結構的設計 4. Java代碼實踐 1. 文檔數據庫的概念 MongoDB文檔模型: MongoDB是一種文檔數據庫,它以BSON(Binary JSON)格式存儲數據。文檔是MongoDB中基本的數據單…

#HarmonyOS:基礎語法

基礎語法 定義了聲明式UI描述; 自定義組件; 動態擴展UI元素的能力; 狀態管理 多維度裝填管理機制;父子組件間爺孫組件間全局范圍內傳遞跨設備傳遞只讀的單向傳遞可變的雙向傳遞 渲染控制 UI描述:以聲明式的方式來…

鴻蒙方舟開發框架ArkUI簡介

語雀知識庫地址:語雀HarmonyOS知識庫 飛書知識庫地址:飛書HarmonyOS知識庫 嗨,各位別來無恙吶,我是小白 眾所周知,華為在今年推出了 HarmonyOS 4.0 版本,而在此之前的版本中,HarmonyOS 應用的 …

2024年AI視頻識別技術的6大發展趨勢預測

隨著人工智能技術的快速發展,AI視頻識別技術也將會得到進一步的發展和應用。2023年已經進入尾聲,2024年即將來臨,那么AI視頻識別技術又將迎來怎樣的發展趨勢?本文將對2023年的AI視頻技術做一個簡單的盤點并對2024年的發展趨勢進行…

Advanced Renamer

Advanced Renamer 安裝鏈接 1.前后添加字符 2.字符轉數字,編號整體加減

oracle實驗2023-12-8--觸發器

第十四周實驗 【例】功能要求:增加一新表XS_1,表結構和表XS相同,用來存放從XS表中刪除的記錄。 分析: 1、創建表 xs_1 SQL> create table xs_1 as select * from xs; Table created SQL> truncate table xs_1; Table truncated題目&a…

StoneDB-8.0-V2.2.0 企業版正式發布!性能優化,穩定性提升,持續公測中!

? 11月,StoneDB 新版本如期而至,這一個月來我們的研發同學加班加點,持續迭代:在 2.2.0 版本中,我們針對用戶提出的需求和做出了重量級更新,修復了一些已知和用戶反饋的 Bug,同時對部分代碼進行…

PairLIE論文閱讀筆記

PairLIE論文閱讀筆記 論文為2023CVPR的Learning a Simple Low-light Image Enhancer from Paired Low-light Instances.論文鏈接如下: openaccess.thecvf.com/content/CVPR2023/papers/Fu_Learning_a_Simple_Low-Light_Image_Enhancer_From_Paired_Low-Light_Instan…

Kafka安全性探究:構建可信賴的分布式消息系統

在本文中,將研究Kafka的安全性,探討如何確保數據在傳輸和存儲過程中的完整性、機密性以及授權訪問。通過詳實的示例代碼,全面討論Kafka安全性的各個方面,從加密通信到訪問控制,幫助大家構建一個可信賴的分布式消息系統…

vue3 setup router的使用教程

vue3 setup router的使用教程 文章目錄 vue3 setup router的使用教程1. 安裝2. 使用(創建路由實例)3. 路由跳轉3.1 通過router-link標簽跳轉3.2 通過js代碼跳轉 4. 接收參數4.1 通過query接收參數4.2 通過params接收參數 5. 路由守衛5.1 全局守衛5.2 路由…

阿里云docker加速

文章目錄 一、 阿里云鏡像倉庫配置二、配置加速1. CentOS2. Mac3. Windows注意 一、 阿里云鏡像倉庫配置 1.注冊阿里云賬號,并登陸到阿里云后臺,進入控制臺面板 2.進入控制臺以后,找到左上方的三橫的功能列表按鈕,在彈出來的功能…

智能手機IC

智能手機IC 電子元器件百科 文章目錄 智能手機IC前言一、智能手機IC是什么二、智能手機IC的類別三、智能手機IC應用實例四、智能手機IC作用總結前言 智能手機IC通過相互配合和協同工作,支持智能手機的各種功能和特性,如高速計算、多媒體處理、無線通信、圖形渲染、傳感器數據…

G1 GC基本邏輯

1 MixedGC基本過程 在G1GC中,有兩種主要的垃圾回收過程:Young GC和Mixed GC。這兩者都是為了回收堆內存中的垃圾對象,但是他們關注的區域和工作方式有所不同。 Young GC: Young GC主要負責回收Young Generation(包括…

跟著GPT學設計模式之建造者模式

Builder 模式,中文翻譯為建造者模式或者構建者模式,也有人叫它生成器模式。允許你創建不同口味的對象同時避免構造器污染。當一個對象可能有幾種口味,或者一個對象的創建涉及到很多步驟時會很有用。 現實世界例子:想象一個角色扮…

Vue:用IDEA開發Vue,標簽語法爆紅問題處理

一、場景描述 我在IDEA中,學習Vue課程。 入門學習時,是在html文件中,script引入vue.js文件方式。 此時,在html文件中用v-標簽,爆紅。 二、解決辦法 打開 菜單欄 File - Settings 選擇 Editor - Files Type&#xf…

《每天一個Linux命令》 -- (5)通過sshkey密鑰登錄服務器

歡迎閱讀《每天一個Linux命令》系列!在本篇文章中,將介紹通過密鑰生成,使用公鑰連接管理服務器。 概念 SSH 密鑰是用于安全地訪問遠程服務器的一種方法。SSH 密鑰由一對密鑰組成:公鑰和私鑰。公鑰存儲在遠程服務器上,…

軟件工程復習

一、題型 單項選擇題 20分 填空題 10分 判斷題 10分 簡答題 18分 應用題 12分 綜合題 30分 軟件程序數據文檔 軟件是無形的、不可見的邏輯實體 20世紀60年代末爆發軟件危機 軟件危機是指軟件在開發與維護過程中遇到的一系列嚴重的問題 …