大佬帶玩-一箇舊手機的威力
這裡的手機指安卓機。
大家都知道安卓機用的是Linux核心,所以理論上Linux可做的事情,手機都能做,下面列舉一些有意思的事情。
必備技能: 會Linux。
安裝Linux發行版
其實這個比較簡單,只需裝一個App, 但是有些技巧可以講講。
所需材料
- 安卓手機 必須
- 擁有公網IP的機器 非必須
- 無限流量卡 非必須
- root許可權 必須
Root
root手機根據手機訊號的不同,會有不同的辦法,所以這裡就不細講,請自行百度,或google.
安裝linux deploy
通過某個應用市場下載並安裝
線上安裝
線上安裝是比較扯淡的,因為在國內實在是比較慢的,原因你懂的。
離線安裝
通過以下地址可下載自己所需的映象
ofollow,noindex">http://sourceforge.net/projects/linuxonandroid/files/使用者名稱/密碼:android/changeme
推薦安裝ssh客戶端: JuiceSSH
最好的安卓ssh客戶端,沒有之一。
個人網站
其實這個這個章節有點泛指的意思,任何你覺得需要在公網上能做的事情,都可以在內網完成,因為在內網裡面你可能有舊電腦,舊伺服器,舊手機。一切被限制在內網的資源(有記憶體,cpu。)
所需材料
- 安卓手機 必須
- 擁有公網IP的機器 非必須
- 無限流量卡 非必須
- root許可權 非必須
系統環境
這裡的環境你可以用上面的Linux deploy部署的Linux環境也可以使用下面要說的方式,不同的在於下面的方式不需要root
Linux deploy
如上
termux
通過某的應用商店下載並安裝
安裝JucieSSH
之所以不用termux自帶的shell環境,是因為較於JuiceSSH來說,實在時太難用了。
安裝openssh
開啟termux後,在終端輸入pkg install sshd以安裝openssh

一箇舊手機的威力
執行sshd命令啟動sshd,這樣就可以通過其他ssh客戶端連線了,但是預設只能用金鑰登陸
使用JuiceSSH連線
-
首先在電腦端,通過ssh命令生成金鑰,然後將公鑰私鑰的文字傳到手機.
-
在開啟JucieSSH之後,依次點選
連線 -> 認證 -> 點選認證頁面下面左下角的"+".
-
暱稱,使用者名稱可隨便填,然後點選私鑰。如下圖所示

一箇舊手機的威力
- 貼上第一步生成的金鑰。如下圖所示

一箇舊手機的威力
- 最後點選完成
6.在termux中匯入公鑰。如下圖所示

一箇舊手機的威力
7.使用JucieSSH連線.在JuiceSSH中新建連線,如下圖所示

一箇舊手機的威力
8.點選新建的連線,連線成功後,如下圖

一箇舊手機的威力
使用電腦連線
只要保障在同一區域網,然後用上面生成的私鑰連線即可
總結
準備好環境後,你就可以使用termux做linux下幾乎所有可做的事情了,比如安裝python,golang,nodejs等開發環境,以及一些其他的軟體。
termux比較易用,但是前面的連線實在時比較麻煩,上面是我的連線辦法,如果有更好的連線辦法還望告知。
內網穿透
由於眾所周知的原因,大多數時候家庭網路都是不會分配公網IP的,所以我們需要一些手段得到能夠從公網訪問的路徑。下面介紹三種。我主要說第三種。
NATAPP
這是一個專門做內網穿透服務的網站,有免費服務,不過需要實名認證。
地址如下
ngrok
這個應該時比較出名的內網穿透方式了,可是由於伺服器在國外,再者是免費的,所以可能不穩地以及延遲大。
frp
這個是屬於比較新起之秀了,但是門檻較之上面兩種,比較高。
需要一個有公網IP的伺服器,可以使用雲伺服器或者及其便宜的vps。
專案地址: https://github.com/fatedier/frp
網站搭建
其實看到這裡你也許會有疑問,我有公網伺服器或者雲主機,為啥還要用手機呢。主要有以下兩點
-
如果是便宜的vps,可能記憶體只有256MB或者192MB, 因為我們主要需要的是公網IP。但是很多手機記憶體都是1GB或者2GB甚至更高的。即,可以將負載高的東西放在本地,公網IP所在的伺服器只是轉發流量。
-
這裡只是一個拋磚引玉的示例,只要能內網穿透,你就可以將很多內網的東西放到內網了。
軟體環境
這裡以golang web的hello world為例,你當然可以用其他任何的語言以及方式執行一個web服務。
安裝golang
在手機上執行pkg install golang
建立程式軟體
包含以下內容
package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "helo world") }) http.ListenAndServe(":8088", nil) }
執行程式
go run main.go &
瀏覽器訪問http://<IP>:8088
對映公網地址到內網
分別下載伺服器版本的frp以及安卓手機的frp
伺服器如果是linux,就根據32或者64位下載相應以linux開頭的frp,如frp_0.16.0_linux_386.tar.gz
安卓手機下載以arm結尾的frp版本,如
frp_0.16.0_linux_arm.tar.gz
下載地址: https://github.com/fatedier/frp/releases
配置服務端
建立配置檔案web-server.conf
# frps.ini [common] bind_port = 7777 privilege_allow_ports = 60000-60105 privilege_token = secret. [web] type = tcp auth_token = secret. listen_port = 60000
配置客戶端
建立配置檔案web-client.conf
[common] server_addr = <Server-IP> server_port = 7777 privilege_token = secret. [web] type = tcp local_ip = 127.0.0.1 local_port = 8088 remote_port = 60000 sk = secret.
執行
服務端
frps -c web-server.conf
客戶端
frpc -c web-client.conf
最後訪問http://<Server-ip>:60000
這裡只是一個展示,其實關於http轉發有更多可以設定的細節,參考: https://github.com/fatedier/frp
爬蟲代理
這裡暫時還只是一個概念,有一個暫時沒有克服的問題。相較於網上的一堆代理網站也不一定可行。
你也許不知道的是,每當你將手機設定飛航模式然後解除飛航模式,那麼你的公網出口IP就會改變,所以如果通過某個IP能夠調取手機開關飛航模式API,那麼在手機上執行爬蟲會是一個不錯的選擇,因為有大量的IP可切換,不怕被封IP。
所需材料
- 安卓手機 必須
- 擁有公網IP的機器 非必須
- 無限流量卡 必須
- root許可權 非必須
其他想法
- 做一個私用的Pass平臺。因為計算機記憶體資源主要用內網環境的,但是可以通過公網訪問。
- 做一個下載器。
- 做一個私有云盤。
- 做一個....
總結
理論上在Linux上能做的事情,安卓手機上都能做。其實叫做Linux的威力也許更適合。