一箇舊手機的威力

這裏的手機指安卓機。
大家都知道安卓機用的是Linux內核,所以理論上Linux可做的事情,手機都能做,下面列舉一些有意思的事情。

必備技能: 會Linux。

安裝Linux發行版

其實這個比較簡單,只需裝一個App, 但是有些技巧可以講講。

所需材料

  • 安卓手機 必須
  • 擁有公網IP的機器 非必須
  • 無限流量卡 非必須
  • root權限 必須

Root

root手機根據手機信號的不同,會有不同的辦法,所以這裏就不細講,請自行百度,或google.

安裝linux deploy

通過某個應用市場下載並安裝

在線安裝

在線安裝是比較扯淡的,因爲在國內實在是比較慢的,原因你懂的。

離線安裝

通過以下地址可下載自己所需的鏡像
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連接
  1. 首先在電腦端,通過ssh命令生成密鑰,然後將公鑰私鑰的文本傳到手機.

  2. 在打開JucieSSH之後,依次點擊
    連接 -> 認證 -> 點擊認證頁面下面左下角的"+".

  3. 暱稱,用戶名可隨便填,然後點擊私鑰。如下圖所示

一箇舊手機的威力

  1. 粘貼第一步生成的密鑰。如下圖所示

一箇舊手機的威力

  1. 最後點擊完成

6.在termux中導入公鑰。如下圖所示

一箇舊手機的威力

7.使用JucieSSH連接.在JuiceSSH中新建連接,如下圖所示

一箇舊手機的威力

8.點擊新建的連接,連接成功後,如下圖

一箇舊手機的威力

使用電腦連接

只要保障在同一局域網,然後用上面生成的私鑰連接即可

總結

準備好環境後,你就可以使用termux做linux下幾乎所有可做的事情了,比如安裝python,golang,nodejs等開發環境,以及一些其他的軟件。

termux比較易用,但是前面的連接實在時比較麻煩,上面是我的連接辦法,如果有更好的連接辦法還望告知。

內網穿透

由於衆所周知的原因,大多數時候家庭網絡都是不會分配公網IP的,所以我們需要一些手段得到能夠從公網訪問的路徑。下面介紹三種。我主要說第三種。

NATAPP

這是一個專門做內網穿透服務的網站,有免費服務,不過需要實名認證。

地址如下

https://natapp.cn/

ngrok

這個應該時比較出名的內網穿透方式了,可是由於服務器在國外,再者是免費的,所以可能不穩地以及延遲大。

frp

這個是屬於比較新起之秀了,但是門檻較之上面兩種,比較高。
需要一個有公網IP的服務器,可以使用雲服務器或者及其便宜的vps。

項目地址:https://github.com/fatedier/frp

網站搭建

其實看到這裏你也許會有疑問,我有公網服務器或者雲主機,爲啥還要用手機呢。主要有以下兩點

  1. 如果是便宜的vps,可能內存只有256MB或者192MB, 因爲我們主要需要的是公網IP。但是很多手機內存都是1GB或者2GB甚至更高的。即,可以將負載高的東西放在本地,公網IP所在的服務器只是轉發流量。

  2. 這裏只是一個拋磚引玉的示例,只要能內網穿透,你就可以將很多內網的東西放到內網了。

軟件環境

這裏以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的威力也許更適合。

最後的最後

一箇舊手機的威力

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章