OpenX vs. Ad-Blocker – 如何逃過廣告封阻

0

Posted by Victorlau | Posted in IT Sleepless | Posted on 07-Feb-2010

在使用OpenX來管理網站的廣告後, 無可避免的一個問題, 就是播放的廣告會被某些瀏覽器(Firefox, Chrome等)的某些Ad-Blocker (廣告封阻, 廣告阻擋, 廣告攔截, 等等), 今天就要介紹一下這個問題的解決方法.

首先題外話幾句. 作為一個普通上網用戶, 自然不希望看到那些令人眼花的廣告, 同時也加重了網頁的loading; 但作為網站開發者, 廣告系統的正常運作卻是生存命脈. 這是一種雙重角色的矛盾. 但作為一個有專業精神的IT民工, 只能硬著頭皮在這些Ad-Blocker的阻攔下殺出一條生路來.

言歸正傳, OpenX 分發廣告是通過一個簡單的應答機制來實現的. 它使用了一個叫spcjs.php 的腳本來接收zone_id和banner_id等參數,  默認路徑為是http://your-ad-server-domain.com/www/delivery/spcjs.php (2.6之前是叫ajs.php). 而作為一個著名的Ad Server, OpenX 注定要成為各大Ad-Blocker的主要打擊對象. 這些Ad-Blocker的工作方式一般都是通過對HTTP Request的URL Pattern 進行過濾來實現廣告封阻. 例如Firefox世界里很出名的AddBlock Plus就是通過這種過濾器的方式實現. 本文下面的例子也是針對AddBlock Plus的.

AddBlock Plus里可以訂閱不同的過濾列表, 其中Easy-US-List 是預設訂閱的, 這里以這個List作為一個簡單例子. 在Easy-US-List里, 可以找到一堆關於OpenX的封阻, 其中重要而又比較容易忽略的是:

  1. spcjs.php (這個很絕, 直接把它封了…)
  2. */www/delivery/* (這個明擺著是針對OpenX的了)
  3. http://ads.* (所以千萬不要把你的Ad Server Domain設成ads.yourdomain.com 啦)
  4. spc.php (這個很隱蔽, 因為這是spcjs.php 處理完分析後, 播放廣告的文件, 沒有在最開始的HTML代碼里出現)

主要是上面這4點, 其他的針對banner_id, zone_id, openx* 的過濾就很容易發現和處理.

好, 找到原因, 跟著就是找出解決方法. 既然Ad Blocker是通過URL Pattern來過濾, 也就是說, 只要我們把上面幾點的URL都改了不就可以了嗎? 沒錯, 就是這樣.

這里強烈不建議大家去修改OpenX 的PHP源代碼, 難度太高, 也沒必要. 比較簡單做法是通過URL Rewrite 來把上面的URL都改了, 例如:

  1. 建立一個forward 規則把spcjs-ox.php 轉到spcjs.php (URL還是spcjs-ox.php), 在Web Server里設一下就OK.
  2. 把*/www/delivery/* 分發路徑改成*/www/d/* (delivery 是一個比較adblocker sensitive的詞). 這個在OpenX的config 文件里找出來修改, 默認是: /your-openx-installation-path/var/your-config-file.
  3. 不要用http://ads.* 開頭的sub-doamin 啦, 可以換成http://a.your-domain.com 之類的.
  4. 改掉spc.php的名字, 這個也是在config 文件里找出來修改.

對於其他的過濾情況, 可以相應地針對著來修改, 方法類似, 這里就不多囉嗦啦.

至此, 你的OpenX應該就可以逃過AdBlock Plus 的Easy-US-List的封阻啦. 如果你想連其他的什麼China-List 也做掉, 方法也是類似的, 不過前提你要把AdBlock Plus安裝了, 然後查看這些List的規則, 所謂知己知彼, 才能百戰百勝. 不過, 這種基於過濾規則的Ad Blocker, 好處是可以不停地加入新的規則, 例如有個用戶把我們新改的*/www/d/* 也加進過濾器(慶幸大部分的普通用戶都只是用默認的過濾規則), 那我們就得再改成別的URL, 這是一個沒有終點的苦旅, 如果我們動不動就去修改OpenX的代碼, 這就太沖動了.

以上方法只能在self-host 的OpenX Server才有效, 因為你需要Web Server和OpenX的配置管理權限. 至於最近也很受觀迎的Google Ad Manager, 自然也是大受各大Ad Blocker的觀迎, 只是Google好像不太會讓我們自己來修改配置吧(OpenX 再加一分!).

Post to Twitter Post to Plurk Post to Delicious Post to Digg Post to Facebook Post to StumbleUpon

Related posts:

  1. Single Page Call – 實現OpenX的極速狂奔
  2. OpenX廣告在IE6下無法顯示的原因和解決方法
  3. Lucene火併GSA – 由技術的選擇說起
  4. Larry Ellison失敗的偉大藍圖
  5. Google與中國市場的愛情

Tags: , ,

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

Write a comment