webbrowser 百度列表点击_搜狗用这个骚技术,把百度逼上了绝路,互联网的黑幕太多太多...

52a29d46c00658769c117933db21f3c4.png

误点搜索候选词,给我跑到搜狗搜索里面去了,索性花了点时间分析一下这其中的猫腻,不看不知道,一看吓一跳。

ada9db4a24b1ce11fe5eefa746112025.png 99d4c93f9ac2a9f97eb504a8f0510f45.png 测试实验 测试1:360搜索输入框并没有这个候选词列表,如下图: 1480dcd2b94ba2379361518acec153de.png 结论1:搜狗输入法应该是对当前打开的页面有判断,不是随便哪个网页下面的输入框都会出现这个列表 测试2:在百度页面,除了主要的搜索框以外,其他入口也会出现这个搜索选项列表,下面是站点内搜索输入框的测试: e8303c04a81ad022407aca522787205e.png 结论2:搜狗输入法没有判断当前输入框目标是不是搜索框 测试3:这一次不用域名,换用IP地址来访问百度搜索。我的环境下ping www.baidu.com 解析的IP地址为:220.181.38.149,结果搜狗输入法竟然没有出现这个搜索选项列表: 7c09f9f3c9a19ad90774688e19aeda03.png 结论3:这个搜索选项列表的出现跟网页当前的URL有关 测试4:这一次来把浏览器的进程名字改一下,我这里选择火狐浏览器,将firefox.exe改为firefox1.exe,这个搜索选项列表也没有出现: ec719b95b4c7f0d2d25d4405a3786146.png 结论4:除了URL,对进程名字也有判断,如果不是浏览器进程,也不会触发 最终结论:搜狗输入法检测到用户打开浏览器访问www.baidu.com域名进行搜索时,将弹出搜索选项列表,引导用户点击。 技术分析 如何实现浏览器进程筛选? 第一个问题,搜狗输入法怎么判断当前是不是在浏览器进程中呢?总不能在微信聊天界面也给弹出搜索候选词列表吧? 搜狗输入法核心模块是一个叫SogouPY.ime的文件,这实际上是一个动态链接库文件,这个文件会随你切换输入法时加载到对应的进程中。使用IDA打开分析,发现这个模块内部有很多浏览器进程名字的字符串: 20121db4a18e30b98e868f5a434a66dc.png 你看,国内外主流的和非主流的浏览器基本都被列为了目标。 进一步分析发现,上面这是一个字符串数组,找到了遍历这个数组,挨个进行比较匹配的处理逻辑: 2ab314c826f7024393e680b83e2b7b5a.png 当前页面的URL获取及判断 浏览器进程筛选出来了,还要筛选当前是不是在搜索引擎的页面,接着往下看! 针对不同浏览器使用不同的获取方式,这里以firefox为例,搜狗输入法使用了MSAA(Microsoft Active Accessibility)技术获取到了当前页面URL。 调试发现,如果修改获取到的URL内容,搜狗输入法的搜索选项列表就无法展示出来。 向上追溯可以找到根据不同浏览器进行不同的URL获取方式分发入口: e12ba0c84f4b8406a0d67f7ba385f9c4.png 继续追溯,获取当前浏览器信息后,还要进行是否是搜索引擎域名的判断: 782e477dd46a2c17df3149f67286fc19.png 这个wcsstr函数就是在进行字符串比较了,调试得到wcsstr的参数1:获取到的页面URL,参数2:搜索引擎域名。又是用一个数组在进行存储: 4d5f46b554b79ecc4b9812cf861d30c3.png 百度居然还有个小名,www1.baidu.com,有意思。 我们来挨个试一下这个列表中的搜索引擎: www1.baidu.com: ca28c9e3d5e21cc4a60a944fcbee11e0.png www.soso.com: 这个就不用试了,现在是搜狗自家人。 cn.bing.com: 4c3e5ee7d4ee90814dc0d0819b3da699.png www.google.cn: 57e811021d8bd7d14c24a664f6193991.png so.sowang.com: 8f57f979ccbebff9f3c950b0f58a026e.png www.chinaso.com: 8e3b682d55708de42ca94bc1f62f2f46.png www.youdao.com: 2e0e77425d0fbf60375c81cb611b4982.png www.zhongsou.com: 5fc9c2b81657359e2b4f650623460b29.png 如何打开搜狗搜索页面呢? 当发现是在浏览器进程中访问上面的搜索引擎域名后,就该跳转到搜狗自己的搜索页面了,那它是如何打开的呢?继续往下看! 打开firefox,使用调试器WinDbg 挂载到这个进程,执行这个命令:bp shell32!ShellExecuteW,给函数ShellExecuteW下断点。 接着打开百度首页,切换到搜狗中文输入法,这样使得SoGouPY.ime模块加载到firefox的进程空间中。 然后随意输入字符,出现搜狗搜索选项列表,随便点击一个,触发断点!来看一下参数: 809be8c7a0a9004004d9e9d0861dd499.png 可以看到:这里通过启动当前浏览器(firefox.exe)打开了URL。根据堆栈返回地址,可以进一步往前分析。 IDA反汇编太多,就不截图了。总体来说,判断当前浏览器是否是IE内核,如果是,就通过获取到浏览器IWebBrowser2接口指针,调用接口中的Navigate2方法来打开搜狗搜索页面。如果不是IE内核,直接调用ShellExecuteW打开URL。 那如何判断是不是IE内核呢? 可以看搜狗的做法:获取当前浏览器类别,内部通过进程名、当前焦点窗口的Class名(”Internet Explorer_Server”)综合判断: 7052cd4632f38480b09f6d661bd5bd7f.png 总结 和实验得到的结论一致。 一图胜千言,整个过程就是这个样子的: ce737344a6601afab2102d27f7a6a3e1.png 多说几句 事实上,搜狗干这事已经有好些年了。几年前,百度还把搜狗给告了,搜狗败诉赔钱。不过,输了是输了,就是坚决不改。。。
05f24053c5d9de9dd84cf145d2a0667e.png

       这就是互联网黑幕的冰山一角。

文章来源:科技料

 责任编辑:老鹰

 转载声明:请尊重原创作品,转载不注明来源必将投诉,并曝光

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值