围观腾讯云输入法如何回发用户输入

标签: 腾讯云 输入法 用户 | 发表时间:2010-11-11 14:44 | 作者:博客园-首页原创精华区 Albert.Zhou
出处:http://srmeme.com/
SRMeme还知道:
腾讯也就是在非法制社会敢这么做。要是在法制社会一定会被告得倾家荡产。
果然没底线
LiGoogleReader
博客园-首页原创精华区发表于2010-11-11 14:44:00

  太久没有写博客了,这个懒惰的惯性实在是太强大。这两天不说说360和QQ的事情,就显得很out了,但是说来说去却又很鸡毛。另外我怎么没有看到什么弹窗呢,听说好不热闹啊,TM/MSN和MSE用户艰难的表示鸭梨很大。腾讯云输入法回传用户输入数据,在这个节骨眼上被逮到,还真算给力。

 

  大家可以去“腾讯软件中心”试试这个云输入法,http://py.qq.com/web/。但是注意不要输入什么敏感内容,免的有被跨省的风险。百度也有类似的输入法,只是好像没有咋呼叫作云输入法,而且百度还支持手写。谁有兴趣,可以查一下哪家先出的这种输入法?

 

  说正经的,QQ云输入法是怎么工作的呢?很简单,给任意一个网页导入一个脚本文件就可以了。 

<script type="text/javascript" language="JavaScript" src="http://ime.qq.com/fcgi-bin/getjs"></script>

   相当简单。然后呢,取回一个大约42k的文件,叫ime.js。文件是压缩过的,版本号:rev.632(这个很重要,待会儿他们一加班,就拿不到了)

 

  脚本启动后,会后先向服务器报告一下客户端环境,这些从浏览器里获取的参数,不是什么隐私,就是user-agent都比这丰富。

http://ime.qq.com/fcgi-bin/reportfirst?key=d02e5d08310c90ac54d37089fbf3d8ed&version=632&sp=1&sw=1920&sh=1080&dw=1920&dh=512&t=1289458673612

   但是惊喜还是有的,这个报告中包含了一个唯一的key,作用就相当于浏览器session_id。接下来的所有和腾讯服务器的交互,都会带着这个key。

 

  在英文输入状态下,任何字符输入会被云输入法脚本截获,然后向服务器回发如下请求:

http://ime.qq.com/fcgi-bin/getword?key=d02e5d08310c90ac54d37089fbf3d8ed&cb=window.QQWebIME.callback612&q=qq

   注意key!cb是ime.js运行后注册的回调函数,蓝色的qq是我的输入。服务器响因为:

window.QQWebIME.callback612({"is_end":"0","p":"1","pg":"5","q":"qq","ret":"suc","rs":["QQ","亲戚","亲亲","悄悄","轻轻","强求","求求","缺钱","请求","亲切","圈圈","前期","瞧瞧","亲情","全球","气球","齐全","取钱","情趣","千千"],"rscnt":"20","rsn":["2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2"]})

   这时你可以像普通输入法一样进行选词,而且很自然的是,选词后没有服务器请求发生。也就是你的输入内容,都是在浏览器本地完成的,腾讯除了知道你请求了什么候选词列表外,不知道你到底输入了什么。似乎这一切都很美好,也就应该是这么美好才对,是吧?

 

  但是这不是360在隐私问题上掐QQ吗,本来我一直认为腾讯这么大一个上市公司,做事还是该有点底线的。但是360让大家看到了腾讯是没有底线的,真流氓揭露了伪君子。于是我就怀着最大的恶意想,这输入法因该还是有问题的。于是继续使用,突然发现一个异常的服务器请求,如下: 

http://ime.qq.com/fcgi-bin/reportword?key=d02e5d08310c90ac54d37089fbf3d8ed&num=11&xl=danshi,%E4%BD%86%E6%98%AF,0,0,1,0|zhe,%E8%BF%99,0,0,1,0|bushi,%E4%B8%8D%E6%98%AF,0,0,1,0|zaihe,%E5%9C%A8%E5%92%8C,0,0,1,0|tengxun,%E8%85%BE%E8%AE%AF,0,0,1,0|zuoweiyige,%E4%BD%9C%E4%B8%BA%E4%B8%80%E4%B8%AA,0,0,1,0|shangshi,%E4%B8%8A%E5%B8%82,0,0,1,0|gongsi,%E5%85%AC%E5%8F%B8,0,0,1,0|zuoshihaishiyinggai,%E5%81%9A%E4%BA%8B%E8%BF%98%E6%98%AF%E5%BA%94%E8%AF%A5,0,0,1,0|you,%E6%9C%89,0,0,1,0|dixian,%E5%BA%95%E7%BA%BF,0,0,1,0

   把这堆编码过的字符转回来,是: 

http://ime.qq.com/fcgi-bin/reportword?key=d02e5d08310c90ac54d37089fbf3d8ed&num=11&xl=danshi,但是,0,0,1,0|zhe,这,0,0,1,0|bushi,不是,0,0,1,0|zaihe,在和,0,0,1,0|tengxun,腾讯,0,0,1,0|zuoweiyige,作为一个,0,0,1,0|shangshi,上市,0,0,1,0|gongsi,公司,0,0,1,0|zuoshihaishiyinggai,做事还是应该,0,0,1,0|you,有,0,0,1,0|dixian,底线,0,0,1,0

  你这时是不是只想向狗日的企鹅竖起中指呢?

 

  这是不是我没看清楚了,把ime.js仔细看了一下,tmd居然是混淆过的,看得我好累。谜底就在这里了:

ha = function () {
    
var e = [], a = new Image(11), b = false,
    j 
= function () {
        a.onload 
= a.onerror = null;
        b 
= false;
        J 
&& CollectGarbage()
    },
    r 
= function (w) {
        b 
&& j();
        a.src 
= w;
        a.onload 
= a.onerror = j;
        a.complete 
&& j();
        b 
= true
    },
    s 
= "", n = "",
    v 
= function () {
        
return s + "&num=" + e.length + "&xl=" + e.join("|")
    };
    
return {
        a:
        
function () {
            
var w;
            w 
= c.c();
            w 
= o.b("cgiPrx"+ "reportfirst?key=" + o.b("prvKey"+ "&version=632&sp=" + o.b("lnchr"+ "&sw="
                
+ screen.width + "&sh=" + screen.height + "&dw=" + w[0+ "&dh=" + w[1+ "&t=" + Ba;
            r(w);
            s 
= o.b("cgiPrx"+ "reportword?key=" + o.b("prvKey")
        },
        b:
        
function (w) {
            
if (S !== w) {
                
var l = w.length;
                
if (0 !== l) {
                    
for (var h = "", m = "", g = 0; g < l; g++) {
                        
var x = w[g],
                        k 
= encodeURIComponent(x.kanji);
                        e.push(x.spell 
+ "," + k + "," + n);
                        h 
+= x.spell;
                        m 
+= k
                    }
                    
1 < l && e.push(h + "," + m + "," + n);
                    
if (10 < e.length) {
                        r(v()); e 
= []
                    }
                }
            }
        },
        j:
        
function (w) {
            w 
= o.b("cgiPrx"+ "re?key=" + o.b("prvKey"+ "&ec=" + w + "&py=" + B.o() + "&t="
                
+ (+new Date).toString().slice(0-3+ "&v=632";
            r(w)
        },
        k:
        
function () {
            
if (0 !== e.length) {
                r(v());
                e 
= []
            }
        },
        l:
        
function () {
            
var w = 1 === o.b("iptMode");
            n 
= ["0", o.b("iptMode"- 1, w ? o.b("pyMode") : "0", w && 1 !== o.b("pyMode"? o.b("spType") : "0"].join(",")
        }
    }
} ()

  多贴点code,表示这是技术贴,不是5毛贴咯(听说涨7毛了,通胀太厉害了)。答案就在这个ha伪类的函数b里,这个b函数是用来记录输入历史的,但是在这个方法最后,做了一个判断:if (10 < e.length) { r(v()); e = [] }。e是存放输入历史的数组,方法r和v是负责组装和回发数据的,发完后清空了e。

 

  难道收集用户输入内容成了中国国情了?微软拼音2010还真的有这个功能,不过它会明确提示用户,并且只是发回那些用户纠正输入推荐,而且回发的内容也是用户可以很容易看到和编辑的。另外同样是web ime的百度输入法,回发服务器的信息是:

http://olime.baidu.com/py?py=baidu&rn=0&pn=20&t=1289460415974

  注意,这里没有key信息,这不是说百度就不能identify你,因为还有浏览器session_id,但是百度的输入法没有回发用户实际选词,所以是无法在服务期上还原用户输入的。

 

  虽然这是篇技术文章,但是肯定掺杂了莫名的立场,那我现在的立场就是:胁迫用户者不得好死!

作者: birdshome 发表于 2010-11-11 14:44 原文链接

评论: 13 查看评论 发表评论


最新新闻:
· 传腾讯收购漫游谷 天使投资人王峰套现退出(2010-11-11 16:57)
· 愿赌服输 WP7开发团队主管剃光头发(2010-11-11 16:54)
· 阿里巴巴发布第三季度财报 净利润3.661亿元(2010-11-11 16:49)
· 赵本山搜狐独家开通微博 搜狐微博战略全面发力(2010-11-11 16:46)
· 另一个淘宝(2010-11-11 16:39)

编辑推荐:.NET平台上的JavaScript引擎

网站导航:博客园首页  我的园子  新闻  闪存  小组  博问  知识库

The readings, filtered by social network!
阅读科技频道热文。手机请登录移动版

相关 [腾讯云 输入法 用户] 推荐:

围观腾讯云输入法如何回发用户输入

- Albert.Zhou - 中文热文榜|最佳
腾讯也就是在非法制社会敢这么做. 要是在法制社会一定会被告得倾家荡产. FlyChina 在 GoogleReader 说. Li 在 GoogleReader 说. 还有 Kyo, 推荐,查看全部 124 个推荐. 博客园-首页原创精华区发表于2010-11-11 14:44:00.   太久没有写博客了,这个懒惰的惯性实在是太强大.

搜狗输入法收集用户隐私信息,未屏蔽爬虫

- - Solidot
搜狗移动输入法被发现将用户隐私数据如图片、视频、音频上传到云端,由于网站安全设计问题,它没有屏蔽搜索爬虫的索引,导致许多用户的私人消息泄露,安全研究人员从搜狗的pinyin.cn网站上发现了身份证、裸体照,甚至检举信. 目前pinyin.cn已经关闭了外部访问. 但问题是为什么搜狗要保存这些个人隐私数据.

浅谈“HTAP” - 云+社区 - 腾讯云

- -
HTAP是近些年来比较火的一个概念,下面就聊聊其前世今生及技术特点. 根据数据的使用特征,可简单做如下划分. 在选择技术平台之前,我们需要做好这样的定位. OLTP是事件驱动、面向应用的,也称为面向交易的处理过程. 其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作的快速响应.

Google发布云输入法

- 遇见你就死机 - cnBeta.COM
据谷歌黑板报报道,Google发布云输入法,支持23国语言. 在世界上的其他一些国家,人们也在用类似中文拼音输入法的方式来输入当地语言,比如说印地语和阿拉伯语. 云输入法(在线拼音输入法、Transliteration),指的是用户可以使用这个API轻松地在自己的网站的任何输入框中添加云输入法.

输入法面板 kimtoy 0.4

- zincorchid - I, KDE
和 kimpanel plasma 部件是同一种类型,本身不是输入法,只是个输入法面板,支持 fcitx/ibus/scim. 目前只支持 sogou 输入法的主题导入(*.ssf). kimtoy-ibus-panel 已用 C 重写,不再依赖 python 和 pygtk,只需要 libibus-1 即可使用,至此全套 ibus 输入法可不依赖 GTK 使用.

手机输入法盘点

- 小明 - 互联网的那点事
尽管SoundCloud CEO Alexander Ljung称:“语音是比视频更大的市场. ”但是就目前来看,传统的手机输入法还大有用武之地. 事实上,输入法大战正如火如荼,各种产品层出不穷,而互联网巨头们也都纷纷基于自身的优势推出了各自的输入法. 小编对当下主流的几款输入法简单做个盘点,到底哪个输入法更给力.

使用 Tensorflow 构建 CNN 进行情感分析实践 - 腾讯云社区 - 腾讯云

- -
Web挖掘中的情感分析类问题,其实是一个分类问题. 而CNN可以用来处理分类任务,就是在最终的softmax函数计算属于各个类的概率,并归属到概率最大的类. 本次实验参照的是Kim Yoon的论文Convolutional Neural Networks for Sentence Classification.

腾讯陈军:腾讯云平台与技术实践分享

- Sepher - 服务器运维与网站架构|Linux运维|互联网研究
[第三届中国云计算大会]2011年最受瞩目的IT业界盛会——第三届中国云计算大会于2011年5月18-20日在北京国家会议中心隆重举行. 本次大会由中国电子学会主办,中国电子学会云计算专家委员会、中国云计算技术与产业联盟承办,CSDN网站、《程序员》杂志和电子工业出版社协办. 5月20日,在第三节云计算大会分论坛二“云计算平台与应用实践”中,腾讯网络平台部技术总监陈军带来了主题为《腾讯云平台与技术实践》精彩演讲.

腾讯云 2019:一席之地与一段距离

- - 雷锋网
中国第二大、亚太地区第四大的云服务商腾讯云正逐渐露出峥嵘. 2019 年 12 月 19 日,腾讯云行业方案总经理郑立鹏在微博上透露,腾讯云年度收入在 2019 年 Q3 突破 100 亿. 这看起来是个不错的成绩——要知道,2018 年腾讯云全年的总营收为 97 亿. 此外,腾讯云业务营收在 2019 年 Q3 财报中被单独公开披露:腾讯云在该季度收入 47 亿元人民币,同比增长 80%.