11
6
2010
2

privoxy与火狐智能地址栏两者兼得

privoxy是一款强大的代理调度器,看到muzuiget同学的介绍我就心动了,由于比较忙所以前两天才开始尝试,很快就发现了一个问题:直接在火狐地址栏里输入关键字会转到privoxy的“找不到域名”的错误页。

依我的推测,火狐总是尝试解析用户在地址栏输入的字符串,当解析失败时就尝试添加.com这样的后缀,然后尝试向Google查询,或者返回一个最接近的结果,或者返回Google搜索页面。(所以,我非常讨厌垃圾电信的114广告,使得任何原本不能解析的域名都解析到它的广告页了。)

在使用HTTP代理之后,火狐无法得知域名解析是否成功,因为代理在出错时返回了出错页面。这让我这个重试依赖她的地址栏的火狐迷郁闷了一天,最终(部分地)解决了此问题。

privoxy果然强大,出错页都是可以自定义的,默认这些模板在配置目录的templates目录下,很容易猜到处理域名解析失败的文件是no-such-domain。于是我在改了下其外观的同时,先是加上搜索功能:

<p>
    This is often a temporary failure, so you might just
    <a href="@protocol@@hostport@@path@">try again</a>,
    or <a href="https://encrypted.google.com/search?hl=zh-CN&q=@hostport@">Google @host@</a>.
</p>

这样还不行,不光得点一下,而且只能跳转到Google的搜索页。想到Google有个“手气不错”按钮,于是利用之:

var abar = function(){
  if(document.referrer) return;
  var host = "@host@";
  if(host.indexOf('.')<0 || host.indexOf(' ')>-1){
    document.title = "跳转中...";
    window.location = "https://encrypted.google.com/search?hl=zh-CN&q="+host+"&btnI=1";
  }
};
abar();

将这段代码加到<head>后即可实现输入关键字后自动使用Google的“手气不错”服务跳转到接近的页面,或者是Google搜索页面。

但测试几次后发现,这样还有问题:如果输入中文,将搜索其punycode而不是中文了。比如在地址栏输入“测试”,回车之后会搜索“xn--0zwm56d”,进而跳转到http://www.iana.org/domains/root/db/xn--0zwm56d.html。看来需要用Javascript解punycode了。Google下,在stackoverflow看到了一个实现,还是放弃版权的~只是我没发现怎么才能让privoxy的错误页调用本地的外部Javascript文件,所以直接把代码嵌进去了,这让我这个喜欢代码整洁的人有点不爽。。。

var abar = function(){
  if(document.referrer) return;
  var host = punycode.ToUnicode("@host@");
  if(host.indexOf('.')<0 || host.indexOf(' ')>-1){
    document.title = "跳转中...";
    window.location = "https://encrypted.google.com/search?hl=zh-CN&q="+host+"&btnI=1";
  }
};
abar();

按说这样的设计是跨浏览器的,于是我测试了下Google Chrome,发现其并不买帐,输入看起来不像域名的字符串后,Chrome直接进到搜索页面。。。。还是火狐好啊~~

Category: 火狐 | Tags: javascript 火狐 privoxy
7
22
2010
5

GM 脚本:和WebQQ的滚动标题栏说再见

作为一名中国的Linuxer,我没能像一些幸福者那样摆脱QQ,尽管我一直在见缝插针地推广Gtalk,但收效甚微。在相当长的一段时期内,我还是不得不使用WebQQ。WebQQ有一个特点让我觉得*非常非常*烦人——在来消息后就那么一直一直一直一直地滚动标题栏,似乎有天大的事需要我立即处理否则就性命难保似的。非常非常讨厌。像Gmail或者twitter那样只是在标题栏上加个括号号个数字不行吗?。。。

我再也不要默默忍受下去了!于是,点击GreaseMonkey图标,打开Vim,开始写脚本。

脚本其实很简单,只是我今天才想到可以这样子而已。WebQQ当点击聊天对话框后标题就会变正常。于是,我用Javascript模拟点击。不好监测标题栏的改变,干脆每隔几秒去点一下算了。代码如下:

// ==UserScript==
// @name           quiet WebQQ
// @namespace      http://lilydjwg.is-programmer.com/
// @description    来消息时不要滚动标题栏
// @include        http://web.qq.com/main.shtml?*
// ==/UserScript==

window.clicker = function(){
  var evt = document.createEvent("MouseEvents");
  evt.initMouseEvent("click", true, false, window,
    0, 0, 0, 0, 0, false, false, false, false, 0, null);

  var edits = document.getElementsByClassName('editArea');
  for(var i=0, len=edits.length; i<len; i++){
    edits[i].dispatchEvent(evt);
  }
};

//最多滚动三秒好了
setInterval(window.clicker, 3000);

这里clicker函数需要作为window的一个属性,否则会在页面加载完,脚本执行过后就消失了。


点击此处安装

6
30
2010
1

GM 脚本:转换QQ空间的Javascript链接为普通链接

为什么要访问难用的QQ空间我就不说了,相信各Linuxer能够理解。那为什么要把Javascript链接转换成普通链接呢?因为我喜欢用中键去点链接,让它在新标签页中打开,并且还是在后台打开。这样,在列表页面,我可以用鼠标中键选取自己感兴趣的链接,全部打开,选完好基本上第一篇也就加载好了,不需要等待加载。

无奈QQ空间特别喜欢使用Javascript,以至于我以为QQ空间里的文章都没有可以指向它的URL。后来看到QQ空间支持RSS了,才发现原来每篇文章都是有ID的,像这样可以访问:http://QQ号.qzone.qq.com/blog/文章ID。于是,此问题有解!

Firebug查看下就可以知道文章ID如何获取,然后利用强大的GreaseMonkey写个脚本转换之。思路很简单,但做起来还是遇到了点小问题——貌似在页面加载完毕之前脚本就已经执行过了。怎么办呢?我首先想到了延时,但觉得不太好控制。无意中在GreaseMonkey的右键菜单项中看到了“用户脚本命令”一项,遂Google之,获得此文。于是就用这个了,虽说每次要先去点下这个菜单项有点麻烦,但毕竟我QQ空间看得不是很多,而且这比之前要省事不少。好了,贴代码:

// ==UserScript==
// @name           QQ空间链接转换
// @namespace      http://lilydjwg.is-programmer.com/
// @description    将QQ空间链接从Javascript转换到普通链接
// @include        http://*.qzone.qq.com/*
// ==/UserScript==

var changeLinks = function(links){
  for(var i=0, len = links.length; i<len; i++){
    var link = links[i];
    if(link.href == 'javascript:;'){
      var id = link.getAttribute('onclick').match(/\d+/)[0];
      link.href = 'http://' + window.location.host + '/blog/' + id;
      console.log(link.href);
    }
  }
}

var do_it = function(){
  try{
    var links = document.getElementById('tblog').contentDocument.getElementsByClassName('blog_link');
    changeLinks(links);
    var links = document.getElementsByClassName('tx_fix');
    changeLinks(links);
  }catch(e){
    GM_log(e);
  }
}

GM_registerMenuCommand("转换js链接", do_it, '', '', 'j');

点击此处安装

5
23
2010
10

让火狐使用chrome的更好的Flash Player插件

Linux用户可能都知道,Windows平台的Flash Player是做得最好的,Linux和Mac下的非常耗CPU。而且我发现,我的火狐使用的libflashplayer.so 10.0r45版本的插件,每当上传文件时都会导致整个火狐没有响应,Flash上传控件亦无进度显示,直到上传完成才会恢复。所以,今天向DBank上传一个大文件时,我不得不强行关掉火狐,改用Chrome上传,好让火狐依旧能够浏览网页。令我惊讶的是,Chrome里的Flash上传控件表现得竟然比较正常,虽然CPU使用率还是挺高的,但至少不影响其它操作,而且进度指示也正常。

看来Chrome使用了更好的Flash Player插件。好东西可不能让Chrome独享,我遂进入Chrome的安装目录/opt/google/chrome,果真发现了一个名叫libgcflashplayer.so的so文件。我很高就,二话不说,在我的火狐配置目录下建立plugins目录,然后把这个文件链接过来。重启火狐,在插件列表里发现多了一个版本号为10.1r51的Flash Player插件。再上传测试,一切如Chrome中一样,哦耶!

Category: 火狐 | Tags: 火狐 linux flash
5
23
2010
1

Google开始支持https,遂更新火狐若干选项

 今天Google开始支持https了,所以我也应该做出改变了。

更改搜索引擎

我安装了Organize Search Engines,所以这是很简单的事,只要打开“搜索引擎选项”更改其属性就是了。如果没有安装类似插件,也可以手动更改。是一个XML文件,Linux下在/usr/lib/firefox-addons/searchplugins下找,Windows下在安装文件夹下的searchplugins下找。

更改地址栏搜索使用的搜索引擎

火狐的智能地址栏很强大,在地址栏直接输入关键字时,可能会跳转到相关网站上,也可能使用Google搜索。其实都是使用的谷歌(google.cn)。这个也应该给改了。

打开about:config页面,搜索keyword.URL,然后改掉就可以了。

Category: 火狐 | Tags: 火狐 google
5
6
2010
2

去掉 WebQQ 和 163 邮箱中讨厌的 UI 元素

这两天 WebQQ 的右上角又出现了红色的文字——“参与WebQQ知识问答,100Q币等你拿”。本以为过段时间它会消失的,结果到现在依然还在。

这红色的文字甚是碍眼,于是它享受了和163邮箱里的红字广告和“安全系数低”一样的待遇——被display:none了。下面是设置方法,前提当然是使用配置性强的火狐浏览器了。

首先确定 CSS 选择器。这个打开 Firebug 看吧。要写多点以免把其它网页的某些元素给选中了。也许可以指定当 URL 匹配时才匹配,但我还不会。我使用的选择器是:

#webqq_top > .top_right > .right_option > a[target=_blank]

选好后我使用 Firebug 的插件 Firefinder 确定了下正确性。毕竟我对 CSS 的高级点的选择器还不熟,没太多信心。要测试效果那可是要重启浏览器滴~

然后打开火狐的个性化配置文件<profile_dir>/chrome/userContent.css。这个 CSS 文件会应用于每个网页。(另外还有个userChrome.css文件是针对浏览器自身的。)在此文件中把那个元素隐藏起来就可以了 :-)

/*
 * WebQQ 讨厌的红色调查/问答链接
 */
#webqq_top > .top_right > .right_option > a[target=_blank] {
  display:none!important; /* !important 是必须的,提高该规则的优先级 */
}

在这个文件里面,还有我为屏蔽 163 邮箱里的红字而写的另外两条 CSS 规则:

/* 
 * 网易邮箱 3.5:不要显示“安全系数低”
 */
a#aWelcomeSecurity0 {
  display:none!important;
}
/*
 * 还有广告
 */
div.links > div.chl > a:last-child {
  display:none!important;
}

一点题外话:继发现网易邮箱不能发送纯文本邮件后,今又确认它每次都把 Google Group 的更新邮件给我扔到垃圾邮件里,太过份了。还是 Gmail 好啊!

Category: 火狐 | Tags: 火狐 css 反广告

Mastodon | Theme: Aeros 2.0 by TheBuckmaker.com