当前位置: 首页 > news >正文

网站建设杭州北京谷歌seo

网站建设杭州,北京谷歌seo,世界工厂采购网官网,做三折页宣传册 网站点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] 前几天在百度搜索的时候,一不小心误点搜索候选词,给我跑到搜狗搜索里面去了,索性花了点时间分析一下这其中的猫腻,不看不知道,一看吓一跳。 在浏览器中打开百度&…

点击上方[全栈开发者社区]右上角[...][设为星标⭐]

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

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

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

测试实验

测试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”)综合判断:

总结

和实验得到的结论一致。

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

多说几句

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

对于搜狗输入法的这骚操作,你怎么看?

本公众号会不定期给大家发福利,包括送书、学习资源等,敬请期待吧!
如果感觉推送内容不错,不妨右下角点个在看转发朋友圈或收藏,感谢支持。
- EOF -想要加入中生代架构群的小伙伴,请添加群合伙人大白的微信
申请备注(姓名+公司+技术方向)才能通过哦!扩展阅读   阿里专家马飞翔:一文读懂架构整洁之道2020-10-16DDD专家张逸:构建领域驱动设计知识体系2020-10-13
京东架构师闫文广:订单系统高可用架构及演变过程2020-10-12
架构师,是否需要写代码?2020-09-18
阿里高级技术专家箫逸:如何画好一张架构图?2020-09-07
大神手把手教你设计秒杀架构模型2020-09-06
阿里巴巴闲鱼架构负责人王树彬:万亿交易规模技术架构实践2020-09-05
阿里高级技术专家张建飞:应用架构分离业务逻辑和技术细节之道2020-08-31
波波老师大解密:如何成为优秀的架构师?2020-06-25
微信支付软件架构重构之旅2020-06-08
一个思维习惯,让你成为架构师2020-06-03
阿里P9专家右军:以终为始的架构设计2020-04-27END     
#架构师必备#点分享点点赞点在看
http://www.wooajung.com/news/28953.html

相关文章:

  • 网站怎么做七牛云加速二级子域名ip地址查询
  • 专业建站公司推荐搜外网 seo教程
  • 武汉百度推广如何把一个关键词优化到首页
  • php快速建网站无经验能做sem专员
  • WordPress资讯站点源码中国经济网人事
  • 搞基怎么做视频网站推文关键词生成器
  • 婚礼策划新乡seo公司
  • 公司网站的专题策划百度地图在线查询
  • 沈阳网站建设工作室推广互联网营销
  • 营销型网站策划建设市场调研分析
  • 网站开发有那些费用南宁seo主管
  • 做网站要用写接口网站推广软件免费
  • 长春最专业的网站建设班级优化大师免费下载
  • 同一服务器建两个wordpress企业seo排名有 名
  • 大连网站制作-中国互联seo关键词优化推广价格
  • 山东做外贸网站的公司湖州网站seo
  • 做网站后的总结网站排名推广推荐
  • 页面设计文档学seo如何入门
  • 制作一个企业网站过程哔哩哔哩推广网站
  • 网站建设的经费预算报告免费推广seo
  • 珠海公司做网站湖南网站建站系统哪家好
  • 免费网站制作app网站免费优化
  • 做视频网站利润如何处理免费制作永久个人网站
  • 微信小程序点餐系统怎么做北京推广优化经理
  • 网站开发哪家好厦门网络推广哪家强
  • 深圳上市公司网站建设海外社交媒体营销
  • 咸阳网站建设多少钱黄页网络的推广网站有哪些
  • 网站开发主要用什么语言亚洲长尾关键词挖掘
  • 沧州英文网站制作迅雷磁力链bt磁力种子
  • 360网站做二维码百度搜索量查询