惟有于技术中才能明得真相

显示标签为“Firefox”的博文。显示所有博文
显示标签为“Firefox”的博文。显示所有博文

将文章发送到QQ空间的Firefox插件

突然想要将不明真相的人所写的不明真相文章保存到QQ空间中,当然也是给不明真相的人看的。由于我不愿意每次拷贝粘贴,多费事啊,所以才要写个Firefox插件。原本并不想写Firefox插件,觉得太复杂,得学不少东西,我首先考虑的是能否利用Vimperator或者GreaseMonkey来完成这样的功能,也曾考虑过Ubiquity,它们都是基于命令行,因为我可能还要对选中的内容做些修改,它们就并不合适。最后也只有硬着头皮去学写Firefox插件,还好,根据网上的例子,拼拼湊湊居然也写出来了,虽然功能很简单,界面也相当原始,最讨厌的是它单独占据了一个工具条,而这个工具条上只有一个Button,没办法,因为我看的例子专门讲的就是如何添加工具条的,也懒得去看其它的更好方式。

这里只讲一下实现原理,由于QQ空间并不提供公开API,但它可以通过发送邮件的方式来发布QQ日志,但邮件发送者和QQ空间的所有者必须是同一个用户名。我启动了很简单的用python写的Web Server,它的唯一目的就是POST请求,有两个参数,subject和content,并将它们通过邮件发送到QQ空间中去。在Firefox插件中就是通过XMLHttpRequest发送请求给这个本地Web Server,当然得填充subject和content参数,subject默认为浏览器中当前文档的标题,content就是选中的内容。

至于插件的代码,等找到一个好的网络硬盘再放上来。

加强Evernote的GreaseMonkey脚本

Evernote是一个非常强大的记笔记的软件,它的强大之处在于可以摘录任意的网页内容。比较遗憾的是,它仅在Windows和Mac下桌面客户端,在Linux下只能使用它的Web客户端,可是它的Web客户端对键盘操作太不友好,比如它的tabindex设计就太不合理,在编辑笔记时,按tab键根本就看不到焦点在哪里。简单地说,如果你使用键盘完全无法操作,即使你使用Vimperator也是如此。它的工具栏以及左侧的笔记本标签不是一个链接,所以按下f键是就不能定位到它们,自然也就无法操作了。忍了好久,终于决定要写个GreaseMonkey脚本改变Evernote,使它对键盘操作更友好。GreaseMonkey是什么呢?简单地说,它就是Firefox的一个插件,它可以动态地改变网页的内容,例如可以用它去掉网页中讨厌的广告。我用GreaseMonkey对Evernote做了如下改变:
  1. 去掉页头和页脚,同时使使中间的内容占据最大的面积。这看起来很简单,只需要将页头和页脚隐藏就可以了,但Evernote使用的是GWT,它使用的绝对高度,所以不仅要隐藏页头和页脚还要调整中间内容区域的高度。
  2. 给工具栏中Button和左侧笔记本标签添加链接,这样就可以用Vimperator定位到它们。
  3. 调整编辑笔记界面中各元素的tabindex,使得很容易用tab键盘导航到要编辑的区域。
脚本可以从这里安装。

终于可以看Youtube了

一直使用Tor+Firefox+FoxyProxy来翻墙,除了速度有点慢,却也还能忍受。无奈Youtube却一直没法访问,每次打开视频都出现错误:“An error occurred, Please try again later.”。通过启用Firebug的跟踪网络请求,可以发现Youtube主要会请求两个地址:*.youtube.com/*和*.ytimg.com/*,但我将这两个地址添加到FoxProxy模板中后仍然不能访问Youtube。

今天闲着无聊参考了这篇文章,我对其中讲的创建绿色Firefox和使用PAC来配置IE代理比较感兴趣,按着这篇文章将IE代理配置好之后,竟意外地发现在IE下可以看Youtube了。我又拿Firefox来试可仍然不行,我想到可能是因为我的Firefox配置的是Socks代理,而在IE下配置的是HTTP代理。于是我将Firefox也改成使用HTTP代理,果然也可以访问Youtube了,看来问题的症结就在Socks代理。后来我又想了下,觉得可能不是Socks代理的问题,而是FoxyProxy的问题,我在Firefox下又装了个AutoProxy插件,使用Socks代理,却可以访问Youtube,证明确实是FoxyProxy的问题。但是我也没有因此换成AutoProxy,因为AutoProxy在自动重定向时不会使用代理,这会导致“Connection Reset”,再次刷新便好,可我心里极为讨厌Connection Reset,也就容忍不了这个小瑕疵。其实这个Bug早就有了,不知道为什么现在还没有修复。

总结一下,要使用Tor+Firefox+FoxyProxy看Youtube,必须使用HTTP代理,这需要启动Privoxy,或者使用Tor+Firefox+AutoProxy,如果你尚能容忍偶尔出现的Connection Reset。