國際班學子≠地主家的傻兒子

今天和初中同學小聚. 這個傢伙中考墜毀, 上了國際班, 目前在修AP課程; 吃飯間隙, 他講了講他們學校為了糊大學文書搞的活動, 尤其讓我印象深刻:

他們高中一大早拉了兩個大巴的人, 烏烏泱泱跑到城郊的一所 “希望小學”, 去 “幫扶貧困學生”;(這麼興師動眾, 其實也可以理解, 畢竟成績也不怎麼拿的出手, 而且做公益也不差, 對吧.) 家長則每個人塞了兩三百給學校作為“愛心款”. 哪曉得到了學校, 發現小學生不上課, 專門等在門口笑嘻嘻迎接, 看過去到處是阿迪達斯、耐克, 簡直是全副武裝; 自由活動時間居然還有小學生來比手錶, 比鞋子, 一副鄙視的樣子, 真是天曉得! 搞公益原來是劫貧濟富去了. 這位老兄打趣道 “應當讓他們來幫扶我們”.

聯想到我觀察到學生間的 “鄙視鏈”, 我不禁有點唏噓: 普高學生瞧不起國高學生, 認為他們全部是富二代跑去資本主義國家鍍金去了 (從分數線也看得出來); 國高學生反而認為普高是科舉, 培養做題家. 後者我不好評判, 但是就我個人意見, 前者是肯定偏離事實的. 就拿我們班基本沒什麼人穿名牌來說, “土豪”肯定佔比不多; 攀比風尚還不如普高. 而談到人生規劃, 我感覺國際板學生要強得太多, 對自己目前的定位、未來的打算都比家長清楚. 這種特質, 是在普高學生身上看不到的.

再舉個例子, 清朝末年朝廷賠給美國的“庚子賠款”, 被美國分批退回資助清朝學生留洋, 發展教育事業 (因此清朝的留洋學生也得名“庚子賠款生”), 滋生了中國第一批得到官方承認的國際學生. 這批學生的含金量之高, 是今天完全無法想像的: 著名文人胡適(政治 AB, 哲學 PhD)、趙元任(物理 AE, 哲學 PhD)、竺可楨(農業 BS, 氣象地理 PhD) 等都在那批學生之中. 換成今天, 國際學生在社會發展、民主改革重擔一點不比當年少, 留洋出來的也大多成了各行各業的骨幹; 憑什麼歧視這批學生呢?

回到剛才的話題, 別人有這種偏見也罷了 (其實也夠嗆), 學校本身應當是最了解學生的, 居然也以為自己在服務一幫財神爺, 希望藉活動之名搞忽悠、吃回扣, 這就有很大問題了. 國際學生不是冤大頭, 家長也不是傻子, 在成績上弄虛作假、賺錢倒是斤斤計較的學校是鬧騰不久的, 終有一天會被市場拋棄. 希望背負民族責任的教育行業能有所改變、理清楚定位, 真正負起培育英才的責任.

例行安全檢測 — 加固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 官方教程

默認情況下, 目錄權限應當是 755 (drwxr-xr-x), 文件權限 644 (-rw-r–r–), 由一個專門的非管理員帳戶管理 (通常是www).

要更改權限, 請使用以下命令:

# 對於目錄
find /path/to/your/wordpress/install/ -type d -exec chmod 755 {} \; 

# 對於文件
find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \; 

保護 wordpress 文件

所謂的保護 wordpress 文件, 並不是防止訪客訪問這些文件, 而是防止出內鬼. ( PHP 腳本 ) 訪客在訪問這些文件時要麽是 403 要麽就是空白, 而網站內的 PHP 腳本則可能有權限讀取並修改它們.

下述的 .htaccess 只存在於使用 Apache 提供服務的服務器中. 如果你是使用 Nginx 或者其他軟件, 下述教程並不適合你.

保護 wp-includes

wp-includes 的概念類似頭文件, 屬於 include-only, 這一整個文件夾的內容都不應該被修改. 為了防止惡意插件或者惡意主題搞破壞, 可以在 .htaccess 中添加如下幾行:

# Block the include-only files.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

注意把上述內容添加在 BEGIN...END... 之外, 不然可能遭到複寫.

保護 wp-config.php

在 .htaccess 文件的開頭添加如下內容:

<files wp-config.php>
order allow,deny
deny from all
</files>

關閉編輯文件功能

我因為可以使用 ftp、vscode 遠程編輯, 並沒有怎麼在意過 wordpress 自帶的 「主題編輯器」和「插件編輯器」, 所以關掉也無所謂. 如果你對這些功能重度依賴, 我並不推薦關閉: 因為這項設置是防止已經獲得後台訪問權限的黑客亂改文件, 而都能進入後台的黑客估計也不是非要通過圖形編輯器來幹掉你的網站.

要關閉這項功能, 在 wp-config.php 中加入

define('DISALLOW_FILE_EDIT', true);

這個設置並沒有關掉插件對文件的寫入權限, 所以插件應該都還能正常工作.

保護 wp-admin.php

被 Cloudflare 防火牆擋下來一大部分攻擊都是針對 wp-login.php

所謂的攻擊, 大多數都是在暴力枚舉密碼, 比如說 admin/123456 這樣子.
當然我不怕這樣的攻擊, 首先我的用戶名就不是 admin, 其次我有自信自己的密碼在互聯網上是獨一無二的 ( cat /proc/sys/kernel/random/uuid ). 只不過煩倒是蠻煩的, 帶寬本身就有限還要和這群工具小子打交道?

解決方案就是編輯 .htaccess , 添加訪問口令.

通過直接編輯 .htaccess

  1. 狂戳這個鏈接, 根據 apache 版本生成 .htpasswd 文件.
  2. 它會生成一個字符串. 在網站根目錄創建一個 .htpasswd 文件站貼進去.
  3. 在 .htaccess 中添加如下內容 (仍然在 BEGIN 和 END 之外)
# Stop Apache from serving .ht* files
<Files ~ "^\.ht">
  Order allow,deny
  Deny from all
</Files>
# Protect wp-login.php
<Files wp-login.php>
  AuthUserFile [path]/.htpasswd
  AuthName "Private access"
  AuthType Basic
require user [username]
</Files>

注意修改框出來的內容, [path] 填網站根目錄絕對路徑, [username] 填認證的用戶名.

這樣就 OK. 這樣子如果不通過驗證, 訪問 wp-login.php 就顯示 500 錯誤.
另外, 那個 .htpasswd 文件是允許多行的, 一行對應一個用戶, 就這個樣子.

阻止垃圾留言

點擊提交留言的按鈕, WordPress 會跳轉到 wp-comments-post.php 來提交留言. 但是直接 POST 到這個地址也可以提交留言. (機器人) 但是直接 POST 沒有 referrer, 下面這個方法可以阻擋沒有 referrer 的 POST 操作.

# Stop spam attack logins and comments
<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteCond %{REQUEST_METHOD} POST
	RewriteCond %{REQUEST_URI} .(wp-comments-post|wp-login)\.php*
	RewriteCond %{HTTP_REFERER} !.*[example.com].* [OR]
	RewriteCond %{HTTP_USER_AGENT} ^$
	RewriteRule (.*) http://%{REMOTE_ADDR}/$1 [R=301,L]
</ifModule>

同樣, 替換 [example.com] 為實際網址.

做完了之後不要忘記開隱私模式測試一下.

轉載: 实事求是:手机鸿蒙和开源鸿蒙是不是一回事?

前言

剛剛看到鴻蒙開源的消息 (某些媒體把開源說成 “捐獻國家”, 我都無力吐槽… 照這個邏輯, 我摔一跤就是“為國捐軀”了對吧 ), 我大吃一驚: 鴻蒙整一個安卓換皮, 難道事到如今華為連裝都不想裝了嗎?? 還是說華為真的有什麼殺手鐧, 秘密黑科技, 有這個底氣開源了?

於是我火速搜索了一通, 然後找到了這個:

華為黑科技

長得和我媽六年前的翻蓋手機系統一個樣, 不能裝安卓應用, 好像連瀏覽器都沒有.

這個分布式OS確實是, NB! 光看這個設計我就已經體驗到微內核的科技感了!!!! 華為果然是 IoT 大廠, 趕緊吹起來吹起來! 以後誰要是再唱衰華為我就跟誰急! 有這樣的國民企業我還要什麼? 來世還投種花家! 我都已經熱淚盈眶啦!!!

咳咳, 總之又夠小粉紅高潮幾個月了. 現在中國互聯網上華為基本成了一個各家媒體紛紛秀智商下限的地方, 各種捧殺, 估計現在華為高層都找不著北了. 可以想見的, 媒體狂歡之後, 必定又剩下一地雞毛, 留下和“紅星瀏覽器”、“木蘭編程語言”一樣的笑柄.

下面是一篇我認為還比較中肯的文章, 居然發表在騰訊新聞上, 貼出來和大家共賞.

原文鏈接: https://new.qq.com/omn/20210605/20210605A01KRL00.html

正文

开源的Harmony OS源代码分析

可能这篇文章会得罪很多人,甚至会被炸号,但是我实在无法忍受如此大范围的指鹿为马。当有人喊亩产一万斤的时候,你不跳出来指出对方在瞎说,那么最后倒霉的可能还是你自己。

另外我觉得我有资格说这话。我的工作经验之一,就是内核,我曾经在Nvidia,Qualcomm等几个主力芯片上bring up 过内核。对ARM的trustzone,高通的SecureMSM, 各个主流芯片secure boot都比较熟悉,熟练使用trace32。以及对操作系统的底层比如中断,DMA,文件系统(我自己写过fat文件系统的parser),内存管理机制都比较熟悉,最早一批参加blackhat 的华人。所以,如果大家讨论技术欢迎,虽然我已经很多年没有碰这些了,但是吹吹牛没问题的。

说实在,我没有怎么关心过鸿蒙系统。昨天在各种热议中,我去看了一下。

所谓鸿蒙的开源代码,当时第一眼看,我确实觉得非常佩服。还发了一条微博点赞。

看了一会hm的源代码,有点意思。

既不是linux,也不是Android。比linux和Android OS要简单的多。应该说是极简版的mobile OS。其实工作量很大。没有1000-2000个工程师的团队是搞不定的。

1. 现在公布的代码确实是hw重写过的。工作量巨大无比。比我想的要多。

2. 但是从功能的角度来讲,又显得非常简陋。给我感觉是似曾相识,又不是。

这是我看了三个模块的代码的感觉,

  • GICv3

https://gitee.com/openharmony/kernel_liteos_a/blob/master/arch/arm/gic/gic_v3.c

这个 GICV3 的实现,非常简单,但是基本上功能都有了,能用。

  • 内存管理模块

https://gitee.com/openharmony/kernel_liteos_a/blob/master/kernel/base/mem/tlsf/los_memory.c

这个内存管理模块,应该是根据这个算法做的 tlsf

  • FAT文件系统

https://gitee.com/openharmony/kernel_liteos_a/blob/master/fs/fat/os_adapt/fatfs.c

基本上也是重写了一边FAT的文件格式的处理。。。但是FAT,貌似微软还是有专利的。

不知道专利有没有过期。。

总的来讲,还是不错的开始。另外,看了一下代码,hm在compatibility方面做出了大量的牺牲。

也就是说,如果光一家玩,问题不大。但是如果有很多家一起玩,不同硬件的spec,可能会有很多问题。

看吧。如果小米被迫上这个系统,估计要骂人。

然而很快发现,有朋友反馈,他们的华为手机可以直接升级到鸿蒙,然后原来的app都可以用。啥都不用改。

我当时就是满脑子问号???

这个有点超越我的认知范围了。。。。不可能啊?开源的这个harmony os是无法做到直接支持run apk的。即便支持也是很久很久以后的事情。

后来很多人反馈就是,啥apk都可以运行。。。。。

这么说的话,这个鸿蒙os,太神奇了。。。

后来做了更多的了解,搞清楚了。。。

原来,

开源版的鸿蒙, 是一套针对IoT版的操作系统。

而手机版的鸿蒙,是另外一套类似于/基于AOSP的系统。很可能是android 套壳,但是没有开源。。

但是,他们用了同一个名字,品牌,鸿蒙。。 非常令人容易产生误解。

arstechnica 的分析与评价

查了一下外网。权威的 智能手机测评网站 有篇详细的报道:

https://arstechnica.com/gadgets/2021/06/huaweis-harmonyos-will-rollout-to-100-android-models-over-the-next-year/

我基本上同意文章的判断:

有两套 harmony os,一套是IoT版,一套是手机版。

IoT版简单的多是开源的,你说它一行linux代码都没有用是站的住脚的。代码我看了,我赞同这个说法。

手机版是一套完全不同的系统,是闭源的。arstechnica 认为可能是fork。我没有看到代码,不好说什么。但是完全支持apk,我觉得至少是aosp了。

华为的回应

在外媒的追问下,华为已经向verge 表示:

承认可能有两个内核,但是注意是“可能”。这段statement其实是文字游戏的最高水平,什么都没有承认,什么也没有否认。我觉得,没有必要再解读了。。

結語

我觉得本来是一件很好的事情,仅仅是IoT版的harmonyOS也是一个非常了不起的成就。只要假以时日,完全可以在很多IoT的场景使用,比如摄像头,路由器,传感器网络等等。如果在结合cloud场景,AI场景,都能有很不错的江湖地位。

做个手机操作系统,远没有rtos或者 iot os那么简单,而且存在大量的场景,你根本绕不过专利墙。 比如有个专利是,手机给你发notification,你可以dimiss它。这种专利,把手机的notification全部给覆盖了。所以你即便搞通了 soc–firmware–os这层,这些专利会让你的成本很高。

可惜为啥要搞成现在这么难看,稍微有点底层系统经验的人都知道怎么回事,连verge的记者都看明白了。为什么做的这么不体面呢? 你大大方方说,还需要多年才能做到完全的独立系统,没问题啊。实事求是讲,这本来这就是一个很难很难的事情啊。为什么要搞出这么多误会呢?

最后,还是希望大家实事求是,把事情做好。

後記

我早就說過, Harmony 這個名字起的非常有水平, 只不過翻譯不咋滴. 真正的翻譯應當是 “和諧” 才對; 華為能起這個名字說明它裡面有相當一幫人其實很清楚, 這玩意唯一的價值就是戰略忽悠, 這個所謂“原子化”“微內核”“分布式”系統的根基不過就是河蟹而已. 大吹大擂, 發明名詞, 打愛國牌, 封殺異議… 華為第一次把鴻蒙 1.0 吹上了天, 做出了一個智能電視; 第二次把鴻蒙 2.0 吹上了天, 結果被拔出來是安卓換皮; 這次又做出來了一個殘障系統… 華為總能給人驚喜. 捧著爆米花等待這個鬧劇收場, 真的是一件很愉快的事情.

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

目標

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

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

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

網絡拓墣示意圖

準備環境

  • 一台聯網、24×7 運行的機器, 內存 4G+, 空間 8G+
  • 安裝有 Linux 系統 ( 推薦 Openwrt, 或者 樹莓派安裝 PiOS )
  • Cloudflare 帳戶, 託管在 CF 上的域名

執行以下操作準備所需鏡像.

docker pull wordpress
docker pull mariadb
docker pull teddysun/v2ray

使用以下 Dockerfile 構建 Cloudflared 鏡像

FROM debian:latest
VOLUME ["/etc/cloudflared"]
WORKDIR /etc/cloudflared
RUN ln -s /etc/cloudflared /root/.cloudflared
RUN apt update && apt install wget -y
RUN wget https://github.com/cloudflare/cloudflared/releases/download/2021.5.10/cloudflared-linux-amd64 \
    && mv cloudflared-linux-amd64 /usr/local/bin/cloudflared \
    && chmod +x /usr/local/bin/cloudflared

配置 Nginx + WordPress

如果你已經配置好了, 可以直接跳過. 我在這裡貼出我的啟動參數:

docker run --name wordpress \
-v /www/wordpress:/var/www/html \
-p 443:443/tcp \
-p 80:80/tcp \
--net wpblog \
--restart always \
-h wordpress \
--expose 443/tcp \
--expose 80/tcp \
-e 'WORDPRESS_TABLE_PREFIX=wp_' \
-e 'WORDPRESS_DB_HOST=db' \
-e 'WORDPRESS_DB_USER=root'\
-e 'WORDPRESS_DB_PASSWORD=password' \
-e 'WORDPRESS_DB_NAME=wordpress' \
-d wordpress:latest
docker run --name wordpressdb \
-v wordpressdb_data:/var/lib/mysql \
-p 3306:3306/tcp \
--net wpblog \
--restart always \
-h db \
--expose 3306/tcp \
-e 'MARIADB_ROOT_PASSWORD=password' \
-e 'MARIADB_DATABASE=wordpress' \
-d mariadb:latest

V2Ray

V2Ray 啟動參數:

docker run --name v2ray \
-v /etc/v2ray:/etc/v2ray \
--net host \
--restart always \
-d teddysun/v2ray

V2Ray 配置文件:

{
  "inbounds": [
    {
      "port": 9999,
      "listen":"127.0.0.1",
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "myawesomepassword",
            "alterId": 0
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
        "path": "/myawesomepath"
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

Cloudflared

Cloudflared 的配置有一點點煩. 我先開了一個 Debian 容器生成了 Cloudflared 的配置文件:

docker run --rm \
-v /etc/cloudflared:/root/.cloudflared \
-it debian:latest

然後在 Debian 中執行:

apt update && apt install wget -y
wget https://github.com/cloudflare/cloudflared/releases/download/2021.5.10/cloudflared-linux-amd64 \
    && mv cloudflared-linux-amd64 /usr/local/bin/cloudflared \
    && chmod +x /usr/local/bin/cloudflared
cloudflared login
cloudflared tunnel create mytunnel
exit

/etc/cloudflared 中新建 config.yml, 寫入:

tunnel: tunnel-id-here
credentials-file: /etc/cloudflared/tunnel-id-here.json

ingress:
  - hostname: myawesomesite.com
    path: /myawesomepath
    service: http://localhost:9999
  - hostname: myawesomesite.com
    service: http://localhost:80
  - service: http_status:404

使用如下啟動參數啟動容器:

docker run --name cloudflared \
-v /etc/cloudflared:/etc/cloudflared \
--net host \
--restart always \
-d cloudflared:latest '/usr/local/bin/cloudflared' '--no-autoupdate' '--config' '/etc/cloudflared/config.yml' 'tunnel' 'run' 'tunnel-id-here'

DNS 配置

打開 Cloudflare, 新建一條 CNAME 紀錄, 如下配置:

| TYPE  | NAME |            CONTENT              | TTL |  Proxy State|
| CNAME |  @   | tunnel-id-here.cfargotunnel.com | auto|   Proxied   |

驗證

$ curl https://myawesomesite.com/myawesomepath                             
Bad Request

後記

使用場景

之所以會有這樣的主意, 是因為我早就將所有文件都掛在 NAS 中了, 我隨身攜帶的筆記本、手機裡面基本沒有任何文件. 那麼當我出遠門的時候, 如果沒有一個可靠的組網方案, 難不成我還得把硬盤拆下來帶著走? ( 主要是留學場景 )

那麼只有 VPN 方案了. 眾所週知天朝的網絡環境超級奇葩, 要滿足搭建 VPN 的條件得開放公網 IP、配置 DDNS、配置端口轉發等一系列操作, 搞不好哪天運營商給妳封了還得重搞. 而且明擺著 VPN 流量流進流出也很不放心.

所以要配置這樣一個 VPN 還是得靠內網穿透. 問題是自己配 VPS + FRP 會被牆, 購買現成的方案性價比低, 好像真的走到僵局了. 當 4月份 CF 宣布 Argo Tunnel 開放之後我就一直在尋找利用它的方法: Cloudflare 現在遍地開花, 和 Cloudflare 長期的 TLS 流量是唯一不會被懷疑 + 不會被牆掉的. 而且有 CF 的 Edge Network 加持, 網絡延遲可能還比自己搭建 VPS 搞內網穿透要小.

剩下的問題就是偽裝問題了. 自然而然的, 我想到了流量 TLS 加密後混在正常的 HTTPS 流量中, 那麼 V2 + WP + CF 的方案就確定下來了.

注意事項

我在網絡拓墣圖裡並沒有畫出來, 那個 Home Lan 其實是走過一個 Openwrt 網關的, Openwrt 上有配置 Passwall 鏈接到我的翻牆 VPS 來保證速度. (大部分配置有軟路由的人也基本就是這麼玩的, 保證全家翻牆)

既然有翻牆這一個環節, 那麼就肯定要注意被牆的問題. 首先我們複習一下牆的手段: 針對網站有 DNS 污染和匹配SNI, 針對 IP 就比較簡單, 直接截下流量就可以了.

因為我們使用 Cloudflared 做內網穿透, 針對 IP 的威脅可以忽視. DNS 污染可以使用 DoH、DoT、dnsProxy, 匹配 SNI 我們可以用 ESNI 嘛. 而且如果是海外訪問(留學), 連牆都不用過.

要在家啟用 dnsProxy, 可以在 Openwrt 中配置 dns2socks ( dns 流量走代理 ); 要使用 DoH、DoT, 參考 Cloudflare 的這篇教程; 配置 ESNI 得先配置加密 DNS, 然後在瀏覽器裡找到對應選項開啟.

推薦的作法

剩下就是路由器用來翻牆的 VPS 會不會被牆. 因為很多沒有被牆的網站 (如 Github ) 訪問速度也和被牆了差不多, 所以我默認是開啟 IP 白名單的. 就是說, 如果 VPS 失效, Cloudflare 也會訪問不了. 如果人在家當然很好辦, 如果人在遠門或者在國外 (留學場景), 要注意把路由器設為 GFWlist 模式.

另外, 在牆內老是訪問同一個域名可能會導致身份關聯 ( 盡量不要在牆內這麼用 ). 如果非要這麼做, 建議配合 Tor 使用或者確保 DoH、ESNI 工作正常. (就是絕對不要在手機上亂用的意思)

為 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

編程隨想失聯

編程隨想最後一次線上活動 5月10號, 截至 6月2號 十三年來第一次剛性靜默三週. 近兩年來發文速度明顯放緩, 文章風格也沒有之前尖銳, 極有可能是肉身有恙.
還有兩天就是82日了, 希望可以看到博文更新, 祈禱.

投之亡地然后存
陷之死地然后生
                     -- 《孫子兵法》

雙卡齊發? 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 吧.

Docker 無縫切換鏡像

警告: 我只是一個正在學習 Docker 的中學生,
一切在生產環境嘗試本文所述技巧所導致的損失都是自作自受.

有的時候, Docker 鏡像更新了, 但是容器並沒有更新, 你想要用更新過後的鏡像來部署容器; 奈何你並沒有像 Portainer 這樣的 GUI 介面, 你早就不記得當初部署容器時執行的指令了, 碰到這種情況應該怎麼辦?

下文便以更新 Portainer 為例來演示簡單的無縫切換鏡像.

解決方案

第一步當然是要先拉取更新的鏡像.

docker pull portainer/portainer-ce:latest

接著, 使用 rekcod 這個工具來獲取部署容器時輸入的命令.

$ docker run --rm -i -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod <container>

# 樹莓派玩家
# docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod:3.0.0arm

# 為該命令設別名
# alias rekcod="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod:3.0.0arm"

短暫刪除舊的容器, 然後部署上新的.

$ docker stop <container>
$ docker rm <container>
$ <執行 rekcod 得到的結果>

至此, 新的容器就部署好了, 而當機時間不會超過幾秒鐘👌

最後別忘了刪除掉舊的鏡像喔.