技術專欄 #JavaScript #Hijack

奇優廣告 Qiyou 廣告手法剖析

Allen Own 2014-03-06

歡迎來到我們的技術文章專欄!

今天我們來談談「廣告顯示手法」。不少廣告商為了要增加廣告的曝光以及點擊率,會使用各種手法強迫使用者顯示廣告。例如彈出式視窗、內嵌廣告、強制跳轉等等。但這樣的手法有什麼好提的呢?今天有一個很特別的案例,讓我們來看看一個網站「1kkk.com 極速漫畫」。

奇優廣告 Qiyou 廣告手法剖析 - 1kkk.com 這是一個常見的網路漫畫網站,接著點擊進去漫畫頁面。 奇優廣告 Qiyou 廣告手法剖析 - 1kkk.com 漫畫頁面 網站中充斥著煩人的廣告,並且突然一閃而過 Safari 的「閱讀列表」動畫。怎麼會突然這樣呢?讓我們打開「閱讀列表」一探究竟。

奇優廣告 Qiyou 廣告手法剖析 - Safari 顯示閱讀側邊欄 奇優廣告 Qiyou 廣告手法剖析 - Safari 閱讀列表被放置廣告 URL

打開閱讀列表之後,我們赫然發現裡面被加了非常多廣告的頁面!

可以看以下影片示範:

這是怎麼做到的呢?就是一種利用 JavaScript 控制滑鼠點擊的變形應用。點選「網頁檢閱器」或是「開發者工具」,會看到一段奇怪的 JavaScript 控制滑鼠的點擊行為。

奇優廣告 Qiyou 廣告手法剖析 - 廣告 JavaScript

分析節錄後的 code 如下:

<!DOCTYPE html>
<html>
<head>
  <script>
    var force_add_url_to_readinglist = function (target_url) {
      try {
        var fake_element = document.createElement('a');
        fake_element.setAttribute('href', target_url);
        fake_element.setAttribute('style', 'display:none;');

        // https://developer.mozilla.org/en-US/docs/Web/API/event.initMouseEvent
        var fake_event = document.createEvent('MouseEvents');
        fake_event.initMouseEvent('click', false, false, window, 0, 0, 0, 0, 0, false, false, true, false, 0, null);
        fake_element.dispatchEvent(fake_event);

      } catch ( error ) {
        // nothing.
      }
    };

    var url = 'http://google.com/?' + Math.random().toString().substr(1);
    force_add_url_to_readinglist(url);
  </script>
</head>

<body>

  <h1>Test: FORCE_ADD_URL_TO_READINGLIST</h1>

</body>
</html>

利用「initMouseEvent」模擬滑鼠的點擊,在 URL 上按下 Shift 鍵點擊。在一般瀏覽器中是「開啟新視窗」,在 Safari 中則是「加入閱讀清單」了,因此形成廣告視窗不斷加入閱讀清單的現象。廣告商利用這種手法增加廣告的點擊率,只要瀏覽器沒有安裝阻擋廣告的套件或者是阻擋「彈出式視窗」,你就會成為流量的貢獻者。

經過我們的測試,Internet Explorer、Mozilla Firefox 不會受這類攻擊影響,Google Chrome、Opera 則會被內建的 Pop-up 視窗阻擋功能擋下。但若是直接模擬點擊,則全數瀏覽器都會受影響導向至 URL。雖然這種類型的攻擊不會造成實質上的損失跟危害,但若是結合其他惡意手法將可以造成攻擊。例如透過網站掛碼將使用者導向至惡意網站等等。

若要避免此類型攻擊,有以下幾個建議方案:

  1. 安裝 NoScript 類型套件,僅允許可信賴的網站執行 JavaScript
  2. 開啟「彈出式視窗」阻擋功能,並將網站安全性等級提高。
  3. 安裝 AdBlock 等廣告阻擋套件(但會影響網站營收)
  4. 使用最新版本瀏覽器以策安全

網頁型的攻擊越來越多樣化,除了依賴瀏覽器本身的保護並輔以第三方安全套件之外,更需要使用者本身的安全意識,才能安心暢快的瀏覽網路!