有道字典 Chrome Extension
zzzhc's Blog
有道字典 Chrome Extension
Dec 12th, 2011
有道字典的chrome extension会把鼠标下的词log到console里,debug的时候让人烦, 看了下code, 直接用的console.log, 发布的时候也没注释掉. 跑到~/Library/Application Support/Google/Chrome/Default/Extensions/nbndkplefmmhmcmfjanjaakhhkiegogd/1.0_0下把content.js,background.html里的console.log都注释掉,安静了。
大概看了下extension code, 发现两个有意思的地方:
- 打包的时候连.svn目录都没放过
1 2 3 4 5 6 7 8 9 10 11$ svn info Path: . URL: https://dev.corp.youdao.com/svn/outfox/products/desktop/incubator/mac/GetWordExtension/Chrome/extension Repository Root: https://dev.corp.youdao.com/svn/outfox Repository UUID: 36a6777f-fe3c-0410-890b-904d6044f29d Revision: 285097 Node Kind: directory Schedule: normal Last Changed Author: huangdx Last Changed Rev: 277738 Last Changed Date: 2011-09-13 14:00:17 +0800 (二, 13 9 2011)
- 取词的时候调用的是本机有道字典app提供的http接口
1 2 3 4 5 6 7//in background.html function SendResult(word, pos, type) { var s = new XMLHttpRequest; s.open("GET", "http://localhost:32445/getword?word=" + word + "&pos=" + pos + "&type=" + type, true); //console.log('sending...') s.send() };
用curl试了下,可以发送请求,但响应为空
1 2 3 4 5 6 7 8 9 10 11 12 13 14$ curl -vv 'http://localhost:32445/getword?word=for%20suppliers&pos=8&type=0' * About to connect() to localhost port 32445 (#0) * Trying ::1... Connection refused * Trying 127.0.0.1... connected * Connected to localhost (127.0.0.1) port 32445 (#0) > GET /getword?word=for%20suppliers&pos=8&type=0 HTTP/1.1 > User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5 > Host: localhost:32445 > Accept: */* > * Empty reply from server * Connection #0 to host localhost left intact curl: (52) Empty reply from server * Closing connection #0
word, pos, type这三个参数只要少一个有道字典就会crash
这次http request只是一个trigger, 有道字典会向dict.youdao.com发一个request:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56$ curl -vv 'http://dict.youdao.com/fsearch?q=for%20suppliers&pos=8&keyfrom=mac.scrtrans.0&id=E33EC7736AFDCABB184051CD3757CA73&vendor=cidian.youdao.com&client=macdict' * About to connect() to dict.youdao.com port 80 (#0) * Trying 61.135.218.32... connected * Connected to dict.youdao.com (61.135.218.32) port 80 (#0) > GET /fsearch?q=for%20suppliers&pos=8&keyfrom=mac.scrtrans.0&id=E33EC7736AFDCABB184051CD3757CA73&vendor=cidian.youdao.com&client=macdict HTTP/1.1 > User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5 > Host: dict.youdao.com > Accept: */* > < HTTP/1.1 200 OK < Server: nginx < Date: Tue, 13 Dec 2011 07:10:55 GMT < Content-Type: text/xml; charset=utf-8 < Connection: keep-alive < Cache-Control: private < Content-Language: en-US < Set-Cookie: OUTFOX_SEARCH_USER_ID=-447518408@123.117.56.163; domain=.youdao.com; expires=Thu, 05-Dec-2041 07:10:55 GMT < Set-Cookie: JSESSIONID=abcdjNBcCWPPK4igOq2qt; domain=youdao.com; path=/ < Vary: Accept-Encoding < Content-Length: 1477 < <?xml version="1.0" encoding="UTF-8"?> <yodaodict> <return-phrase><![CDATA[suppliers]]></return-phrase> <phonetic-symbol>sə'plaiəz</phonetic-symbol> <dictcn-speach>suppliers</dictcn-speach> <custom-translation> <type>ec</type> <translation><content><![CDATA[n. 供应商(supplier的复数)]]></content></translation> </custom-translation> <yodao-web-dict> <web-translation> <key><![CDATA[Suppliers]]></key> <trans><value><![CDATA[供应商]]></value></trans> <trans><value><![CDATA[供货商]]></value></trans> <trans><value><![CDATA[数据库]]></value></trans> </web-translation> <web-translation> <key><![CDATA[Overview Suppliers]]></key> <trans><value><![CDATA[概览]]></value></trans> <trans><value><![CDATA[供应商]]></value></trans> </web-translation> <web-translation> <key><![CDATA[select suppliers]]></key> <trans><value><![CDATA[挑选供应商]]></value></trans> </web-translation> </yodao-web-dict> <recommend><![CDATA[supplier]]></recommend> <sexp>0</sexp> </yodaodict> * Connection #0 to host dict.youdao.com left intact * Closing connection #0
拿到结果后由有道字典显示一个提示窗口.
这种实现方式倒也算精巧, 其他app要用这个http接口也比较方便,只是32445端口连个http 200都不返回粗暴了点.
转载于:https://www.cnblogs.com/lexus/archive/2012/03/17/2402831.html
有道字典 Chrome Extension相关推荐
- chrome extension develope(1)
每一个扩展.可安装的WebApp.皮肤,都有一个JSON格式的manifest文件,叫manifest.json,里面提供了重要的信息 . 字段说明 下面的JSON示例了manifest支持的字段,每 ...
- Chrome Extension 检查视图(无效)处理方法
最近闲来无事,简单看了下Chrome扩展的开发,并且开发一个小小的翻译插件(TranslateBao)作为练手,开发细节不详述了,如果有新学习chrome extension开发的新人,可以参考源码, ...
- 解决chrome extension无法下载的问题
由于GFW把谷歌应用商店给屏蔽了,下载chrome扩展变得很困难. 我使用的是版本30.0.1599.101 m. 那么你需要做的第一个处理是,修改host文件,保证chrome应用商店可以登录.如下 ...
- Develop chrome extension study
I spent a day in reading the chrome extension development. Its main point is aboout manifest.json an ...
- Chrome Extension Dark Theme
Chrome Extension & Dark Theme https://chrome.google.com/webstore/detail/eimadpbcbfnmbkopoojfekhn ...
- Chrome Extension ContextMenus 创建 适配Manifest3
Manifest3 之后 ContextMenus也进行了升级. Manifest3配置如下: "background": {"service_worker": ...
- Chrome Extension 介绍
Chrome Extension 介绍 1. Chrome 扩展程序 2. Chrome 扩展的工作方式 3. 扩展程序的组织结构 4. 扩展的安装方式 5. 初步感受 -- 第一个扩展 5.1 创建 ...
- Chrome Extension 小试牛刀
目录 要解决的问题: 解决方案: 操作记录: 进入流程抄送记录,点击[自动浏览]开始操作. 点击自动浏览后,会自动在该Chrome页面上打开多个浏览器页签显示所有未读的记录 软件开发中问题汇总: 怎么 ...
- 有道字典主窗口初始化失败、暴风影音停止工作的诡异问题
不知道之前做了什么操作,对win7系统产生了影响, 暴风影音一启动就报错,提示 停止工作,并且卸载也卸载不了,点击安装路径下的uninst.exe也没反应,用360也卸载不了.于是尝试下载安装包重新安 ...
最新文章
- apache并发测试工具ab为什么测不准
- JVM-运行时数据区
- 前端---JavaScript基础1
- 布局管理器android,Android课程---布局管理器之相对布局(一)
- encodingaeskey java,消息体签名与加解密-开发者QA
- 洛谷P3338:力(FFT)
- [Leetcode][第214题][JAVA][最短回文串][KMP][RK]
- 手机不用了,如何消除里面的数据和信息而又不被人可以恢复?
- pb 执行存储过程带参数_SQL高级知识——存储过程
- 【UVA213】Message Decoding(读入技巧+二进制十进制转换)
- 收藏、退出一气呵成,2019年机器之心干货教程都在这里了
- Java迭代器和lambda的区别,Java使用Lambda表达式遍历Iterator迭代器
- 音创ktv点歌系统服务器,音创ktv点歌系统家庭版
- 大泡沫.一切从广场协议开始 俞天任 读后总结
- 视频号视频如何下载?
- 2022年第一季度保险服务数字化跟踪分析
- 微软良心伙伴,OneDrive首发支持iOS11的文件App
- 一位游戏大厂测试的一些知识分享
- GOOGLE Weather API 一套google天气图标
- 【小甲鱼C语言】课后笔记第一章第三节——常量和宏定义