WordPress Docker 優化: 添加 PhpRedis、Memcached 支持

環境:
Docker + WordPress, 用官方默認的 Apache 驅動, 不是 fpm.

因為 PhpRedis 不屬於 PHP 內置的模塊, 而 PHP 內置了一個 Predis 又太慢太蛋疼, 所以要重新構建 Docker Image 為 PHP 添加 Redis 模塊支持.

為了添加這個 Redis 模塊, 我特別做了一些搜索, 發現網上清一色的全部是 本教程只適合 fpm 版本云云. 我個人認為這是一種迷思啊, 因為不論是用 php-fpm 還是 apache + php-mod 應該都和 php 的插件沒有太多關係吧. 所以雖然上面環境說的是 wordpress-apache , 用 wordpress-fpm 的朋友照著這個教程做也沒差.

構建 Docker Image

mkdir /tmp/build
cd /tmp/build
# 添加 Memcached 支持
cat > /tmp/build/Dockerfile << EOF
FROM wordpress:latest
RUN apt-get update
RUN apt-get install -y libz-dev libmemcached-dev && \
    pecl install memcached && \ 
    docker-php-ext-enable memcached && \
RUN rm -rf /tmp/pear && \
    apt-get clean
EOF
# 添加 Redis 支持
cat > /tmp/build/Dockerfile << EOF
FROM wordpress:latest
RUN pecl install -o -f redis && \
    docker-php-ext-enable redis
RUN rm -rf /tmp/pear
EOF

關於 Memcached vs Redis… 這個網上都可以搜到吧. 我的意見是, 兩者都能給一個 WordPress 小博客提供相當不錯的 Object Cache. 效能的話, Redis 略勝一籌, 但是要求專門開一個 Redis 容器. 而 Memcached 安裝好之後直接用就可以了. 所以還是根據服務器的配置來選吧.

docker build -t wordpress_extended .
閱讀全文 WordPress Docker 優化: 添加 PhpRedis、Memcached 支持

Ban 掉來自中國 IP 的流量

前言

隨著我博客來自大陸的流量越來越多, 我逐漸開始有一點擔心. 雖然我已經屏蔽了國內搜索引擎的 Spider, 但是來源於大陸的流量還是和來源於美帝的不相上下. 從各個地方 Ping 的結果也不樂觀, 大陸地區已經出現隨機丟包的現象, 而且很嚴重. 我暫時沒有搞清楚這是針對我的域名還是針對 Cloudflare CDN 的流量.

目前正值建襠百年特別時期, 地鐵站的安檢人員都肉眼可見的增加了數量, 更別說在線管控了. 更加誇張的是, 著名反動博主編程隨想都在5月中旬被消失 ( 我為此傷心了真的非常久 ), 論技術, 我肯定都配不上給編程隨想提鞋, 況且我在用 BugPress 作為博客程序; 要是誰哪天看我不爽來搞我, 我肯定分分鐘去吃國家飯.

然而從我的角度來說, 我肯定不會因為局勢 intense 而乖乖閉嘴: 要我閉嘴不如先去叫我死. 但是隨著我的成長和文章數量的增多, 日後我肯定要浪費大量時間在安全防範上, 而且我目前肉身還在牆內, 物理安全得不到保障.

綜上所述, 雖然我真的很不捨得放棄將近一半的流量, 我還是得這麼做, 幹掉所有來自大陸的流量 (不包括香港, 以及本來就不包括台灣) . 這樣, 至少在我肉身在牆內的階段應該不會有人來找我麻煩 — 這只是一個戰略讓步, 一旦我肉身過牆, 我會立即取消這個設定.

閱讀全文 Ban 掉來自中國 IP 的流量

例行安全檢測 — 加固WordPress

因為我正在使用 cloudflare 提供的內網穿透服務, 相當於整個服務器只對外開放了 Web 服務, 所以我基本是圍繞 Web 服務在加固. 如果讀者的 wordpress 跑在租用的 VPS 上, 極有可能同時開放了數據庫、SSH、FTP 服務, 對這些的防護不在本文討論範圍內.

本文主要是參考了這篇官方教程. 如果你英文好的話, 不妨自己讀一讀這篇教程, 寫的很詳細, 基本每一個改動都有解釋.

檢測手段

https://github.com/wpscanteam/wpscan

下載 wpscan, 然後在終端敲入

wpscan --url https://example.com

可能需要關閉 CF 防火牆.

刪除無關文件

cd /www/wordpress

# 刪除根目錄下無關文件
rm readme.html
rm license.txt

# 遞歸刪除插件、主題 Readme
find . -name readme.txt -type f -print -exec rm -rf {} \;
閱讀全文 例行安全檢測 — 加固WordPress

WordPress + Cloudflared + V2ray 異地組網並隱藏流量

目標

  • 異地組網, 遠程訪問家中環境
  • 結合海外 VPS 翻牆 ( 不在此篇討論 )
  • 使用 V2Ray TLS 加密流量
  • 將 TLS 流量隱藏在正常的 HTTPS 流量中達到混淆目的
  • 使用 Cloudflare 的內網穿透服務, 達到防探測目的 ( 服務器直接和 CF 溝通, 沒有端口暴露 )
  • 使用 Cloudflare 的 CDN 服務, 達到防牆、加速作用

如果你並不是想要做異地組網, 而是想要在 VPS 上跑 (Nginx/Caddy/Apache) + WP + V2Ray, 那麼你其實用不著這麼複雜. 你只需要看這篇文章就可以了.

(這篇博文主要是討論一個沒多少人做過的方案的可行性, 所以你會看到後面還有一大通廢話; 作為教程本文是不合格的, 如果想要尋找教程請出門右轉谷歌搜索. )

網絡拓墣示意圖
閱讀全文 WordPress + Cloudflared + V2ray 異地組網並隱藏流量

為 jsProxy 應用 Material 界面

如果你還不知道的話, jsProxy 是一個基於瀏覽器端實現的網頁代理. 用人話說, 就是你可以把 jsProxy 當作 “翻牆瀏覽器” 使用. 而和雜七雜八的 “翻牆瀏覽器” 不同, jsProxy 不紀錄用戶數據, 而且無需安裝, 隨時可以使用.

因為可以部署在 Cloudflare Workers ( 從雲端運行腳本 ) 的緣故, jsProxy 一直被視為一個很好的白嫖途徑. 不過其他都好, 就是介面有點… 怎麼說呢, 太過復古. 而且 jsProxy 已經長期無人維護, pr 攢了一大堆無人理會, 導致一大堆鏈接無法打開, 默認搜索引擎是谷歌也導致了每次使用它總會被谷歌以機器人的理由擋下來, 體驗非常不友好.

不是我太挑剔, 但是原本的介面真的是有夠醜的

本著 DIY 的精神, 我稍微改動了一下 jsProxy 的代碼, 然後用 MDUI 庫給他前端做了一個美化. 因為我並沒有怎麼學過前端知識, 所以整個網頁現在基本就是一堆 tag soup. 不過總算跑起來了, 而且看著還不賴.

現在 jsProxy 的樣式看起來好多了.

自我感覺良好 ing

得益於 MDUI, 這個網站現在還跟上了 “響應性設計” 的概念, 儘管我完全不知道響應性設計到底是什麼鬼東西. 我修改了默認搜索引擎, 把它改成了 Duckduckgo, 我還刪掉了網站圖標改成了 fontawesome 的字體優化加載速度, 添加了暗黑模式… ( 為什麼要加省略號, 已經沒有可列的了啊 ) 總之, 現在的 jsProxy 絕對比原來的 jsProxy 要好用不只一點.

如果想要體驗的話, 你可以在點擊下方鏈接前往我自己用 CF Worker 搭建的服務, 或者 Clone Git 源碼.

鏈接: jsproxy.justin.education
源碼: git.io/jsproxy-material

雙卡齊發? Nvidia Computex2021 發佈會總結

Nvidia 在這次發佈會上主要發佈了兩張卡, 據說都有針對挖礦的限制, 具體情況如何我暫時表示蒙在鼓裡. 發佈會的鏈接在這裡, 你也可以通過下面的嵌入式播放器觀看.

廢話不多說. 大家最關心的發佈日期、價格、規格已經整理好寫在下面.

RTX 3080 Ti
RTX 3070 Ti
型號RTX 3080 TiRTX 3070 TI
顯存12G8G
價格(美刀)$1199$599
價格(RMB)¥7638¥3816
發布時間(美東)June 3rdJune 10th
發布時間(北京)6月4號 0:006月11號 0:00

至於搶卡的問題, 我們就都當吃瓜群眾好了. 據說 NVIDIA 官方已經承諾, 會在下次發售時添加機器人驗證限制腳本的使用. 到底有沒有真的改善, “市場價格” 又如何, 在顯卡發售之後我會繼續圍繞發文.

WebRTC IP 洩露漏洞

記得惡維事件嗎? 六扇門跨省追捕中學生然後把他們扔進監獄言行拷打一直電到陰毛燒焦為止.
據說有一些完全無辜的網友被攪進這件事情, 就是因為他們曾經瀏覽過或者編輯過惡維, 警方在惡維的數據庫裡查到了他們的 IP.

能上惡維一定是掛了 VPN 的啊? 啊對, WebRTC Leak 就是 Leak 了 VPN 背後的 IP, WebRTC Leak 的原理和 PoC 可以在這裡找到.

這是因為惡維“很走心”的在站點上掛了一個 JS, 利用了 WebRTC 漏洞從而繞過代理紀錄了瀏覽者的真實 IP.

惡俗掛掉了 (舊的), 但是誰都不能說什麼時候某個網站也會掛掉, 帶一大批網友下水 (品蔥, 比方說) . 畢竟正常人誰會注意網站加載了那個 JS, 有沒有用 WebRTC. 說不定 JS 還是加密的, 根本防不勝防.

你可以在 這個網站 檢測自己有沒有中招.

解決方案

手機端如果是使用 Chrome , 除了掛 V2 之類的代理其他根本就無解, Firefox 還可以自己更改設置, Chrome 已經不允許了

PC端的話可以使用插件, 可以改設置 ( 我推薦使用插件的啦 ), 比如 Firefox 就有這款插件.

當然, 電腦手機都可以使用 Tor 瀏覽器來規避這種風險; 我的建議是, 就不要使用手機瞎幾把瀏覽境外反動勢力集團網站.

如果手頭暫時沒有 Tor, 只是想要簡單的瀏覽網頁 ( 沒有登錄等需求 ), 可以使用網頁代理來訪問網站. 你也可以使用我手頭的這個 JSProxy 反向代理, 親測可以防止 WebRTC leak. ( 因為原作者太長時間沒有更新, 這個 JSProxy 好像不能 Pass Cloudflare CDN 保護, 訪問品蔥等網站會一直卡在 JS 詢問頁面上. 所以如果有 Tor 還是用 Tor 吧.

Chrome is bad! 切換到 Firefox

在我的 Macbook 上使用了幾個月 Chrome 下來, 發現使用期間電池損耗非常之快. 在 Google 上搜索之後, 結果幾乎清一色指向了 Keystone, 一個 Chrome 的更新程式. 根據 Chrome is bad, Keystone 將自己植入系統服務, 瘋狂吃資源, 一度讓 WindowServer CPU 佔用達到 80%. Google 聲稱 Keystone 是用來更新 Chrome 的, 我對此存疑. 更新一個程式需要吃 CPU 吃到 80%? 真當我腦癱啊?

然而要改變習慣也不是那麼容易, 我就很不習慣 Safari 和 Edge 的操作介面. 況且我習慣只有一套密碼, 要切換瀏覽器, 就得先把舊瀏覽器上的密碼通通刪除.

提醒: 如果你也想要轉移到 Firefox, 請不要著急著刪除 Chrome, 在轉移插件和密碼時它還用得到.

Chromium 使用報告

為了解決這個問題, 我先嘗試 Chrome 係的 Chromium ( 通過 Brew 安裝 ), 寄希望於它是一個開源軟件, 不會附帶垃圾代碼.

結果我徹徹底底的錯了. Chromium 一不支持 MacArm, ( 而 Chrome 則是支持的 ), 而來佔用比 Chrome 還要高三到五倍, 最離譜的是, 我用 Brew 卸載掉了它居然還在佔我 CPU. 這怎麼忍?

通過 Brew 卸載之後, Chromium 居然還佔用 將近 100% 的 CPU

除了高佔用以外, Chromium 還移除了大部分 Google API. 也就是說, 谷歌翻譯、密碼同步、谷歌帳號等功能全部無法使用. 從這點就可以看出來, 作為一個商業巨頭的 Google, 本質上就是一個財閥, 其第一要務就是盈利.

失望之餘, 我徹底刪除了 Chromium.

轉移並清除 Chrome 保存的資料

匯出密碼

要跳出 Chrome 的舒適圈, 將密碼轉移到 Firefox 上是一個好主意. 然而我現在正在使用 Keepass ( 一個開源密碼管理器 ), 絕大部分密碼並不儲存在瀏覽器裡. 因此我只要登錄到 Google 帳號, 刪除掉儲存在裡面的密碼就可以了.

要先匯出你的密碼, 或是關閉自動保存, 點擊這個鏈接, 登入 Google 帳戶, 點擊 “Export”.

Export 出來的東西可以導入 Keepass, 也可以導入 Firefox. 我個人偏向於前者.

匯出書籤

在 Chrome 中打開這個鏈接, 點擊右上角的三個點然後點擊 “匯出”.

我個人並沒有選擇從 Chrome 匯出書籤, 我覺得切換瀏覽器也是一個小小的新開始, 那些老的書籤大部分我一生都不會再看一次, 不如直接刪掉好了.

我沒有保留除了 Chrome 書籤欄裡的其他任何東西, 而且我其實也基本不使用書籤功能.

匯出插件

遺憾的是, Chrome 並沒有為插件提供一鍵匯出功能. 在 Chrome 種打開這個鏈接, 手動轉移插件吧. 一些插件提供了到匯出配置功能, 會讓整個操作簡單很多.

刪除 Chrome 相關的所有資料

之前的操作只是匯出了這些資料而已, 接下來要做的是完全刪除這些資料.
Chrome 官方提供了一個一鍵 GoodBye 的功能, 我個人感覺還是非常有良心的.

點擊這個鏈接, 確定你已經匯出了所有這些資料之後, 點擊刪除.

這會刪除你帳戶中關於 Chrome 的所有資料.

刪除帳戶活動

以上操作已經完全抹除了你和 Chrome 的關係了, 但是能不能再進一步呢?

瀏覽紀錄除了被儲存在 Chrome 裡面, 還儲存在 Google 活動裡面, 作為 Google 帳戶資料的一部分. 要完全清除, 我們還要執行下面的操作.

光刪除這些並沒有完全刪除你在 Google 留下的痕跡. 接下來需要轉到 Google – 我的活動 來刪除雲端的瀏覽紀錄.

請點擊這個鏈接, 點擊 刪除 – 不限時間 – 全部勾選 – 刪除.

如果以後都不想要 Google 紀錄你的活動, 可以如圖關閉這三個選項.

要刪除其他服務, 請點擊這個鏈接, 自行選擇並刪除.

我個人感覺, 在一一刪除這些資料時, 我處在一種擔憂與爽感並存的狀態. 然而, 在完全刪除之後, 又釋然了. 隱私與自由有的時後和大麻一樣, 都是一種一旦沾上就再也不想失去的東西, 只不過前者是完全無害的.

安裝 Firefox

Firefox 作為一個開源軟件, 而且有大名鼎鼎的 Mozilla 基金會為它背書. Firefox 的主題、插件市場都不下 Chrome AppStore, 也支持同步設置和密碼. 除了手機上的 Firefox 比較不堪以外 (近年來已經大大改善!) , 好像它一直都是 Chrome 的一個絕佳替代方案.

要安裝 Firefox, 可以使用內建的 Brew 包管理器. 順便一提, Firefox 已經支持 M1 晶片.

brew install --cask firefox

成功!

安裝完畢之後, 整個過程基本就完成了! 享受這個新的瀏覽器吧!

一鍵讓內容農場從搜索結果 Fuck Off

我相信每個網民或多或少都有過這樣的經歷: 你翻出來, 抱著探索更加優質互聯網的期望, 開始了第一次 Google 之旅.

但是很不幸的是, 你的 Google 搜索結果第一頁居然塞滿了比牆內還垃圾數倍的內容農場, 先不提一塌糊塗的格式, 除了標題整個文章和你要搜索的內容就沒有一點相干. 更加奇葩的是, 這個網站還有綠色的背景, 大號正楷做正文字體, 像是從 00 年穿越過來一樣, 簡直就是設計地獄.

圖為其中最流氓的 KKNews, 直接 Ban 掉了訪問

你完全不理解 Google 為什麼要將這些垃圾內容放在第一頁, 於是你離開了 Google, 對萬惡的資本主義徹底失望, 回到了百度的懷抱, 做回了幸福的小粉紅.

完.

完?

The ultimate solution

為了應對這個問題, Google 曾經開發過一款插件 “Personal Blocklist”, 但是因為某些資本主義因素, 又把它下架了. 不過這個概念已經有了, 就是用戶可以通過瀏覽器插件的方式修改搜索結果, 如果 url 符合匹配規則, 就讓他完全消失.

Meet the uBlackList!

Google 商店搜索 uBlackList 就可以搜到這款插件. 我們可以首先設置通配符來最大範圍殺傷那些不長腦子的內容農場:

*://*/so.php
*://*/so.php?s=*
*://*/cha.php?s=*
*://*/list.php?s=*
*://*/?s=*
*://*/so/*

然後請添加以下訂閱, 通過域名精準打擊漏網之魚.

https://git.io/ublacklist

上面這個訂閱基本是全網最全的訂閱, 通過腳本, 每週同步多個 List 的內容; 截至發文時, 它已經包含了超過七萬個採集站.

定期批量刪除图片 EXIF

EXIF 元信息是一種圖片的附加信息, 一般在拍攝的時候就已經寫進圖片, 而圖片被上傳到 WordPress 之後也會留在裡面.我剛剛看完幾篇關於網絡安全的文章, 於是去查詢了一下維基百科看一看 EXIF 到底有沒有這麽恐怖. 很不幸, 確實有.

圖片可以暴露拍攝的時間和地點, 精確到 GPS 坐標

雖然我的網站並不是非常 Secure, 而我使用密碼的習慣也並不是非常 Solid, 但是修復已經注意到的漏洞, 減少攻擊面總是一件好事. 所以我就設置了一個 Cron, 定時刪除 WordPress 中儲存的所有圖片元信息.

怎麼做到

首先安裝 ExifTool, 一個以 Perl 寫成的開源圖片 EXIF 信息處理工具. 樹莓派是基於 Debian, 所以直接 apt 就可以了

apt update && apt install exiftool

然後定位到 /mnt/data/wordpress/ , 這裡是 WordPress 的根目錄. 我先執行一次清除試一下:

( 方法來自 這個討論串 )

$ find -type f -iname '*.jpg' -exec exiftool -all= {} \;

1 image files updated
1 image files updated
...

然而, 除了修改文件以外, 這個工具還產生了 *.jpg_original 格式的備份, 這些備份我並不需要.

find . -name "*.jpg_original" | xargs rm -rf   

寫進 Cron

明確了作法之後, 就可以將任務寫進 Cron 了.

touch /etc/cron.daily/rm_exif
cat > /etc/cron.daily/rm_exif <<EOF
#!/bin/sh
find /mnt/data/wordpress -type f -iname '*.jpg' -exec exiftool -all= {} \;
find /mnt/data/wordpress -name "*.jpg_original" | xargs rm -rf
find /mnt/data/wordpress -type f -iname '*.jpeg' -exec exiftool -all= {} \;
find /mnt/data/wordpress -name "*.jpeg_original" | xargs rm -rf
find /mnt/data/wordpress -type f -iname '*.png' -exec exiftool -all= {} \;
find /mnt/data/wordpress -name "*.png_original" | xargs rm -rf
find /mnt/data/wordpress -type f -iname '*.gif' -exec exiftool -all= {} \;
find /mnt/data/wordpress -name "*.gif_original" | xargs rm -rf
EOF
chmod +x /etc/cron.daily/rm_exif

完成了!