Saturday, May 24, 2014

批踢踢實業坊 Browsers 板: Re: [-Fx-] 不喜歡 29+ 的人或許可以考慮 Palemoon

批踢踢實業坊 Browsers 板

// via fulltextrssfeed.com

Re: [-Fx-] 不喜歡 29+ 的人或許可以考慮 Palemoon
http://www.ptt.cc/bbs/Browsers/M.1400943275.A.192.html
May 24th 2014, 15:26


作者mayuyu (‵・ω・′)
看板Browsers
標題Re: [-Fx-] 不喜歡 29+ 的人或許可以考慮 Palemoon
時間Sat May 24 22:54:26 2014
※ 引述《t7yang (t7: 我認為這是一種背叛)》之銘言: : karst10607:我不可能不用adblock plus,只能期待它們做得更好了 除了啟動時adblock plus的js佔用的100MB記憶體消耗, 每個網頁adblock plus會再插入額外的css樣式, 每個iframe會再增加大約4MB的使用量。 mozilla舉了例子,例如 http://techcrunch.com/ 這個網頁, 不開adblock plus的話,Fx使用194MB的記憶體, 開啟adblock plus的話,記憶體消耗會快速增加到417MB。 只是為了隱藏幾個網頁的元素(廣告),竟然必須付出多一倍的代價。 原來擋廣告有一部份原因是為了節省顯示廣告的資源, 結果可能沒省到資源,反而必須付出更多的代價。 mozilla舉的另一個例子,下面這個網頁有上百個iframe, http://ppt.cc/2P8g 我開啟adblock plus的話,Fx會吃掉超過2GB的記憶體, 而且網頁載入速度變得會非常非常慢,Fx最後完全失去回應。 擋廣告除了adblock plus,還有Bluhell Firewall套件, http://ppt.cc/rrVC,據說比較輕量,不會消耗太多資源, 不過我沒有用過。 其他還有非瀏覽器套件類,而是對整個系統所有瀏覽器 和程式都有過濾效果的本地代理去廣告軟體, 例如Ad Muncher、Adguard等等。 Ad Muncher有持續維護和更新的中文規則,但是主程式已經很久沒有更新了, 不能過濾IE11,還有不能過濾https。 Adguard可以過濾IE11也可以過濾https, 可是程式佔用的記憶體太誇張, 主程式要100MB,服務也要用掉100MB,加起來200MB, 沒有比adblock plus省到哪裡去。 比較輕量的方案是用Privoxy或Proxomitron, 原理是一個本地的代理伺服器,瀏覽器的網路連線先進入 Privoxy程式,由Privoxy過濾後才傳出傳入, 大部分可以在廣告下載前就先擋掉,而不是瀏覽器載入後再用css隱藏, 可以真正節省網路流量和瀏覽器使用的記憶體, 而且運作效率非常好,網頁載入完全不會有遲鈍感。 Privoxy和Proxomitron的規則寫法比較複雜, 不過有把adblock plus的規則轉成Privoxy規則的script, 雖然有一部份的規則不能很好的轉成Privoxy用的規則, 不過大致上還可以用,也就是幾乎等於使用adblock plus的擋廣告效果, 可是記憶體使用量遠遠比adblock plus低。 如果覺得改寫規則很麻煩,對岸有一個改寫自Privoxy的擋廣告程式 adbyby http://www.adbyby.com/ 目標是高效率和輕量化,可以在多種系統或路由器上配置。 adbyby可以直接使用adblock plus的規則, 到adblock plus的list網頁上 https://adblockplus.org/zh_TW/subscriptions 把規則的txt抓下來複製貼上取代adbyby資料夾下原本的lazy.txt, 並且把lazy.txt設成唯讀避免程式自動更新規則, 或者是把adhook.ini裡面的 [update] rule=lazy,video 這一行的lazy去掉,讓程式不要自動更新lazy規則。 部分adblock plus規則直接套用會造成誤殺, 不過大部分都能正常過濾, 可以自己定義過濾規則,使用adblock plus的格式寫在user.txt。 adbyby沒有開放程式碼,請小心斟酌使用,此類軟體具有極高度的風險。 Ad Muncher的主程式使用記憶體大概30MB, adbyby則是14~20MB,使用adblock plus的規則的話, 過濾效果和adblock plus一樣,但是開啟上面那個ifrmae超多的測試網頁, Fx使用的記憶體從2GB失去回應,降到正常的400~500MB, 而且載入速度變快很多。 不過這些過濾軟體還有一個缺點,那就是不能過濾https, 可是像youtube有登入帳號的話會強制使用https連線, 不能過濾https就會看到影片廣告。 像這種https過濾,可以使用自動代理設定pac來擋掉, 像下面這樣寫一個pac function FindProxyForURL(url, host) { if (shExpMatch(host, "ads.youtube.com") || shExpMatch(host, "s0.2mdn.net") || shExpMatch(host, "s1.2mdn.net") || shExpMatch(host, "googleads.g.doubleclick.net") || shExpMatch(host, "ad.doubleclick.net") || shExpMatch(url, "http*://www.facebook.com/plugins/like_box.php?*") || shExpMatch(url, "http*://www.facebook.com/plugins/recommendations_bar.php?*")) return "PROXY 8.8.8.8:53"; else return "DIRECT"; } 存成例如adblock.pac,然後在Fx的網路設定選「Proxy自動設定網址」, file:///C:/firefox/profiles/adblock.pac 就可以擋掉youtube的影片廣告。 這個pac的作用是當連到上面這幾個google的廣告伺服器時, 會經過我們設定的代理伺服器,而這個代理伺服器是無效的, 所以不會成功傳回這些廣告,廣告就被我們擋掉啦。 這種故意設定的無效的代理伺服器稱為blackhole proxy, 可以設定為127.0.0.1:3421等等,各種不存在的代理。 上面是仿照webblock設為8.8.8.8:53, 大家知道這是google的DNS伺服器,從各地連都很快, 而且這個伺服器不支持http連線,所以我們的請求會立刻斷線, 很快就傳回斷線訊息,正好符合我們blackhole proxy的需求! 除了利用google的DNS以外,也可以用blackholeproxy.exe 或類似的程式,在本地建立一個blackhole proxy, 傳回一個1x1的透明gif,取代原本的斷線訊息。 用pac比直接改host的好處是寫法彈性比較大, 添加新規則後重起瀏覽器就可以更新作用。 不過像上面這種一個一個匹配規則的寫法,幾個幾百個是沒關係, 如果規則多到幾千個,整個運作效率就會變得很差。 例如把adblock的list直接轉成pac,多達幾千行的匹配規則, 整個載入速度反而會變慢,這時需要比較好的匹配判斷寫法, 可以參考goagent或shadowsocks的pac寫法,運作效能會比較好。 如果使用Privoxy+adblock plus list的話,就不需要幾千行的pac, 因為大部分廣告都會被adblock plus的規則擋掉, 只有少數https的廣告需要另外寫進pac裡,所以不用擔心這個問題。 使用這類軟體還有其他缺點,例如可能ipv6無法正常連線等等, 如果系統記憶體不缺乏的話,其實讓adblock多吃一點記憶體是無妨, 只是運作效率還是有很大的進步空間,只能期待adblock plus的開發團隊 和Mozilla攜手合作,一起改善adblock plus的執行效率和消耗的資源。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.219.36.91 ※ 文章網址: http://www.ptt.cc/bbs/Browsers/M.1400943275.A.192.html
推 rick:不推一個嗎?! XD 05/24 23:11
推 mihonisizumi:好專業 推一個... 05/24 23:24




You are receiving this email because you subscribed to this feed at https://blogtrottr.com

If you no longer wish to receive these emails, you can unsubscribe here:
https://blogtrottr.com/unsubscribe/1m3/ztjvfC

No comments:

Post a Comment