廣告系統和「精準投放」的隱私侵犯

為了避免部分使用者開始感到畏懼,文章開頭應該要來個安定民心的說明。

「TeaCat 會有廣告。」

希望有人的心情已經安定下來了,接著就該說點正事了。


事實上,TeaCat 需要賺錢(好啦,雖然目前還在始春中),但同時又要不能賺得太邪惡。例如說:效仿祖克柏的 Facebook 那奇異的演算法,死逼著你要買廣告不然就向你的能見度說再見。

那不是我期望的,畢竟我也很賭爛那東西。所以基本上 TeaCat 是不會降低什麼能見度來迫使你買廣告(我也不怎麼會寫演算法就是了)。

但是⋯⋯如果廣告本身可以讓更多人看見,那麼其他普通的文章就勢必會被推到下面一點去不是嗎?這種時候沒買廣告的文章,可見度貌似就會被迫下降一點。這問題還沒想到什麼解法。

喔對了,基本上這裡有幾張片段的廣告中心螢幕截圖。

螢幕快照 2018-03-10 上午12.33.19

在上圖中,你可以看見有四項分類(之後可能會更多也不一定),能夠依照不同的推廣方式進行計費。選擇指定方式後,可以勾選要推廣的貼文,還有選取推廣目標。

螢幕快照 2018-03-10 上午12.24.18 1

說到這點就不得不提到「精準投放」了。我不是很喜歡這四個字,因為那就是「侵犯隱私」的代名詞而已。基本上螢幕截圖裡的「精準投放」四個字應該是被換掉啦(畢竟那也不怎麼精準)。

不過在這裡的「精準投放」,簡單說就是讓你在推廣貼文的時候可以指定你想要把廣告丟給誰看,例如說:「有追蹤 PewDiePie 的使用者」、「曾經跟『電腦』廣告有互動的使用者」。

雖然聽起來蠻沒有隱私的,不過實際上都僅限於「站內的行為」。這個意思就是如果今天你跑去瀏覽其它網站,TeaCat 是完全不會追蹤的。

螢幕快照 2018-03-10 上午12.52.38

反面的一個例子就是:在你看完賣鞋網站之後回 Facebook,所有 Facebook 的廣告都會開始賣給你鞋子。既使你已經買了鞋子,穿了一個星期,Facebook 還是會繼續告訴你:「安安,想不想買新鞋啊?」。

這部分主要就是 Facebook 不願意傾聽使用者瀏覽器中的「Do Not Track」(不要追蹤我)選項,所以他能夠知道你的瀏覽器都看了些什麼(雖然不是全部,但可以這樣說)。

這部分稍微看一下可愛的 Firefox 宣傳影片會很有感觸。

Facebook 是個反指標。只要他做什麼,TeaCat 反著做基本上就是走對了(當然有些事情例外啦⋯⋯)。

在不侵犯用戶隱私下,又要能夠確保廣告可以讓大家看得很有興趣、又不會感到無聊⋯⋯看來是個夭壽大的難題。

所以假設我今天想要自殺

未命名-1

當然,我沒有要自殺ww

讓我們來分析一下 Facebook 的這個貼心提醒,你可能以為很貼心,

但是如果你真正暸解想要自殺的人,他們並不會覺得這個提醒很貼心。


這,算是警告?

你發現到這個提示窗,最上面是以「警告」來提醒嗎?

一個真正需要被關心的人,用點勉勵一點的字行不行,例如說:「幹你娘別死啊!」


防自殺中心跟防自殺中心。

我很清楚知道你跟防自殺中心合作,但是出現太多次,會造成反感,

「我做錯什麼事情了嗎?」、「你們合作,所以我會被抓走嗎?」,

婊子拜託喔,可不可以用委婉一點的方式去告訴想自殺的人:「其實我們真的很關心你」?


我已詳細閱讀訊息?

我是在看成人網站嗎,要不要順便填寫「我已滿 18 歲」,

更何況這個勾不打,就不能繼續,感覺 Facebook 到處都在咄咄逼人 ..

Facebook 怎麼做到標記的?

螢幕快照 2015-08-22 下午10.01.37

自從之前解析 Facebook 的 Textarea 後,就發現當你輸入「@人名」的時候,

在送出時其實會變成「@[使用者編號:1:人名]」,此時 FB 會順便記錄你「標記了誰」。


送出的基本欄位

螢幕快照 2015-08-22 下午10.10.55

基本有兩個,一個是文章內容,一個則是用來記錄你標記了誰的陣列,舉例來說:

content 欄位記載了「今天我跟 @[32:1:卡莉絲] 去吃飯欸!」

tags 欄位則記載了32」這個數字,當然如果有多個人,可以變成「32, 33, 34」這樣送出。


伺服器端怎麼處理標記?

tags 可以透過 PHP 中的 explode 功能,將「32, 33, 34」中透過「,符號將字串切成陣列

$Tags = explode(', ', '32, 33, 34');

那文章內容怎麼讓人易讀?

那你可能會想:「文章內容要怎麼辦?」,

很簡單,那就是 Regex

螢幕快照 2015-08-22 下午10.13.33

上面的 Regex 我暫時寫的,但就是這種做法,

所以你知道我們可以透過 tags 取得這個文章「有誰」接下來取得 tags 裡所有人的「名字」

然後就是將那些「標籤」透過 Regex 然後 Replace(替換)成他們的名字,大概是這樣

螢幕快照 2015-08-22 下午10.18.27

接下來就可以如期的輸出你要的內容了:

螢幕快照 2015-08-22 下午10.20.50