Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >绝了!搜狗输入法这骚操作!

绝了!搜狗输入法这骚操作!

作者头像
杰哥的IT之旅
发布于 2020-09-28 01:53:52
发布于 2020-09-28 01:53:52
1.4K0
举报
文章被收录于专栏:GitHub专栏GitHub专栏

转自:编程技术宇宙

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

在浏览器中打开百度,使用搜狗输入法输入关键词时将出现搜索候选词列表:

随便点击列表中的某一个选项后,页面跳转到了搜狗搜索的结果页:

测试实验

测试1:360搜索输入框并没有这个候选词列表,如下图:

结论1:搜狗输入法应该是对当前打开的页面有判断,不是随便哪个网页下面的输入框都会出现这个列表

测试2:在百度页面,除了主要的搜索框以外,其他入口也会出现这个搜索选项列表,下面是站点内搜索输入框的测试:

结论2:搜狗输入法没有判断当前输入框目标是不是搜索框

测试3:这一次不用域名,换用IP地址来访问百度搜索。我的环境下ping www.baidu.com 解析的IP地址为:220.181.38.149,结果搜狗输入法竟然没有出现这个搜索选项列表:

结论3:这个搜索选项列表的出现跟网页当前的URL有关

测试4:这一次来把浏览器的进程名字改一下,我这里选择火狐浏览器,将firefox.exe改为firefox1.exe,这个搜索选项列表也没有出现:

结论4:除了URL,对进程名字也有判断,如果不是浏览器进程,也不会触发

最终结论:搜狗输入法检测到用户打开浏览器访问www.baidu.com域名进行搜索时,将弹出搜索选项列表,引导用户点击。

技术分析

如何实现浏览器进程筛选?

第一个问题,搜狗输入法怎么判断当前是不是在浏览器进程中呢?总不能在微信聊天界面也给弹出搜索候选词列表吧?

搜狗输入法核心模块是一个叫SogouPY.ime的文件,这实际上是一个动态链接库文件,这个文件会随你切换输入法时加载到对应的进程中。使用IDA打开分析,发现这个模块内部有很多浏览器进程名字的字符串:

你看,国内外主流的和非主流的浏览器基本都被列为了目标。

进一步分析发现,上面这是一个字符串数组,找到了遍历这个数组,挨个进行比较匹配的处理逻辑:

当前页面的URL获取及判断

浏览器进程筛选出来了,还要筛选当前是不是在搜索引擎的页面,接着往下看!

针对不同浏览器使用不同的获取方式,这里以firefox为例,搜狗输入法使用了MSAA(Microsoft Active Accessibility)技术获取到了当前页面URL。

调试发现,如果修改获取到的URL内容,搜狗输入法的搜索选项列表就无法展示出来。

向上追溯可以找到根据不同浏览器进行不同的URL获取方式分发入口:

继续追溯,获取当前浏览器信息后,还要进行是否是搜索引擎域名的判断:

这个wcsstr函数就是在进行字符串比较了,调试得到wcsstr()的参数1:获取到的页面URL,参数2:搜索引擎域名。又是用一个数组在进行存储:

百度居然还有个小名,www1.baidu.com,有意思。

我们来挨个试一下这个列表中的搜索引擎:

www1.baidu.com:

www.soso.com:

这个就不用试了,现在是搜狗自家人。

cn.bing.com:

www.google.cn:

so.sowang.com:

www.chinaso.com:

www.youdao.com:

www.zhongsou.com:

如何打开搜狗搜索页面呢?

当发现是在浏览器进程中访问上面的搜索引擎域名后,就该跳转到搜狗自己的搜索页面了,那它是如何打开的呢?继续往下看!

打开firefox,使用调试器WinDbg 挂载到这个进程,执行这个命令:bp shell32!ShellExecuteW,给函数ShellExecuteW下断点。

接着打开百度首页,切换到搜狗中文输入法,这样使得SoGouPY.ime模块加载到firefox的进程空间中。

然后随意输入字符,出现搜狗搜索选项列表,随便点击一个,触发断点!来看一下参数:

可以看到:这里通过启动当前浏览器(firefox.exe)打开了URL。根据堆栈返回地址,可以进一步往前分析。

IDA反汇编太多,就不截图了。总体来说,判断当前浏览器是否是IE内核,如果是,就通过获取到浏览器IWebBrowser2接口指针,调用接口中的Navigate2方法来打开搜狗搜索页面。如果不是IE内核,直接调用ShellExecuteW打开URL。

那如何判断是不是IE内核呢?

可以看搜狗的做法:获取当前浏览器类别,内部通过进程名、当前焦点窗口的Class名(”Internet Explorer_Server”)综合判断:

总结

和实验得到的结论一致。

一图胜千言,整个过程就是这个样子的:

多说几句

事实上,搜狗干这事已经有好些年了。几年前,百度还把搜狗给告了,搜狗败诉赔钱。不过,输了是输了,就是坚决不改。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杰哥的IT之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
搜狗输入法斗图表情评测体系搭建
前言   搜狗输入法的表情斗图功能,以其上屏的快速便捷、内容的丰富多彩、更新的及时高效等等,圈了一大波忠实的粉丝,该功能自上线后,获得了不少用户的青睐,同时也收获了很多的用户建议和问题反馈,我们极其重
用户5521279
2021/02/12
1.1K0
搜狗输入法斗图表情评测体系搭建
Linux Ubuntu 20.04 LTS 解决无法输入中文 输入法问题
简单概述一下,Linux输入法可选的有ibus和fcitx等 目前绝大部分Linux输入法都基于fcitx 包括谷歌中文输入法、搜狗输入法、百度输入法等
猫头虎
2024/04/07
2.4K0
Kali Linux安装搜狗输入法(只需5步)
请注意,本文编写于 1255 天前,最后修改于 783 天前,其中某些信息可能已经过时。
Xcnte
2021/12/14
10.9K0
Kali Linux安装搜狗输入法(只需5步)
输入法,能成为AI的新入口吗?
在今年8月a16z发布的AI全球应用榜单上,排名前十名的web端流量产品,ChatGPT和Claude两个基础模型分列第一和第四;第三和第九是AI搜索领军产品Perplixity和Liner;Character.ai和JannitorAI两个陪伴型Chatbot分列第二和第六。
小腾资讯君
2024/11/27
1740
百度输入法每天语音被调度3.35亿次!又一个AI赋能的样板
8月1日,百度发布了2018年二季度财报。财报显示,百度二季度营收260亿元人民币,同比增长32%,净利润64亿人民币,同比增长45%,移动端收入占比77%,高于去年同期的72%。当然,作为公司核心战略,AI依然是百度财报最高频出现的元素。不论是成为收入增长新驱动的信息流业务,还是给百度编织未来的DuerOS和Apollo,均与AI直接相关。
罗超频道
2018/08/16
6270
百度输入法每天语音被调度3.35亿次!又一个AI赋能的样板
搜狗财报:Q1亏损扩大、AI打响突围
财报显示,搜狗一季度的总收入为2.573亿美元,同比增长2%,净亏损3160万美元。在此之前,彭博一致市场预期显示,搜狗Q1营收预计将达到2.51亿元美元,同比下降0.8%。搜狗一季度的营收高于其预期。
刘旷
2020/05/20
3780
搜狗财报:Q1亏损扩大、AI打响突围
话说输入法——各输入法简要测评
输入法,一个说小不小,说大也不大的东西。往小了说,这不是一个很大的市场,愿意折腾输入法的人也只是千里挑一;然而往大了说,这又是一个与我们的电脑与手机朝夕相伴的不可缺少的软件,其质量与效率直接关系到我们使用电脑和手机的体验与效率。于是本着折腾的原则,自己也试着对一些常见的输入法进行了一些个人的测评。
idealclover
2018/10/31
3.9K0
在Ubuntu Kylin14.04上安装搜狗输入法
安装好Ubuntu Kylin14.04 64位后好像没有中文输入法,怎么切换(Ctrl+Shift或者空格),但是就是输入的都是英文。
克虏伯
2019/04/15
1.1K0
在Ubuntu Kylin14.04上安装搜狗输入法
Linux中文输入法-搜狗输入法安装方法
我们从/etc/os-release文件中获取openSUSE系统的版本号,直接执行下面命令添加M17N源:
字母哥博客
2020/09/23
8.5K0
搜狗输入法导入Google词库bug
记得大学的时候都是使用的紫光拼音输入法,后来听说搜狗拼音不错,于是大四的时候使用了一下搜狗输入法,当时感觉还不错。不久Google也推出了自己的输入法,由于Google词库与帐户绑定的特点,非常适合与我白天在公司使用电脑,晚上回家在家使用电脑的情况,于是就换成了Google拼音输入法。最近又听朋友说搜狗拼音输入法做的很好很强大了,而且也可以将词库与帐号绑定,于是决定试一试。
深蓝studyzy
2022/06/16
4650
搜狗输入法导入Google词库bug
IDEA使用搜狗输入法变为繁体如何办???
原因:idea中适用的快捷键和你输入法快捷键冲突:具体是crtl+shift+f
张哥编程
2024/12/19
3240
IDEA使用搜狗输入法变为繁体如何办???
ubuntu安装搜狗输入法
点击:输入法linux版本进行下载 然后如下步骤安装: 1.添加中文语言支持打开 系统设置——区域和语言——管理已安装的语言——在“语言”tab下——点击“添加或删除语言”
川川菜鸟
2021/10/18
9850
ubuntu安装中文输入法搜狗_中文输入法怎么调出来
首先,要安装中文输入法,必须要保证系统上有 fcitx。fcitx是一个以 GPL 方式发布的输入法框架,安装 fcitx 后可以为操作系统的桌面环境提供一个灵活的输入方案,解决在 GNU/Linux 环境下安装中文输入法的问题。
全栈程序员站长
2022/11/10
2.9K0
ubuntu安装中文输入法搜狗_中文输入法怎么调出来
输入法如何duang一下?百度是这样“加特效”的
©原创2015-02-28罗超 duang,成龙给中文输入法出了个难题,大家都在duang、duang、duang时,就是没有一个输入法可以打出“上成下龙”那个奇葩的新字。这个与文字相关的“输入法事件”被电商网站、杜蕾斯们搭上顺风车时,输入法却缺席了,我在朋友圈问,百度输入法和搜狗输入法,谁会率先支持duang?虽然搜狗输入法昨日在官方微博上表示搜狗输入法很快就能打出duang,可duang的热度已降温搜狗输入法仍未实现这一功能。而百度手机输入法却有所动作,不论用安卓系统还是iOS,在输入框中输入“加特效”
罗超频道
2018/04/28
2.1K0
输入法如何duang一下?百度是这样“加特效”的
搜狗输入法的创新五字诀:『软件即服务』
PC互联网时代,中国有哪些软件是完全原创而不是Copy2 China的?我第一个想到的是搜狗输入法。Windows自带了多种中文输入法,双拼、标准、五笔…选择很多,却都不好用,需要花很大精力学习,社会上甚至还有输入培训班,会打字是一门了不起的技能。这一切在2006年戛然而止:搜狗输入法面世。 搜狗输入法改变了中文输入方式 搜狗输入法与过往基于本地词库的输入法最大不同在于,它并不是基于规则映射拼音和汉字,而是基于统计学规律,用时髦的话说叫做大数据,这些数据来自于众包+云端词库。搜狗在2004年上线搜索之后具备
罗超频道
2018/04/28
1.1K0
ubuntu18.04安装搜狗输入法
然后去搜狗输入法官网:https://pinyin.sogou.com/linux/
kevinfaith
2018/09/18
10.5K0
ubuntu18.04安装搜狗输入法
用 RIME 换掉搜狗输入法
从大一开始用 Ubuntu 16.04 LTS 作为主力系统开始,我一直用着搜狗输入法的 Linux 版本来输入中文,一直以来都相安无事,除了偶尔搜狗会崩溃一下之外。最近在网上发现 有人把 Deepin 的 wine QQ 打包整合了一个脚本,可以实现在 Deepin 以外的 Linux 发行版上安装 QQ 等 Windows 软件,看到之初有点小激动,从此我也在 Ubuntu 用上了心心念念的 TIM,尝试了一段时间,体验几乎完美!
zgq354
2023/10/18
4970
用 RIME 换掉搜狗输入法
你的搜狗输入法账户无法同步了?恐怕是代理设置的问题吧~
最近一阵子发现自己一直用的搜狗输入法变成万年不变的默认皮肤了,去查看了一下搜狗输入法的个人中心,个人中心提示同步失败,私以为是搜狗服务器的问题,过了几天发现还是一样。
可定
2020/05/12
14.5K0
iPhone 6S会带来新一代输入法吗?
iOS每一次升级,App开发者都会如临大敌、严阵以待,以求App能够适配最新版iOS,各类应用纷纷较量谁是最先兼容iOS新版本的。9月16日被视作iOS史上最重要更新的iOS 9正式推送,各家App纷纷宣布对其实现了兼容,输入法领域拔得头筹的是百度输入法,其在9月15日便发布了V6.0版本适配了正式版iOS9,比搜狗输入法等竞品领先一步。 输入法为什么如此重视iOS? 对于中文用户而言,输入法是否好用很大程度决定了使用手机的整体体验,iPhone本身是一部体验上乘的智能手机,不过它自带的输入法却一直让用户懊
罗超频道
2018/04/28
9110
iPhone 6S会带来新一代输入法吗?
业火输入法全角单双引号的实现
业火输入法在全角符号的模式下,转换全角引号(包括‘、’、“、”、『、「、」、』)一直都有问题,比如说没有办法输入右引号等,这篇文章介绍一下业火输入法如何处理这些个问题。
扰乱
2023/10/30
5960
业火输入法全角单双引号的实现
推荐阅读
相关推荐
搜狗输入法斗图表情评测体系搭建
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档