Proxomitron之应用展示

Posted on 2007年11月22日 22:21

本文无意成为Proxomitron的入门文章,也不打算将Proxomitron与流行的广告过滤软件进行对比。如标题所言,我将展示Proxomitron的一些基本和特殊的应用,如果你看完本文有亲身一试的冲动,那么本文的目的就达到了。

Proxomitron在2004年因作者不幸逝世(天妒英才)后即停止了更新,然而其前瞻性的设计使得至今仍无出其右者。事实上,广告过滤只是Proxomitron最基本的功能,其本身更象是个小型的编程语言,通过编制规则,我们可以实现比移除广告更有意义的应用。以下为大家展示冲浪过程中的一些常见问题及Proxomitron的解决之道。

过滤效果展示

广告过滤是Proxomitron的最基本功能,但不是本文的重点,以下稍做展示。以 http://news.sina.com.cn/c/2007-11-20/163614349509.shtml 为例,过滤前,广告和无关内容甚至占据了比新闻内容更多的版面:

sina before filtering

过滤后,保留了如上图红框所示的新闻正文及相关新闻部分,加大了新闻正文的阅读面积;移除了所有广告和不重要内容:

sina after filtering

User CSS/User Script展示

User CSS/User Script是opera中的提法,FireFox通过Stylish和Greasemonkey扩展也有类似功能。然而通过Proxomitron,我们可以给IE等任何主流浏览器增加此功能。以下以Google为例,展示添加User Css的效果。添加前: Google before

添加后,界面配色发生变化,并增加了缩略图及按时间筛选搜索结果功能:

Google after

点击Thumbnails后:

Google Thumbnails

Flash延缓下载展示

Flash在美化web世界的同时,也成为很多广告的宿主,并大大降低了浏览器打开页面的速度。以www.jsmcc.com为例,如果我们仅仅是想登陆进去查下账单,大量的flash广告和导航对我们并无用处,过滤前:

jsmcc before

过滤后:所有flash内容被转换为“Toggle Flash”按钮,在我们点击Toggle前,flash内容并没有被下载,因此大大加快了页面加载速度。

jsmcc after

如果需要,我们也可以点击页面底部的flash按钮以显示所有flash。

jsmcc flash

代理调度展示

由于国情,熟练应用代理已经成为在国内冲浪的基本功了,但是你可能已经开始厌倦了频繁的切换代理,然而通过Proxomitron,我们可以将这一切自动化。

以下代码,展示了如何针对不同网站自动使用不同代理:

## use specific proxy   $SET(0=i_proxy:3.) $SETPROXY(myproxy)
## ----------------------------------------------------------------------------
[^/]++.blogspot.com/    $SET(0=i_proxy:3.) $SETPROXY(web.proxy.one:80/cgi-bin/proxy.cgi/)
feeds.gawker.com/       $SET(0=i_proxy:3.) $SETPROXY(web.proxy.two:80/phpproxy/)
feeds.feedburner.com/   $SET(0=i_proxy:3.) $SETPROXY(111.111.111.111:8080)
my.opera.com/           $SET(0=i_proxy:3.) $SETPROXY(127.0.0.1:8567)

伪造Referrer破解防盗链展示

防盗链的一种方法是检查referrer。也许有人还记得几个月前sina和sohu博客的防盗链措施,使得我们在google reader等在线rss阅读器中无法显示博客图片的问题(目前正常了)。凭借Proxomitron超强的http header过滤功能,可以让我们轻松突破此限制。

以下代码可以让浏览器在访问以 pic.hosting.server/directory/pic 开头的链结时,自动修改referrer为pic.hosting.server。

## fake referrer                    $SET(0=f_refer.) $SET(sReferF=*)
## ----------------------------------------------------------------------------
pic.hosting.server/directory/pic    $SET(0=f_refer.) $SET(sReferF=pic.hosting.server)

Cookie修改展示

以下配置可以使google默认使用英语,并显示100个搜索结果。

# Google preferences
# -----------------------------------------------------------------------------

# ID -> shared GUID, Filters -> off, Results -> 100, Country-Region -> en/us
#
# To have Google pages displayed in another language, append ":LD=MY_LANG" just
# after ":NR=100:CR=2".  "MY_LANG" would be "fr" for French, "de" for German,
# etc..  To show e.g. 25 results per page instead of 100, replace "NR=100" with
# "NR=25".
#
# If you change any fields here, you'd need to change the complementary entries
# in the "Google" section of IncludeExclude.ptxt as well.
#
PREF\=ID\=(^3003added)[^:;]+
  (([^;:]+)\8$SET(b=$GET(b)\8):(FF|NR|CR)=[^:;]+)+
  $SET(a=$GET(a)\0\1PREF=ID=3003added0032123:FF=4:NR=100:CR=2$GET(b))$SET(b=)

sourceforge.net的cookie不在我浏览器的cookie允许列表里,偶尔去那里下载东西,总是会根据我的地理位置自动选择日本或台湾的服务器,但实际下载速度很慢。以下代码会默认选择北美的一个服务器。

## fake cookies            $SET(0=f_cookie.) $SET(sCookieF=*)
## ----------------------------------------------------------------------------
# sourceforge.net: set preferred_mirror=internap
[^/]++.sourceforge.net/         $SET(0=f_cookie.) $SET(sCookieF=preferred_mirror=internap)

网页快照

google.cn最近恢复了网页快照功能。在此之前,我们可以使用Proxomitron自行添加此功能。Proxomitron代码如下:

[Patterns]
Name = "Add Cached Links to Google.cn 2007.09.02 [phoenix]"
Active = TRUE
URL = "$TYPE(htm)(www.|)google.cn/"
Bounds = "<a\s*</a>"
Limit = 256
Match = "(*related:\1"*)\2"
Replace = "<a class=fl href="http://www.google.cn/search?q=cache:\1" target=_blank>&#24555;&#29031;</a> - \2"

google cache

Flickr穿墙术

GFW对Flickr的封锁是基于http header中的关键字检测,因此绕过的方法很简单,将http header中的flickr域名替换为数字IP即可,也即将farm1.static.flickr.com替换为68.142.213.135,将farm2.static.flickr.com替换为69.147.123.56。顺便说下为什么不使用hosts文件来实现域名到ip地址的转换,因为使用hosts文件并不会改变http header。Proxomitron的实现代码为:

[HTTP headers]
In = FALSE
Out = TRUE
Key = "Host: Flickr Farm AntiBlock 07.07.09 [phoenix] (out)"
Match = "farm1.static.flickr.com$SET(0=68.142.213.135) | farm2.static.flickr.com$SET(0=69.147.123.56)"
Replace = "\0"

http://www.flickr.com/explore为例,使用规则前,所有链接到farm1或farm2的图片都被屏蔽了:

flickr before

使用规则后,美丽的照片得以重见天日:

flick after

以上只是Proxomitron应用的一小部分,谨以此文希望能吸引更多的人来关注、研究这个如此优秀却被人冷落的软件。无论你是想立刻体验Proxomitron的强大功能,还是想更深入了解Proxomitron的运作原理并自行编写规则,Proxomitronsidki的规则包都是你最佳的起点。