有道字典 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都不返回粗暴了点.

posted on 2012-03-17 01:47 lexus 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/03/17/2402831.html

有道字典 Chrome Extension相关推荐

  1. chrome extension develope(1)

    每一个扩展.可安装的WebApp.皮肤,都有一个JSON格式的manifest文件,叫manifest.json,里面提供了重要的信息 . 字段说明 下面的JSON示例了manifest支持的字段,每 ...

  2. Chrome Extension 检查视图(无效)处理方法

    最近闲来无事,简单看了下Chrome扩展的开发,并且开发一个小小的翻译插件(TranslateBao)作为练手,开发细节不详述了,如果有新学习chrome extension开发的新人,可以参考源码, ...

  3. 解决chrome extension无法下载的问题

    由于GFW把谷歌应用商店给屏蔽了,下载chrome扩展变得很困难. 我使用的是版本30.0.1599.101 m. 那么你需要做的第一个处理是,修改host文件,保证chrome应用商店可以登录.如下 ...

  4. Develop chrome extension study

    I spent a day in reading the chrome extension development. Its main point is aboout manifest.json an ...

  5. Chrome Extension Dark Theme

    Chrome Extension & Dark Theme https://chrome.google.com/webstore/detail/eimadpbcbfnmbkopoojfekhn ...

  6. Chrome Extension ContextMenus 创建 适配Manifest3

    Manifest3 之后 ContextMenus也进行了升级. Manifest3配置如下: "background": {"service_worker": ...

  7. Chrome Extension 介绍

    Chrome Extension 介绍 1. Chrome 扩展程序 2. Chrome 扩展的工作方式 3. 扩展程序的组织结构 4. 扩展的安装方式 5. 初步感受 -- 第一个扩展 5.1 创建 ...

  8. Chrome Extension 小试牛刀

    目录 要解决的问题: 解决方案: 操作记录: 进入流程抄送记录,点击[自动浏览]开始操作. 点击自动浏览后,会自动在该Chrome页面上打开多个浏览器页签显示所有未读的记录 软件开发中问题汇总: 怎么 ...

  9. 有道字典主窗口初始化失败、暴风影音停止工作的诡异问题

    不知道之前做了什么操作,对win7系统产生了影响, 暴风影音一启动就报错,提示 停止工作,并且卸载也卸载不了,点击安装路径下的uninst.exe也没反应,用360也卸载不了.于是尝试下载安装包重新安 ...

最新文章

  1. apache并发测试工具ab为什么测不准
  2. JVM-运行时数据区
  3. 前端---JavaScript基础1
  4. 布局管理器android,Android课程---布局管理器之相对布局(一)
  5. encodingaeskey java,消息体签名与加解密-开发者QA
  6. 洛谷P3338:力(FFT)
  7. [Leetcode][第214题][JAVA][最短回文串][KMP][RK]
  8. 手机不用了,如何消除里面的数据和信息而又不被人可以恢复?
  9. pb 执行存储过程带参数_SQL高级知识——存储过程
  10. 【UVA213】Message Decoding(读入技巧+二进制十进制转换)
  11. 收藏、退出一气呵成,2019年机器之心干货教程都在这里了
  12. Java迭代器和lambda的区别,Java使用Lambda表达式遍历Iterator迭代器
  13. 音创ktv点歌系统服务器,音创ktv点歌系统家庭版
  14. 大泡沫.一切从广场协议开始 俞天任 读后总结
  15. 视频号视频如何下载?
  16. 2022年第一季度保险服务数字化跟踪分析
  17. 微软良心伙伴,OneDrive首发支持iOS11的文件App
  18. 一位游戏大厂测试的一些知识分享
  19. GOOGLE Weather API 一套google天气图标
  20. 【小甲鱼C语言】课后笔记第一章第三节——常量和宏定义

热门文章

  1. 怎么在网站中建立一个问答页面(FAQ)?
  2. 牛客15029数泡泡
  3. 关于狄利克雷分布的理解
  4. 王兴的无限游戏和美团的三维文明世界|一点财经
  5. 三位学霸要去 IPO 敲钟:出身姚班,做出 300 亿估值
  6. 固态硬盘寿命不长?!快来看看12个固态硬盘优化技巧
  7. halcon中怎么降低图像亮度_图像亮度调整
  8. C语言中%s,%m.ns 和 %e,%m.ne 的意思
  9. 开发工具---Eclipse 教程Ⅰ
  10. Redis主从复制 AKF