屏蔽知乎的熱門推送——知乎-我不感興趣 V2.0強勢發布

知乎-我不感興趣

已知知乎有如下惱人的推送功能:

  • 名為「你可能感興趣」和「熱門內容」的內容推送,都來自你不關注的話題
  • 名為「來自話題」的內容推送,其中部分來自你關注的話題

v2.0 的功能相比 v1.2,增加了對於「來自話題」推送的篩選,只呈現給你你關注的話題的內容。

以下是代碼使用的邏輯介紹,希望所有人都能看懂

首先模擬點擊首頁右上角的頭像按鈕,從彈出的菜單的鏈接中獲取你的用戶ID——比如我的是sun-ming-qi-34

然後獲取 /people/{用戶ID}/topics 頁面,從中提取你關注的內容

然後在每次網頁增加新內容的時候,提取所有主頁中的內容卡片,提取上面第一行的關鍵字,判斷其中如果包含「你可能感興趣」或「熱門內容」,就直接隱藏這個卡片。如果包含「來自話題」,就繼續提取後面的話題名稱,判斷如果其中不包含你關注的話題,就隱藏掉這個卡片。

以下是給程序員們看的吐槽部分

知乎的前端真的一坨$#!t,諸位可以看一下我在獲取關注話題部分的吐槽

關注話題頁面沒有使用知乎新的API,所有的數據直接從後端發過來。

你直接發渲染好的網頁也行啊!不行!知乎程序員覺得這不react,發過來之後還得前端渲染。

給前端js用於渲染整個網頁的數據,存在DOM裡面的某個div的attribute裡面,是一個json,啊,這扭曲,啊……

以上都是口味問題,知乎前端喜歡$#!t那就喜歡吧,後面可就是安全問題了。

那個json裡面還附帶了你登錄之後的user token!

也就是說,只要有任意一個惡意代碼被注入到了知乎首頁上(知乎前端這麼爛我覺得這種可能性不小),那他就能獲取到你的登錄token,然後你的賬戶安全性就沒有保障了。


正確的方法是把這個token放進cookie裡面,並且設置為hostOnly(應該是httpOnly),這樣任何頁面js訪問不到,而請求的時候瀏覽器會自動把cookie帶上。事實上知乎也是這麼做的,但不知為什麼,匆忙趕KPI的前端和後端同學在這個頁面糊了一通,一手滑就把user token也順便發過來了。

推薦閱讀:

從現在起,你可以用視頻來分享啦~
有哪些粉絲人數特少,卻寫下含金量極高的答案、未來可能成為大V的知乎用戶?
在知乎上很認真回答卻被摺疊是一種什麼體驗?
對於這個山寨知乎網,真知乎人要怎麼處理?
怎樣理解"1+1等於幾"和"晒晒你的枕邊書"這樣的問題在知乎的出現和作用?

TAG:知乎 | 前端開發 |