1. 程式人生 > >用Python爬取手機APP

用Python爬取手機APP

本文轉自:https://mp.weixin.qq.com/s?__biz=MzAxMjUyNDQ5OA==&mid=2653558162&idx=1&sn=73ae2ee5d2453773bceec078e39ca0ed&chksm=806e3b2fb719b239d391e13812796e179f47490c9b2e9ff7819710cc9441ef44eac5a9f924f5&mpshare=1&scene=1&srcid=1202Qqe8l1m5W2wGCS99CHER#rd

前言

如果你以為python只可以爬取web網頁,那就大錯特錯了,本篇文章教你如何爬取手機app的資訊。

Charles(抓包工具)的安裝

1.1 下載

由於是收費軟體,這裡給大家一個連結,自行下載,windows版本,如果是其他系統還是去官網咖。https://www.charlesproxy.com

windows版:

網盤下載連結及提取碼請掃碼關注文末公眾號後回覆“抓包”獲取

1.2 安裝證書

由於現在的網站基本全都是https通訊協議,所以我們需要配置SSL證書。

下載完成後開啟軟體。點選help–>SSL Proxying–>install Charles Root Centificate。

在彈出的安裝證書頁面,點選安裝證書,點下一步–選擇證書的儲存區域–下一步–選擇將所有的證書都放如下列儲存–瀏覽–受信任的根證書頒發機構–確定–下一個–是--安裝完成。

1.3 手機安裝證書(Android)

在pc端的Charles中檢視代理是否開啟。Proxy–>Proxy Settings。檢視HTTP Proxy 是否開啟,沒有開啟的點選 Enable transparent HTTP proxying,點選ok即可。

手機和電腦連同一個wifi,檢視一下電腦的ip地址。我的是192.168.1.17。開啟手機的wifi,連上wifi,代理,手動,主機名填寫ip地址,也就是192.168.1.17.預設埠號是8888,電腦上會彈出一個是否信任的視窗,點選Allow即可。

手機端在瀏覽器(不要用原裝瀏覽器)中開啟chls.pro/ssl

會彈出一個下載頁面,下載即可。

1.4 體驗一下Charles

點一下左側的掃把,清空,開啟監聽,即左側第二個按鈕。手機開啟qq,開啟列表一直劃,會看到左側出現了很多請求,遺憾的是隻能看到好友的頭像,其他內容都加密了。捕捉到資訊後點擊一下,再點選右邊的Contents,可以看下返回的資料,json,jsontext 等等,捕捉到的資訊足夠我們分析頁面就好了。可以自己動手體驗一下。

Appium的安裝

appium是什麼?和selenium很像,一個在pc端,一個在手機端而已。

appium下載地址:https://github.com/appium/appium-desktop/releases

Android Studio下載地址:https://developer.android.com/studio/index.html?hl=zh-cn

我們還需要安裝java環境。和nodejs,這些直接百度下載,安裝即可,需要配置好環境變數。

appium的使用

在這裡插入圖片描述
安裝好所有的配置環境後。我們開啟appium、會看到這個頁面。

我們直接點選 Start Server 即可。注意,appium使用的前提是需要android sdk和 java環境。如果沒有配置好,後面執行是會報錯的,出現錯誤可以後臺直接回復,看到會第一時間回覆。點選之後我們進入到這個頁面:
在這裡插入圖片描述
我們點選右上角第一個像搜尋的按鈕,建立一個新的Session,會出現:
在這裡插入圖片描述
此時我們需要將我們的Android手機用資料線和電腦連線,並且把手機的use除錯功能開啟。我們可以輸入dos命令,檢視手機是否已經連線並開啟了usb除錯功能。adb devices -l 會看到:
在這裡插入圖片描述
表示手機連線成功,如果沒有出現,說明可能手機沒有開啟usb除錯功能。model 表示手機型號.

接下來,我們在新建立的Session中寫點配置,實現自動開啟微信頁面。
在這裡插入圖片描述

"platformName": "Android",

"deviceName": "MI_6",

"appPackage": "com.tencent.mm",

"appActivity": ".ui.LauncherUI"

platformName:平臺名稱,我們的是Android。

deviceName:手機型號。

appPackage:微信的包名。

appActivity:微信的入口。

點選Save, 再點選Start Session,會看到如下頁面。
在這裡插入圖片描述
找到我們的登入按鈕,點選一下右側Tab,即可進入登入頁面:
在這裡插入圖片描述
同樣的,我們定位到手機號按鈕,點選右側的Send keys, 即可:
在這裡插入圖片描述
點選Send keys 即可同步。如果要生成對應的python程式碼,可以這樣:
在這裡插入圖片描述
點選最上方第三個錄製按鈕,再點一下Tab,在Recorder選擇python即可。

用python操控app

2.1 開啟微信

在這裡插入圖片描述
這樣即可達到開啟微信的操作。

2.2 點選登入輸入電話號碼

這裡需要有selenium的基礎和解析庫的基礎,不知道的可以看下:連線1,連線2
在這裡插入圖片描述

2.3 獲取微信按鈕的id

在這裡插入圖片描述
其他操作
上一個示例已經完成初始化desired capabilities,定位到元素,點選,文字輸入操作操作。

3.1 螢幕滾動操作

scroll(‘被操控元素’,‘目標元素’)

3.2 利用座標滾動

swipe(start_x,start_y,end_x,end_y,duration = None)

start_x:起始座標橫座標。

start_y:起始座標縱座標。

end_x:結束座標橫座標。

end_y:結束座標縱座標。

duration:點選的持續時間。

還有一個方法沒有持續時間,直接快速滑倒該位置。

flick(start_x,start_y,end_x,end_y)

3.3 拖拽操作

drag_and_drop(‘被拖拽元素’,‘拖拽到的目標元素’)

在這裡插入圖片描述

更多案例請關注“思享會Club”公眾號或者關注思享會部落格:http://gkhelp.cn/

在這裡插入圖片描述