日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

搜狗用这个骚技术,把百度逼上了绝路...

發(fā)布時(shí)間:2025/3/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 搜狗用这个骚技术,把百度逼上了绝路... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

點(diǎn)擊上方[全棧開發(fā)者社區(qū)]右上角[...][設(shè)為星標(biāo)?]

前幾天在百度搜索的時(shí)候,一不小心誤點(diǎn)搜索候選詞,給我跑到搜狗搜索里面去了,索性花了點(diǎn)時(shí)間分析一下這其中的貓膩,不看不知道,一看嚇一跳。

在瀏覽器中打開百度,使用搜狗輸入法輸入關(guān)鍵詞時(shí)將出現(xiàn)搜索候選詞列表:

隨便點(diǎn)擊列表中的某一個(gè)選項(xiàng)后,頁面跳轉(zhuǎn)到了搜狗搜索的結(jié)果頁:

測試實(shí)驗(yàn)

測試1:360搜索輸入框并沒有這個(gè)候選詞列表,如下圖:

結(jié)論1:搜狗輸入法應(yīng)該是對當(dāng)前打開的頁面有判斷,不是隨便哪個(gè)網(wǎng)頁下面的輸入框都會(huì)出現(xiàn)這個(gè)列表

測試2:在百度頁面,除了主要的搜索框以外,其他入口也會(huì)出現(xiàn)這個(gè)搜索選項(xiàng)列表,下面是站點(diǎn)內(nèi)搜索輸入框的測試:

結(jié)論2:搜狗輸入法沒有判斷當(dāng)前輸入框目標(biāo)是不是搜索框

測試3:這一次不用域名,換用IP地址來訪問百度搜索。我的環(huán)境下ping www.baidu.com 解析的IP地址為:220.181.38.149,結(jié)果搜狗輸入法竟然沒有出現(xiàn)這個(gè)搜索選項(xiàng)列表:

結(jié)論3:這個(gè)搜索選項(xiàng)列表的出現(xiàn)跟網(wǎng)頁當(dāng)前的URL有關(guān)

測試4:這一次來把瀏覽器的進(jìn)程名字改一下,我這里選擇火狐瀏覽器,將firefox.exe改為firefox1.exe,這個(gè)搜索選項(xiàng)列表也沒有出現(xiàn):

結(jié)論4:除了URL,對進(jìn)程名字也有判斷,如果不是瀏覽器進(jìn)程,也不會(huì)觸發(fā)

最終結(jié)論:搜狗輸入法檢測到用戶打開瀏覽器訪問www.baidu.com域名進(jìn)行搜索時(shí),將彈出搜索選項(xiàng)列表,引導(dǎo)用戶點(diǎn)擊。

技術(shù)分析

如何實(shí)現(xiàn)瀏覽器進(jìn)程篩選?

第一個(gè)問題,搜狗輸入法怎么判斷當(dāng)前是不是在瀏覽器進(jìn)程中呢?總不能在微信聊天界面也給彈出搜索候選詞列表吧?

搜狗輸入法核心模塊是一個(gè)叫SogouPY.ime的文件,這實(shí)際上是一個(gè)動(dòng)態(tài)鏈接庫文件,這個(gè)文件會(huì)隨你切換輸入法時(shí)加載到對應(yīng)的進(jìn)程中。使用IDA打開分析,發(fā)現(xiàn)這個(gè)模塊內(nèi)部有很多瀏覽器進(jìn)程名字的字符串:

你看,國內(nèi)外主流的和非主流的瀏覽器基本都被列為了目標(biāo)。

進(jìn)一步分析發(fā)現(xiàn),上面這是一個(gè)字符串?dāng)?shù)組,找到了遍歷這個(gè)數(shù)組,挨個(gè)進(jìn)行比較匹配的處理邏輯:

當(dāng)前頁面的URL獲取及判斷

瀏覽器進(jìn)程篩選出來了,還要篩選當(dāng)前是不是在搜索引擎的頁面,接著往下看!

針對不同瀏覽器使用不同的獲取方式,這里以firefox為例,搜狗輸入法使用了MSAA(Microsoft Active Accessibility)技術(shù)獲取到了當(dāng)前頁面URL。

調(diào)試發(fā)現(xiàn),如果修改獲取到的URL內(nèi)容,搜狗輸入法的搜索選項(xiàng)列表就無法展示出來。

向上追溯可以找到根據(jù)不同瀏覽器進(jìn)行不同的URL獲取方式分發(fā)入口:

繼續(xù)追溯,獲取當(dāng)前瀏覽器信息后,還要進(jìn)行是否是搜索引擎域名的判斷:

這個(gè)wcsstr函數(shù)就是在進(jìn)行字符串比較了,調(diào)試得到wcsstr()的參數(shù)1:獲取到的頁面URL,參數(shù)2:搜索引擎域名。又是用一個(gè)數(shù)組在進(jìn)行存儲(chǔ):

百度居然還有個(gè)小名,www1.baidu.com,有意思。

我們來挨個(gè)試一下這個(gè)列表中的搜索引擎:

www1.baidu.com:

www.soso.com:

這個(gè)就不用試了,現(xiàn)在是搜狗自家人。

cn.bing.com:

www.google.cn:

so.sowang.com:

www.chinaso.com:

www.youdao.com:

www.zhongsou.com:

如何打開搜狗搜索頁面呢?

當(dāng)發(fā)現(xiàn)是在瀏覽器進(jìn)程中訪問上面的搜索引擎域名后,就該跳轉(zhuǎn)到搜狗自己的搜索頁面了,那它是如何打開的呢?繼續(xù)往下看!

打開firefox,使用調(diào)試器WinDbg 掛載到這個(gè)進(jìn)程,執(zhí)行這個(gè)命令:bp shell32!ShellExecuteW,給函數(shù)ShellExecuteW下斷點(diǎn)。

接著打開百度首頁,切換到搜狗中文輸入法,這樣使得SoGouPY.ime模塊加載到firefox的進(jìn)程空間中。

然后隨意輸入字符,出現(xiàn)搜狗搜索選項(xiàng)列表,隨便點(diǎn)擊一個(gè),觸發(fā)斷點(diǎn)!來看一下參數(shù):

可以看到:這里通過啟動(dòng)當(dāng)前瀏覽器(firefox.exe)打開了URL。根據(jù)堆棧返回地址,可以進(jìn)一步往前分析。

IDA反匯編太多,就不截圖了。總體來說,判斷當(dāng)前瀏覽器是否是IE內(nèi)核,如果是,就通過獲取到瀏覽器IWebBrowser2接口指針,調(diào)用接口中的Navigate2方法來打開搜狗搜索頁面。如果不是IE內(nèi)核,直接調(diào)用ShellExecuteW打開URL。

那如何判斷是不是IE內(nèi)核呢?

可以看搜狗的做法:獲取當(dāng)前瀏覽器類別,內(nèi)部通過進(jìn)程名、當(dāng)前焦點(diǎn)窗口的Class名(”Internet Explorer_Server”)綜合判斷:

總結(jié)

和實(shí)驗(yàn)得到的結(jié)論一致。

一圖勝千言,整個(gè)過程就是這個(gè)樣子的:

多說幾句

事實(shí)上,搜狗干這事已經(jīng)有好些年了。幾年前,百度還把搜狗給告了,搜狗敗訴賠錢。不過,輸了是輸了,就是堅(jiān)決不改。。。

對于搜狗輸入法的這騷操作,你怎么看?

本公眾號(hào)會(huì)不定期給大家發(fā)福利,包括送書、學(xué)習(xí)資源等,敬請期待吧! 如果感覺推送內(nèi)容不錯(cuò),不妨右下角點(diǎn)個(gè)在看轉(zhuǎn)發(fā)朋友圈或收藏,感謝支持。 - EOF -想要加入中生代架構(gòu)群的小伙伴,請?zhí)砑尤汉匣锶舜蟀椎奈⑿?申請備注(姓名+公司+技術(shù)方向)才能通過哦!擴(kuò)展閱讀? ?阿里專家馬飛翔:一文讀懂架構(gòu)整潔之道2020-10-16DDD專家張逸:構(gòu)建領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)知識(shí)體系2020-10-13 京東架構(gòu)師閆文廣:訂單系統(tǒng)高可用架構(gòu)及演變過程2020-10-12 架構(gòu)師,是否需要寫代碼?2020-09-18 阿里高級技術(shù)專家簫逸:如何畫好一張架構(gòu)圖?2020-09-07 大神手把手教你設(shè)計(jì)秒殺架構(gòu)模型2020-09-06 阿里巴巴閑魚架構(gòu)負(fù)責(zé)人王樹彬:萬億交易規(guī)模技術(shù)架構(gòu)實(shí)踐2020-09-05 阿里高級技術(shù)專家張建飛:應(yīng)用架構(gòu)分離業(yè)務(wù)邏輯和技術(shù)細(xì)節(jié)之道2020-08-31 波波老師大解密:如何成為優(yōu)秀的架構(gòu)師?2020-06-25 微信支付軟件架構(gòu)重構(gòu)之旅2020-06-08 一個(gè)思維習(xí)慣,讓你成為架構(gòu)師2020-06-03 阿里P9專家右軍:以終為始的架構(gòu)設(shè)計(jì)2020-04-27END ? ?? #架構(gòu)師必備#點(diǎn)分享點(diǎn)點(diǎn)贊點(diǎn)在看

總結(jié)

以上是生活随笔為你收集整理的搜狗用这个骚技术,把百度逼上了绝路...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。