前言 我看到有很多人在賣一款軟體,價格還有點小貴。我就想著能不能自己做一款分享給你們,現在我來講一講我這個demo的思路。 利用Python去控制咱們的手機,這樣的話全天24小時你可以解放你自己的雙手,功能的話可以根據自己的需求多樣化。 既然要控制手機,那麼咱們需要利用到一個工具 ADB ,這個東西 ...
前言
我看到有很多人在賣一款軟體,價格還有點小貴。我就想著能不能自己做一款分享給你們,現在我來講一講我這個demo的思路。
利用Python去控制咱們的手機,這樣的話全天24小時你可以解放你自己的雙手,功能的話可以根據自己的需求多樣化。
既然要控制手機,那麼咱們需要利用到一個工具 ADB ,這個東西叫做安卓控制橋梁,顯而易見,只能控制Android系統。學過逆向的同學對這款工具應該不陌生吧?
我們今天來做個小案例,實現dy自動關註腳本。
第一步:利用Python來對手機進行截屏並保存圖片
def sreencap():
os.system('adb shell screencap -p /sdcard/screen.png')
os.system('adb pull /sdcard/screen.png')
第二步:找坐標
在這裡我就不講其它的思路了,直接講我的思路。根據顏色差進行判斷點擊,首先我們可以發現每個關註的按鈕它的橫坐標是不變的,變動的只有縱坐標
那麼我們可以去查看當前某個點的橫坐標位置作為定值
很明顯可以看到咱們的屏幕像素為1080X1920,而註字的那個頂點位置的橫坐標為929至於縱坐標1483這個值對我們沒有任何意思,當你往下移動看到另一個註字的時候,橫坐標929不變,縱坐標會發生變化。
此時有人會想到每個註字之間的距離是一致的,那麼能不能每隔一段距離就點擊一下呢?
不行,如果是這種情況你該如何?第一次的點擊位置在哪裡如何確定?
第三步:找出顏色差
可以發現這個頂點位置的RGB顏色值為(254,76,111),那麼思路就來了,取X為定值929,遍歷Y坐標1920,判斷這條線上的所有像素點,是否有顏色值為(254,76,111)的,如果有,就取出這個點,然後進行模擬點擊不就好了嗎?
def getY_position():
y_list=[]
image = Image.open('screen.png')
for i in [929]:
for y in range(1920):
if image.getpixel((i,y)) == (254, 76, 111, 255):
y_list.append(y)
return y_list
第四步:模擬點擊
y_position = getY_position()
for y in y_position:
os.system('adb shell input tap 929 {}'.format(y))
你以為這樣就結束了? NO! 咱們還需要翻頁,往下滑動呀!
os.system('adb shell input swipe X1 Y1 X2 Y2')