你用過云手機(jī)嗎?
↑↑↑關(guān)注后"星標(biāo)"簡說Python
人人都可以簡單入門Python、爬蟲、數(shù)據(jù)分析 簡說Python推薦 來源:進(jìn)擊的Coder
作者:崔慶才
云服務(wù)器大家肯定不陌生了,有了一臺云服務(wù)器,我們可以通過 ssh 命令或者遠(yuǎn)程桌面即可連接并執(zhí)行相應(yīng)的命令對云服務(wù)器進(jìn)行控制。
云服務(wù)器大多都是 Linux、Windows Server 系統(tǒng),這些其實(shí)都是 PC。有的朋友可能就會好奇了:那既然有云 PC,那有沒有云手機(jī)呢?
答案當(dāng)然是有的。
所謂的云手機(jī)就是指一種搭建在云服務(wù)器上的虛擬手機(jī),這些云手機(jī)的功能與真正的手機(jī)基本相同,只不過我們拿不到真機(jī),云手機(jī)平臺可以提供給我們一些控制面板或者 API 來操控手機(jī)或者執(zhí)行相應(yīng)的命令來滿足我們的使用需求。
平臺
目前云手機(jī)平臺還是比較多的,個(gè)人比較推薦的是河馬云手機(jī)平臺,其官網(wǎng)為:http://www.longene.com.cn/,首頁如圖所示:
在河馬云手機(jī)平臺上,我們可以選購相應(yīng)的云手機(jī)并開通相應(yīng)的服務(wù)。
購買云手機(jī)之后,我們就可以在河馬云手機(jī)平臺的網(wǎng)頁中控制相應(yīng)的云手機(jī),其功能非常豐富,包括基礎(chǔ)控制、應(yīng)用管理、IP 切換、數(shù)據(jù)備份、日志調(diào)試、實(shí)時(shí)直播、adb 調(diào)試、遠(yuǎn)程虛擬相機(jī)等功能,其官網(wǎng)也有如圖所示的介紹:
接下來我們就來使用河馬云來演示下云手機(jī)的申請、使用過程。
購買云手機(jī)
首先我們需要注冊河馬云手機(jī)平臺的賬號,登錄之后點(diǎn)擊右上角的訂購入口,即可進(jìn)入訂購頁面,如圖所示:
這里我們可以選擇多個(gè)套餐,如基礎(chǔ)版、標(biāo)準(zhǔn)版、高級版、榮耀版,不同的版本都會顯示云主機(jī)的基本配置,如屏幕分辨率、內(nèi)存、CPU、安卓版本等信息。這里我們?yōu)榱藴y試,先購買了試用 1 天的榮耀版套餐。
管理云手機(jī)
支付之后我們便可以看到控制臺就出現(xiàn)了一部云手機(jī),呈現(xiàn)了手機(jī)的屏幕狀態(tài),同時(shí)在菜單欄中還有很多配置,如應(yīng)用管理、云機(jī)同步、實(shí)時(shí)直播等功能,如圖所示:
我們可以點(diǎn)擊該云主機(jī)打卡其控制面板,如圖所示。
這里我們可以對手機(jī)屏幕做任何的控制操作,如點(diǎn)擊打卡某個(gè) App、滑動(dòng)下拉查看通知欄等,和平常我們用的手機(jī)操作基本一致。另外在右側(cè)欄還有一系列基本控制,如音量控制、回到首頁、返回等等。
接下來我們想嘗試在云手機(jī)上裝一個(gè) App,在此之前,我們需要對云手機(jī)進(jìn)行分組操作,這里我們直接在控制面板進(jìn)行操作即可,如圖所示。
分區(qū)完成之后,我們就可以點(diǎn)擊“應(yīng)用安裝/卸載”按鈕來安裝一個(gè)應(yīng)用了。
這里我們首先下載下我們需要測試的應(yīng)用,從 https://app5.scrape.center 下載即可,保存為 scrape-app5.apk,然后上傳,如圖所示:
上傳之后,即可看到云主機(jī)提示“應(yīng)用同步中”,如圖所示。稍等片刻,應(yīng)用就可以安裝好了。
我們可以在云手機(jī)上查看其運(yùn)行效果,如圖所示:
這樣我們就成功實(shí)現(xiàn)了應(yīng)用的安裝和啟動(dòng)。
高級服務(wù)
另外云手機(jī)還有很多高級服務(wù),如切換 IP、遠(yuǎn)程相機(jī)、消息轉(zhuǎn)發(fā)、adb 調(diào)試等等,我們點(diǎn)擊配套服務(wù)即可查看,如圖所示:
我們可以在操作菜單中看到一些基本操作,如圖所示:
比如對于 IP 服務(wù)來說,我們可以點(diǎn)擊對應(yīng)的地區(qū)并確定,即可切換到對應(yīng)區(qū)域的 IP,如圖所示:
對于云機(jī)掃碼功能,我們可以選擇掃碼云機(jī)開始掃碼,被掃碼云機(jī)點(diǎn)擊進(jìn)入二維碼頁面,點(diǎn)擊掃碼按鈕即可開始掃描另一臺云機(jī)的二維碼,掃碼成功之后便會執(zhí)行相應(yīng)的掃碼處理流程,如圖所示:
ADB 調(diào)試
另外云手機(jī)還有 ADB 調(diào)試功能,該功能是單獨(dú)需要付費(fèi)購買的,購買之后我們可以通過云機(jī)菜單中的“調(diào)試ADB”來獲取 adb 遠(yuǎn)程連接信息,如圖所示:
點(diǎn)擊之后,頁面就會提示一個(gè)遠(yuǎn)程連接的 IP 和端口,其 IP 是 183.220.196.75,端口是 15998,如圖所示:
那怎么連接呢?
我們使用 adb connect 命令即可:
adb connect 183.220.196.75:15988
如果順利的話,運(yùn)行結(jié)果會提示 connected to 字樣,如圖所示:
連接成功之后,我們重新運(yùn)行 adb devices 命令,運(yùn)行結(jié)果的列表中就可以看到一臺遠(yuǎn)程的手機(jī)了,如圖所示:
這時(shí)候我們再嘗試用 Airtest 來實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)爬取,主要將手機(jī)的連接信息修改為該遠(yuǎn)程主機(jī)即可,代碼實(shí)現(xiàn)如下:
from re import T
from main import PACKAGE_NAME
from airtest.core.api import *
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
import adbutils
from multiprocessing import Process
class Controller(object):
def __init__(self, device_uri, package_name, apk_path, need_reinstall=False, need_restart=False):
self.device_uri = device_uri
self.package_name = package_name
self.apk_path = apk_path
self.need_reintall = need_reinstall
self.need_restart = need_restart
def connect_device(self):
self.device = connect_device(self.device_uri)
def install_app(self):
if self.device.check_app(self.package_name) and not self.need_reintall:
return
self.device.uninstall_app(self.package_name)
self.device.install_app(self.apk_path)
def start_app(self):
if self.need_restart:
self.device.stop_app(self.package_name)
self.device.start_app(self.package_name)
def init_device(self):
self.connect_device()
self.poco = AndroidUiautomationPoco(self.device)
self.window_width, self.window_height = self.poco.get_screen_size()
self.install_app()
self.start_app()
def scroll_up(self):
self.device.swipe((self.window_width * 0.5, self.window_height * 0.8),
(self.window_width * 0.5, self.window_height * 0.3), duration=1)
def run(self):
for _ in range(10):
self.scroll_up()
PACKAGE_NAME = 'com.goldze.mvvmhabit'
APK_PATH = 'scrape-app5.apk'
def run(device_uri):
controller = Controller(device_uri=device_uri,
package_name=PACKAGE_NAME,
apk_path=APK_PATH,
need_reinstall=False,
need_restart=True)
controller.init_device()
controller.run()
if __name__ == '__main__':
device_uri = 'Android://183.220.196.75:15998'
run(device_uri)
運(yùn)行之后即可發(fā)現(xiàn) Airtest 進(jìn)行了一系列初始化操作,在手機(jī)上安裝了一些 Airtest 相關(guān) App,如圖所示:
運(yùn)行代碼之后可以發(fā)現(xiàn),App 就自動(dòng)啟動(dòng)然后執(zhí)行了數(shù)據(jù)爬取操作,運(yùn)行界面如圖所示:
其最終運(yùn)行效果就是爬蟲控制手機(jī)點(diǎn)擊了一個(gè)個(gè)電影條目信息并爬取到了每部電影的詳情信息,最后將信息保存了下來。
總結(jié)
以上我們了解了云手機(jī)的申請和使用方法,云手機(jī)和正常的真機(jī)沒有太大差別,甚至還在真機(jī)的基礎(chǔ)上提供了增值服務(wù),這在一定程度上為我們的開發(fā)、數(shù)據(jù)爬取提供了一定的便利。
--END--
掃碼即可加我微信
觀看朋友圈,獲取最新學(xué)習(xí)資源
學(xué)習(xí)更多: 整理了我開始分享學(xué)習(xí)筆記到現(xiàn)在超過250篇優(yōu)質(zhì)文章,涵蓋數(shù)據(jù)分析、爬蟲、機(jī)器學(xué)習(xí)等方面,別再說不知道該從哪開始,實(shí)戰(zhàn)哪里找了 “點(diǎn)贊、留言”就是對我最大的支持!



















