起因
幾個(gè)月前學(xué)了python,寫了幾個(gè)練手的爬蟲(chóng)必逆,要運(yùn)行很久才能下載到足夠的數(shù)據(jù),掛機(jī)一夜似乎有點(diǎn)費(fèi)電揽乱,我還心疼我的電腦呢名眉。就一直想拿一個(gè)安卓手機(jī)來(lái)跑,當(dāng)時(shí)只當(dāng)個(gè)想法凰棉,并沒(méi)有動(dòng)手實(shí)施损拢。結(jié)果最近恰逢老爸換手機(jī),于是舊手機(jī)撒犀,一個(gè)紅米note2被我拿來(lái)了福压,于是開(kāi)始了我的折騰之旅。我從未接觸過(guò)linux或舞,但幸好這方面的教程已經(jīng)很多隧膏,通過(guò)大量搜索和實(shí)踐,走了很多彎路嚷那,總算能完成預(yù)期目標(biāo)了胞枕。
開(kāi)始前
最好把手機(jī)root,雖然Termux不需要root權(quán)限也可以運(yùn)行魏宽,但root后可以用管理員權(quán)限腐泻,cd
進(jìn)入手機(jī)存儲(chǔ)目錄,后面可以干的事更多队询。
我把手機(jī)刷了miui7的開(kāi)發(fā)版派桩,反正也不會(huì)拿來(lái)用,隨便刷蚌斩。
root后铆惑,推薦裝一個(gè)re explorer,用來(lái)和電腦傳文件。因?yàn)殡娔X沒(méi)法直接訪問(wèn)手機(jī)內(nèi)置空間员魏。
為什么是Termux
Termux是我們的主角丑蛤,相當(dāng)于安卓上的linux虛擬機(jī)(這樣說(shuō)肯定不對(duì),但權(quán)且這么理解吧)撕阎,下載地址Google Play-Termux受裹。
一開(kāi)始我聽(tīng)說(shuō)GNU Root Debian功能更加強(qiáng)大,嘗試安裝這個(gè)花了很長(zhǎng)時(shí)間虏束。在google play上下載apk安裝后棉饶,每次打開(kāi)都閃退,底下提醒GNU Root not yet installed...我按照提示镇匀,以為還要安裝GNU Root照藻,正好google play上也有一個(gè)這名字的app,但安裝上后仍無(wú)法運(yùn)行汗侵。后來(lái)搜索發(fā)現(xiàn)岩梳,有人稱此app無(wú)法在聯(lián)發(fā)科CPU的手機(jī)上運(yùn)行(貼吧-實(shí)戰(zhàn)紅米手機(jī)安裝Debian系統(tǒng)),不巧紅米note2就是聯(lián)發(fā)科的晃择,倒霉...
所以我就選擇了Termux冀值,可以說(shuō)是因?yàn)闆](méi)辦法,但事實(shí)證明宫屠,Termux很強(qiáng)大列疗,絕對(duì)夠用。
Termux的安裝
我是按照知乎-如何讓自己在電腦上寫的python腳本在手機(jī)或安卓系統(tǒng)上運(yùn)行呢浪蹂?上的回答來(lái)安裝并配置Termux和python環(huán)境的抵栈。基本就是:
1. 更新包
apt update
apt upgrade
2. 修改源
export EDITOR=vi
apt edit-sources
在vi編輯器里把第二行替換成以下內(nèi)容(清華鏡像源)
deb [arch=all,arm] http://mirrors.tuna.tsinghua.edu.cn/termux stable main
在vi編輯器里坤次,輸入第一個(gè)i
進(jìn)入編輯模式(插入)古劲,下面會(huì)給出提示“INSERT”,此時(shí)再打字就是在光標(biāo)左邊插入字符缰猴。等修改完畢后产艾,按住音量上,同時(shí)輸入e
滑绒,即可退出編輯模式闷堡。再輸入:wq
保存并退出vi。
3. 安裝python3與相關(guān)模塊
# 安裝python3.6
apt install python python-dev
我目前僅會(huì)爬蟲(chóng)疑故,因此暫時(shí)只安裝了幾個(gè)用得到的模塊杠览。
# 安裝爬蟲(chóng)相關(guān)模塊
# beautifulsoup, requests
pip install BeautifulSoup4 requests
# lxml
apt-get install clang
apt-get install libxml2 libxml2-dev libxslt libxslt-dev
pip install lxml
使用Termux
安裝成功后就可以正常使用python了,有幾點(diǎn)技巧記下來(lái)纵势。
1. 管理員身份
默認(rèn)是沒(méi)有管理員權(quán)限的踱阿,在執(zhí)行一些敏感操作時(shí)會(huì)提示Permission denied管钳,或者在cd到一些目錄時(shí)會(huì)提示無(wú)此文件夾。
輸入su
進(jìn)入管理員身份软舌,第一次進(jìn)入時(shí)仍會(huì)提示Permission denied才漆,但此時(shí)Termux已經(jīng)申請(qǐng)了獲取手機(jī)的root權(quán)限,進(jìn)入安全中心的root權(quán)限管理葫隙,給Termux通過(guò)即可。此時(shí)再次su
就可以成功了躏仇。
在管理員身份下恋脚,輸入
exit
可回到普通用戶身份。但Termux環(huán)境的根目錄是/data/data/com.termux/files焰手,而在
su
后的PATH環(huán)境變量是/sbin/su:/system/bin糟描,很多命令就用不了(貼吧-Termux下root權(quán)限問(wèn)題的解決辦法),比如此時(shí)就無(wú)法進(jìn)入python书妻。但按照上個(gè)網(wǎng)頁(yè)的說(shuō)法船响,
tsu
命令修復(fù)了PATH變量,但需要先安裝躲履。
# 安裝tsu
pkg install tsu
但我嘗試了一下见间,tsu
后執(zhí)行python
仍提示未安裝,我沒(méi)有繼續(xù)往下試工猜,也許能行米诉?
2. 終止程序運(yùn)行
我們都知道用Ctrl+C終止程序,在Termux中篷帅,需要使用音量下+c
史侣。
3. 輸入法
我用的谷歌輸入法,一些常用的特殊符號(hào)可以在qwerty鍵盤上長(zhǎng)按得到魏身,比較方便惊橱。也有人推薦黑客鍵盤,試了下箭昵,不能輸入中文税朴,在別的地方還得切換,麻煩家制。
但不管用什么輸入法掉房,手機(jī)上敲代碼都太反人類了,下面介紹一下通過(guò)筆記本鍵盤連接Termux的方法慰丛。
遠(yuǎn)程鍵盤
我個(gè)人試驗(yàn)成功了兩種方法卓囚,都無(wú)需在電腦上安裝軟件,可以在命令行中運(yùn)行诅病。但為了簡(jiǎn)便起見(jiàn)哪亿,推薦安裝XShell5粥烁。
1. Remote Keyboard
通過(guò)Telnet方式與電腦通訊,下載地址Google Play-Remote Keyboard蝇棉,幾乎無(wú)需配置讨阻,極為簡(jiǎn)便。
軟件安裝后打開(kāi)篡殷,即顯示以下界面
此時(shí)點(diǎn)擊上方Select Keyboard钝吮,將默認(rèn)輸入法選為Remote Keyboard。
然后在電腦上進(jìn)入命令行板辽,輸入telnet [host] [port]奇瘦。比如按照上圖,在命令行輸入:
telnet 192.168.1.103 2323
即可進(jìn)入telnet界面劲弦,此時(shí)在該窗口按下的任何字符都可以在手機(jī)的輸入界面上顯示耳标。
如果上句報(bào)錯(cuò)telnet不是有效命令,按照百度經(jīng)驗(yàn)-Win7如何開(kāi)啟Telnet服務(wù)所說(shuō)開(kāi)啟服務(wù)邑跪。
但此方法有幾個(gè)嚴(yán)重缺點(diǎn):
- 最重要的次坡,會(huì)掉線,而且有時(shí)掉線后無(wú)論如何都無(wú)法重新連接上画畅。
- 有延遲砸琅,偶爾掉包。
- 不支持組合鍵轴踱。
2. SSH
這個(gè)方法比較高級(jí)明棍,但配置很麻煩,我弄了一天寇僧。當(dāng)然有l(wèi)inux基礎(chǔ)的人能很快上手摊腋,不懂的按照我的步驟,也能很快配置完成嘁傀。
手機(jī)上操作:
# 安裝openssh
apt install openssh
安裝完成后會(huì)在手機(jī)的data\data\com.termux\files\home下創(chuàng)建.ssh文件夾兴蒸,里面有文件authorized_keys,用于儲(chǔ)存可以通過(guò)驗(yàn)證的機(jī)器公鑰细办。
電腦上操作:
在電腦命令行輸入ssh橙凳,看是否報(bào)錯(cuò)。如果報(bào)錯(cuò)笑撞,下載并安裝OpenSSH岛啸,配置環(huán)境變量。確保命令行輸入ssh后正常運(yùn)行茴肥。
命令行輸入
ssh-keygen -t rsa
執(zhí)行完成后坚踩,會(huì)在C:\Users\username\.ssh文件夾下創(chuàng)建三個(gè)文件id_rsa, id_rsa.pub, known_hosts。分別是私鑰瓤狐、公鑰和連接記錄瞬铸,第一個(gè)文件不要泄露批幌。
然后通過(guò)各種方式將id_rsa.pub文件復(fù)制到手機(jī)的data\data\com.termux\files\home\.ssh文件夾內(nèi)。有人用adb push嗓节,我不會(huì)荧缘,用的復(fù)制粘貼大法...復(fù)制到電腦能訪問(wèn)到的sd卡中,再在手機(jī)上用re explorer移動(dòng)到目標(biāo)文件夾(手機(jī)必須root才可以做到)拦宣。
手機(jī)上操作:
首先cd
到.ssh文件夾截粗,然后將公鑰內(nèi)容復(fù)制到驗(yàn)證文件中
# 復(fù)制公鑰內(nèi)容到驗(yàn)證文件
cat ./id_rsa.pub >> authorized_keys
再獲取用戶名,比如說(shuō)u0_a118
whoami
還需要保證.ssh文件夾的權(quán)限為700(即rwx------)鸵隧,而且用戶為u0_a118绸罗。
通過(guò)執(zhí)行ll -a
命令可以查看當(dāng)前路徑下的所有文件和文件夾權(quán)限,但不能在普通用戶權(quán)限下執(zhí)行該命令掰派。
# 獲取管理員權(quán)限
su
# 進(jìn)入home目錄
cd data\data\com.termux\files\home
# 查看當(dāng)前路徑文件和文件夾權(quán)限
ll -a
若結(jié)果不對(duì)左痢,則需要修改
# 修改權(quán)限
chmod 700 .ssh
# 修改用戶和組
chown u0_a118:u0_a118 .ssh
同樣查看authorized_keys文件權(quán)限是否是600(rw-------)靡羡,用戶是否正確。不是的話按上述方法修改俊性。
此時(shí)已經(jīng)設(shè)置完成略步,通過(guò)sshd
命令即可開(kāi)啟ssh服務(wù)器。
# 指定端口9000
sshd -p 9000
電腦上操作:
命令行輸入ssh [username]@[host] -p [port]
即可連接定页,比如
ssh u0_a118@172.16.2.11 -p 9000
此后,在電腦命令行輸入指令典徊,手機(jī)即可執(zhí)行(但無(wú)任何顯示)杭煎,甚至手機(jī)可以熄屏。完美卒落!
最后羡铲,以成功運(yùn)行以前寫的爬蟲(chóng)程序圖結(jié)尾。