BV1AL 之無所不記

2007-04-27

和廣告糞便奮戰的工具

不管是中國時報、聯合報、東森新聞、雅虎新聞……它們的首頁一點進去
就是一堆廣告糞便硬塞進你的眼睛!

廣告你就正正當當的廣告就好,遍遍弄一堆 flash 在文章旁邊又跳又繞,
甚至還出聲嚇你!造成閱讀上的嚴重干擾,但那些搞廣告的人還以此沾沾
自喜,以為它們幹了多了不起的事,所以我才稱它做「廣告糞便」

看看 google 的廣告,它不會沒事亂跳,沒事弄個噁心的大紅塊在你眼睛
前面又揮又舞的,google 的廣告很小,也不會動,而且還跟你瀏覽的頁
面有相關,不是任意傾倒一堆不相干的糞便給你的眼睛。

這樣的廣告才叫「成功的廣告」。

好吧!既然那些由「豬」設計出來的「骯髒、噁心的廣告糞便」每天潑
灑在我們要經過的網路上,我們只好自力救濟,自己營造一個乾淨的網
路空間。

首先,你要用一個可以由你設定擋廣告糞便的「瀏覽器」,其中最好的
就是 firefox 可以到這裡 http://www.getfirefox.com 抓回去安裝。

再來就是裝上專為 firefox 設計的附加元件(plugin),可以到這裡
https://addons.mozilla.org/en-US/firefox/addon/1865
按「Install Now」安裝這個 Adblock Plus

Adblock 就是 Advertisement Block 的縮寫,也就是專門擋糞便用的。

裝好後選一個例如德國的 adblock 來「訂閱」,接下來就到你常去的網
站,可以發現糞便變少了(但並不是就沒了)一些,這時按下右上角「紅
底白字 ABP」在瀏覽器下半會有一大塊顯示這個網頁有哪些「可供擋掉
的糞便」,你再一個一個按,看哪些是你想要擋的,以免擋到不該擋的


廣告糞便裡面最令人噁心的就是用 flash 呈現的又跳又叫的那種,它更
可惡的是「它不是一張圖」無法直接用 firefox 的擋圖片選項擋掉,還
好這個 adblock plus 會在列表裡列出它是「圖片、式樣表、物件、程式
碼……等等」,其中的「物件」大部份就是最令人厭惡的 flash ,可以
試著按一下「物件」,再按右鍵選「阻擋此項目」再按「確定」就可以
把該物件擋掉。

除了物件,其它像是圖片、程式碼……都可以選起來擋掉,這樣才會有
比較乾淨的閱讀環境。

如果你是用 Linux 之類的作業系統,除了用 adblock plus 之外,還可以
更進一步在 firefox 的目錄下編寫一個叫 hostperm.1 的文字檔,裡面列
出你所討厭的廣告糞便,以補足可能光用 adblock plus 還無法一一清掃
的糞便。

hostperm.1 放在 $HOME/.mozilla/firefox/xxyyzz/ 之下,這個 xxyyzz
是一串亂碼,每台電腦裡可能都不同,不過看一下就找出來了,檔案
的格式如下:

host install 1 update.mozilla.org
host image 2 tw.a2.yimg.com
host script 2 tw.a2.yimg.com
host image 2 act.chinatimes.com.tw
host script 2 act.chinatimes.com.tw
host object 2 act.chinatimes.com.tw
host image 2 ads.chinatimes.com
host script 2 ads.chinatimes.com
host object 2 ads.chinatimes.com
host image 2 ads.chinatimes.com.tw
host script 2 ads.chinatimes.com.tw
host object 2 ads.chinatimes.com.tw
host image 2 act.chinatimes.com
host script 2 act.chinatimes.com
host object 2 act.chinatimes.com
host image 2 tw.a3.yimg.com
host script 2 tw.a3.yimg.com
host image 2 ctxtads.overture.com
host script 2 ctxtads.overture.com
host object 2 ctxtads.overture.com
host cookie 2 ctxtads.overture.com
host document 2 ctxtads.overture.com
host subdocument 2 ctxtads.overture.com
host image 2 g.udn.com
host script 2 g.udn.com
host script 2 ad1.udn.com
host script 2 ad2.udn.com
host script 2 ad3.udn.com
host script 2 ad4.udn.com
host script 2 www.ettoday.com
host object 2 www.ettoday.com
host subdocument 2 www.ettoday.com
host image 2 ad1.ettoday.com
host script 2 ad1.ettoday.com
host image 2 ad2.ettoday.com
host script 2 ad2.ettoday.com
host object 2 ad2.ettoday.com
host image 2 ad3.ettoday.com
host script 2 ad3.ettoday.com
host object 2 ad3.ettoday.com
host image 2 monday.com
host script 2 monday.com
host image 2 ad.hinet.net
host subdocument 2 ad.cyberone.com.tw
host script 2 admanager.cyberone.com.tw
host image 2 e2.download.e2tech.com
host image 2 61.31.202.17
host script 2 61.31.202.17
host object 2 61.31.202.17
host object 2 www.libertytimes.com.tw
host image 2 tw.yimg.com
host script 2 tw.yimg.com
host image 2 overture.com
host script 2 overture.com
host object 2 overture.com
host cookie 2 overture.com
host document 2 overture.com
host subdocument 2 overture.com
host image 2 tw.a1.yimg.com
host script 2 tw.a1.yimg.com

雖然這個檔案的開頭聲稱「它是自動產生,不要編寫它」,但不必
理它。

另外,這裡 http://humanreadable.nfshost.com/howtos/adblocking.htm
有人編了一個 hostperm.zip 可以下載,不過裡面主要是外國的糞便
,而上面我的內容則是我國的廣告糞便。

大家來交流交流,收集更多的糞便源,一一把它清掃乾淨吧!

2007-04-05

用bridge方式來分享網路

我這台電腦有兩片網路卡,原本是用 IP Masquerade 方式來分享網路,不
過這就要額外啟動 dhcpd, 以及啟用 IP Masquerade, 其實也可以用 bridge 方
式直接將網路卡分享出去,這時另外一台可以有自己的 IP(當然條件是
LAN 裡另外有一台 dhcpd 可以提供 IP).

用 bridge 方式比 IP Masquerade 方式簡單,只要幾個動作就完成,不必額
外的 service,如下:
brctl addbr br0; brctl stp br0 off; brctl addif br0 eth0; brctl addif br0 eth1
這樣就把兩片網路卡綁成一個 br0, 再來
ifconfig eth0 down; ifconfig eth1 down
ifconfig eth0 0.0.0.0 up; ifconfig eth1 0.0.0.0 up
好了!

這時 local 這台看是用 dhcp 或 static 給 br0 IP 皆可,與另一台電腦完全不
相關。另外那台則是獨立的,也就是一樣可以對 eth0 用 dhcp 或 static IP
,只是,這時另外那一台電腦如果是微軟 Windows 就令人擔心它會不會
被 LAN 上別台電腦入侵、染病、或它其什麼問題!

擋掉 yahoo 的垃圾廣告

選 RSS 頁面看文章本來就是要避開垃圾廣告,圖個眼不見為清爽,可是某些
RSS 網頁還是會有垃圾不斷向你的眼睛傾倒,所以我們就來「擋廣告」吧!

http://tw.news.yahoo.com/rss/realtime

這個網頁還算乾淨,可是一點下去看新聞,畫面的右邊會有廣告,有廣告本
來不是什麼大問題,但是它偏偏用 flash player 弄個東跳西跳變換畫面的廣
告,這對閱讀人的視線是一種很不愉快的干擾!讓人很不爽!

那麼,我們就來擋擋廣告吧!

那個亂跳又干擾視覺的廣告是來自 cmhtml.overture.com
本來 firefox 裡面有個可以擋廣告圖片的功能,卻因為這個廣告是 flash
player 而不是直接的圖片,所以 firefox 也拿它無可耐何,還好我們可以用
firewall 把它硬擋下來。指令是:

iptables -I INPUT -p tcp -s cmhtml.overture.com -j DROP

這是說所有來自 cmhtml.overture.com 這個垃圾站的東西全給它蒸發掉,
就不會進來干擾我們的視覺了!

可是,後來又發現,當 cmhtml.overture.com 沒辦法倒垃圾給你後,它會
等一段時間(沒算幾分鐘),它會改由
yimg.vip.tpe.yahoo.com 再倒一次垃圾進來給瀏覽器,結果還是會看到那
些垃圾廣告,這樣,就再給它加一項蒸發掉吧!

iptables -I INPUT -p tcp -s yimg.vip.tpe.yahoo.com -j DROP

就不信它還能把垃圾塞得進來!

不過如果是位在 proxy 後面的 LAN 因為所有 access 都是跟 proxy 發生,
所以完全不會出現該丟棄的 cmhtml.overture.com 主機, 因此無法濾除
yahoo 的垃圾廣告, 這時可以改由封包裡的字串來濾除, 語法如下:

iptables -I INPUT -p tcp -m string --algo bm --string "overture.com" -j DROP

這樣的條件不論是否有 proxy 都可以用.

後來想到,那我把 flash player 移除看看,應該就不會有 flash 垃圾廣告
了吧!一試之後,發現 yahoo 真的很賤很賤!當它發現你的電腦沒裝
flash player 時,它會改塞給你一個圖檔的廣告垃圾!
總之 yahoo 就是很賤,比 google 賤太多了!

2007-04-04

關於LiveCD 的 casper

Debian LiveCD 的 booting control 是藉用 Ubuntu 的 casper 來進行的.
而 casper 有一個缺點就是如果開機時指定 toram 它會把 live_media 整層
全都 copy 進 RAM, 事實上只需要 live_media/casper 這一層放進 RAM 即
可, 不必浪費 RAM.
所以改一下 casper 裡的
cp -a ${copyfrom}/* ${copyto} 改成
cp -a ${copyfrom}/casper ${copyto}

另外系統壓縮檔的檔名 filesystem.squashfs 實在太長太囉嗦了也順便改一
下成為 filesys.sqf 以符合 8.3 格式, 特別是在 fat 時會比較好用.
這只需把 casper 裡的 squashfs 全部改成 sqf 即可.

另外, casper 的啟動順序是
/init
/scripts/init-premount
mountroot()
find_lifefs()
mount mount_images_in_directory()
setup_unionfs()
/scripts/casper-bottom
/scripts/init-bottom

如果要指定 bootfrom 的話, 一定要搭配 live-media-timeout=秒 才會生效,
不然它會搜尋 partition 裡第一個有 /casper 的來當 /live_media

經由tunneling bridge 給qemu VM

這次的 Debian(etch) LiveCD 使用 kernel 2.6.18-4-486 所以可以用 kqemu
來加速, 這樣跑 guest OS 感覺就好多了, 也就是同片 LiveCD(or USB
flash) 只要 RAM 跟 CPU夠大夠強, 除了 host OS 之外還可以跑多個
guest OS.

mknod /dev/kqemu c 250 0 -m 666
modprobe kqemu
1. file: /etc/qemu-ifup
#!/bin/bash
ifconfig ${1##/*/} 0.0.0.0 promisc up
brctl addif br0 ${1##/*/}

2. bridge up
ifconfig eth0 0.0.0.0 promisc up
brctl addbr br0
brctl setfd br0 0
brctl sethello br0 0
brctl stp br0 off
brctl addif br0 eth0
#這時 eth0 是沒有 IP 的, 往後 host OS 的 IP 是改用 br0 而非 eth0
可以 ifconfig eth0 xxxxx 或 dhclient eth0 來assign IP

3. qemu start with tap bridge
qemu -cdrom /dev/cdrom -net nic -net tap
(qemu -boot c /dev/hda -net nic -net tap)

4. 在 guest OS 裡也跟 host OS 一樣可以任意 assign IP for eth0

5. 這時 host OS 跟 guest OS 都同處於一個 subnet 下, 而有各自不同的 IP
不用 bridge 的話只能由 host OS 用 IPMasquerade 方式讓 guest OS 連線,
guest OS 無法直接接觸 host OS 所在 subnet.
qemu 的啟動指令兩者都一樣, 只有 /etc/qemu-ifup 不同, 不用 bridge 時是
sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1

6. 取消 bridge
ifconfig br0 down
brctl delif br0 eth0
brctl delbr br0
這時 host OS 也失去 br0 IP, 要重新對 eth0 assign IP, 所以其實不必取消
bridge, 在中止 qemu 後 host OS 仍繼續使用 br0 對外連線.