整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          python爬蟲23 - 手機,這次要讓你上來自己動

          python爬蟲23 - 手機,這次要讓你上來自己動了

          有沒有想過讓你的手機幫你自動完成某些事情

          比如自動幫你搶紅包

          有些軟件不是有簽到活動么

          這些傻瓜式的操作

          能不能讓手機自動簽到呢?

          自動幫你叫外賣

          自動幫你打電話

          等等

          還有

          對于手機上的一些比較難以通過抓包獲取的數據

          想不想像 selenium 那樣輕松獲取?

          之前小帥b就給大家介紹了 selenium

          python爬蟲09 | 上來,自己動!這就是 selenium 的牛逼之處

          可以模擬人類自動操作瀏覽器上的網頁

          我們還使用它爬取了

          “雞你太美”

          python爬蟲11 | 帶你爬取b站上的NBA形象大使蔡徐坤和他的球友們

          相信你已經體驗到 selenium 的魅力了

          對于一些復雜的 PC 端的網頁爬取

          它就是個利器

          不過

          對于手機上的一些稍微復雜點的 APP 數據

          selenium 就顯得有點無能為力了

          那么

          有沒有像 selenium 這樣的框架

          可以模擬人類自動操作手機上的 APP 呢

          答案是肯定的

          那就是

          Appium

          如何讓它來自動操作我們的手機呢

          那么

          接下來就是

          學習 python 的正確姿勢

          為什么說 Appium 牛逼呢

          說 4 點足以

          1、他是開源的手機端自動測試框架

          2、selenium可以做的 Appium 都可以做,selenium不可以做的Appium 依然可以做,它能夠支持 Android、iOS、windows 系統的原生 APP 進行自動操作

          3、它可以支持不同的語言寫腳本,比如我們的 Python,還有Java、JavaScript 等

          4、以前你想要爬取 App 的數據的時,對于較難抓取的數據,你還需要對 App 進行反編譯,很麻煩,但是 Appium 就不需要這么麻煩

          那 Appium 是怎么玩的呢

          你可以把 Appium 當做是一個服務器

          我們將我們寫的控制操作 APP 的 python 代碼

          扔給 Appium

          Appium 得到了請求,看到你跟它說要怎么去操作 APP

          它就乖乖的聽你話去操作 APP 了

          我們在使用 Appium 之前

          我們需要安裝相關的環境才可以使用

          由于 Android 開源又好用,又有虛擬機可以玩

          所以我們要的就是自動操作 Android 手機

          具體來說

          我們需要安裝以下環境

          真香警告

          Appium 雖然比 selenium 對環境的要求相對復雜一丟,但是相信我,搞定之后你絕對會體驗到 Appium 的魅力,接下來要說的內容相對干貨,你需要拿出點時間,然后跟著 小帥b 一步一步裝起來,如果你之前沒接觸相關的環境安裝,可能在安裝過程中你會說幾次臟話,沒關系,"挖槽","TMD" 完之后,都給我安裝好以下內容。

          1、node.js 和 npm

          Appium需要

          2、JDK

          java 環境,Android需要這個環境

          3、Android SDK

          Android強大的開發工具包

          4、Android虛擬機

          可選,如果你用你的真雞也可以的,用 usb 插入電腦就行

          5、Appium

          我們的主角

          6、Appium-Python-Client

          python客戶端,用來連接 Appium

          7、Python

          python相信你早已經安裝了,還沒有安裝的是豬吧?

          那么接下來

          小帥b教你一步一步地安裝起來

          不同的操作系統安裝方式可能有些許不同

          但都差不多也就那會事

          1、安裝node和npm

          你可以到以下鏈接去下載 node 安裝包

          https://nodejs.org/zh-cn/download/

          然后一頓安裝

          windows安裝的時候記得勾選 Add to path (添加到環境變量)

          如果你和小帥b一樣用 ubuntu 這種類 Unix 系統的話輸個命令就行



          sudo apt-get updatesudo apt-get install nodejs

          然后你輸入命令 node -v

          如果顯示版本號就說明你成功安裝 node 了



          xiaoshuaib@xiaoshuaib:~$ node -vv10.15.3


          安裝 node 過程中同時也安裝了 npm 了

          輸入 npm -v 有顯示版本好的話說明你安裝好了 npm



          xiaoshuaib@xiaoshuaib:~$ npm -v6.4.1

          2、安裝JDK

          你可以到以下鏈接去下載 jdk

          https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

          根據你的系統自行選擇相應的 jdk

          安裝完成之后記得配置好 Java 環境變量

          如何配置 jdk 環境變量就不在這里說了

          因為不同的系統配置方式不同

          你可以自行 Google

          在你的終端輸入 javac ,如果你得到如下的東西說明你成功安裝好 jdk 和 配置好環境了


















          xiaoshuaib@xiaoshuaib:~$ javacUsage: javac <options> <source files>where possible options include:  -g                         Generate all debugging info  -g:none                    Generate no debugging info  -g:{lines,vars,source}     Generate only some debugging info  -nowarn                    Generate no warnings  -verbose                   Output messages about what the compiler is doing  -deprecation               Output source locations where deprecated APIs are used  -classpath <path>          Specify where to find user class files and annotation processors  -cp <path>                 Specify where to find user class files and annotation processors  -sourcepath <path>         Specify where to find input source files  -bootclasspath <path>      Override location of bootstrap class files  -extdirs <dirs>            Override location of installed extensions  -endorseddirs <dirs>       Override location of endorsed standards path  -proc:{none,only}          Control whether annotation processing and/or compilation is done....

          3、安裝Android SDK

          有些小伙伴可能之前沒開發過 Android

          不過沒關系

          Android SDK 是 Android 開發的工具包

          下載方式和 JDK 類似

          可以到以下鏈接去下載 sdk

          https://developer.android.com/studio#downloads

          如果你打不開這個鏈接的話

          可以用鏡像鏈接

          http://www.android-studio.org/index.php/download/hisversion

          下載完之后就一頓解壓

          解壓完之后打開 sdkmanager

          windows的話有界面

          直接選擇一個 Android 版本

          然后你點擊 install package 就可以了

          或者你也可以像 Linux 一樣

          解壓完之后

          進入目錄中的 /tools/bin

          輸入以下命令安裝最新的工具



          xiaoshuaib@xiaoshuaib:~/android/tools/bin$ ./sdkmanager "platform-tools" "platforms;android-28"
          

          接著配置一下環境變量

          ubuntu 的話可以這樣配

          打開 profile


           sudo vim /etc/profile

          添加你安裝的sdk的目錄




          export ANDROID_HOME=/home/xiaoshuaib/androidexport PATH=$PATH:${ANDROID_HOME}/toolsexport PATH=$PATH:${ANDROID_HOME}/platform-tools

          然后設置生效后重啟一下


          source /etc/profile

          windows配置環境變量的話

          也是這個道理

          在你的電腦--屬性--高級--環境變量

          新建一個變量 ANDROID_HOME

          值就是你剛剛解壓下來的 Android 目錄

          然后在你的 path 中添加


          ${ANDROID_HOME}/tools;${ANDROID_HOME}/platform-tools

          接著

          在命令行輸入 adb shell

          如果你出現和小帥b以下這樣的就說明你配置對了




          xiaoshuaib@xiaoshuaib:~$ adb shell* daemon not running; starting now at tcp:5037* daemon started successfully

          4、安裝 android 虛擬機

          其實你有真雞的話不用安裝也可以

          安裝虛擬機你可以到以下鏈接下載

          https://www.genymotion.com/download

          想當年小帥b在玩 Android 開發的時候就經常用 genymotion

          速度相對來說快了不少

          打開虛擬雞或者用你的真雞連接電腦(記得打開usb調試)

          然后輸入 adb devices

          如果你像小帥b一樣列出你現在的 Android 手機




          xiaoshuaib@xiaoshuaib:~$ adb devicesList of devices attached88CKBM622PAM  device

          那么就說明是正確的啦

          5、安裝 Appium

          第一種安裝方式

          使用命令行用 npm 安裝 Appium


          npm install -g appium

          ubuntu需要權限的話可以使用如下命令


          sudo npm install -g appium --unsafe-perm=true --allow-root

          第二種安裝方式

          你也可以到以下鏈接直接下載安裝包

          https://github.com/appium/appium-desktop/releases

          安裝完之后輸入命令 appium

          如果你和小帥b這樣的就說明成功安裝 Appium了




          xiaoshuaib@xiaoshuaib:~$ appium[Appium] Welcome to Appium v1.12.1[Appium] Appium REST http interface listener started on 0.0.0.0:4723

          6、Appium-Python-Client


          pip install Appium-Python-Client

          OK

          那么到現在我們就把該裝的裝完了

          酸爽~

          我們可以來安裝以下 appium-doctor 來檢測一下我們安裝的環境是否都可以了


          npm install -g appium-doctor

          安裝完之后輸入 appium-doctor

          如果你也出現這樣的

          congratulation

          你已經搞定所需環境啦

          事不宜遲

          趕緊整個小例子試試水先

          我們就讓它自動打開手機的微信 APP 吧

          確保手機連接到電腦





          xiaoshuaib@xiaoshuaib:~$ adb devicesList of devices attached88CKBM622PAM  device
          

          開啟 Appium




          xiaoshuaib@xiaoshuaib:~$ appium[Appium] Welcome to Appium v1.12.1[Appium] Appium REST http interface listener started on 0.0.0.0:4723

          寫個python














          # coding=utf-8
          from appium import webdriver
          desired_caps = {  'platformName': 'Android',  'deviceName': '88CKBM622PAM',  'platformVersion': '5.1',  'appPackage': 'com.tencent.mm',  'appActivity': 'com.tencent.mm.ui.LauncherUI' }
          driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

          運行python之后

          Appium 開始執行

          看看你的手機

          自動打開了!

          cool~

          ok

          本篇主要讓你知道怎么安裝這些所需要的環境

          可能你現在有點疑問

          怎么知道微信的包名的

          怎么知道微信的啟動頁面的

          python代碼如何寫自動操作的

          別急

          你先把環境安裝好

          下一篇

          小帥b將帶你使用 Appium 來爬取 APP 上的數據

          期待就好了

          帥b老仙

          法力無邊

          點贊關注一波

          給小帥b發點功

          近接到公司派的1個任務,讓我爬取騰訊新聞app的熱點榜


          此熱點新聞每10分鐘更新1次,所以需要每隔10分鐘爬取一次,然后保存下來。最簡單的辦法就是找電腦網頁版,但是翻遍所有網站也沒有找到這個接口,所以只好乖乖地從手機端爬了。

          手機端數據接口參數分析是一件很難的事,我們可以繞過此過程,在APP數據交換的過程通過mitmproxy工具將返回的數據攔截下來。

          這種方法的優點就是簡便,分析接口參數,缺點是需要一臺手機,不停地進行數據請求,速度相對較慢,但是對此次爬取來說足夠了。為了節省1部手機,我想到了爬取手機模擬器端APP數據。

          下面一起來看看我是怎么實現的吧

          第一步:安裝charles、appium、mitmdump和夜神手機模擬器


          1.安裝charles

          Charles是一款代理服務器,通過過將自己設置成系統(電腦或者瀏覽器)的網絡訪問代理服務器,然后截取請求和請求結果達到分析抓包的目的。

          ①下載:https://www.charlesproxy.com/latest-release/download.do

          下載完成后,點擊安裝,一路默認安裝即可。

          ②設置代理

          ③安裝證書

          依次點擊幫助——ssl代理——安裝charles root證書


          點擊確定,電腦端證書就安裝完成了

          再依次點擊幫助——ssl代理——在移動設備或遠程瀏覽器上安裝charles root證書

          然后在模擬器瀏覽器中輸入chls.pro/ssl,會自動下載手機端證書并安裝。

          2.安裝appium

          依次安裝Adroid SDK、JAVA和appium客戶端即可

          3.安裝mitmproxy

          mitmproxy是一個支持http和https的抓包程序,類似Fiddler、Cha,只不過它可以對接python1腳本。

          ①只需執行如下命令即可安裝:Pip install mitmproxy

          ②證書配置:在命令行輸入mitmdump,然后在用戶目錄找到CA證書


          雙擊mitmproxy-ca-cert.p12,在電腦上安裝證書,然后將mitmproxy-ca-cert.pem發送到模擬器上,在手機設置-安全-從SD卡安裝,選中此文件,安裝即可。

          4.安裝夜神手機模擬器

          安裝地址

          http://soft.onlinedown.net/soft/987318.html

          一直默認安裝即可

          第二步:用Charles分析出騰訊app熱點新聞數據接口


          首先設置模擬手機代理ip,長按WireSSID,點擊修改網絡


          設置好代理ip,保存即可。

          打開模擬器騰訊新聞APP,進入今日熱搜界面,然后在charles中找到該接口


          它的url信息為


          將該url在瀏覽器中打開


          該url看起來是比較復雜的,但是今天我們不去分析它,按照上述所說的方法抓取數據。

          第三步:用mitmdump抓包,保存熱點新聞數據

          首先設置代理ip,步驟同第二步,不過要把端口設置為8080

          然后編寫python腳本抓取第二步的接口

          有兩種數據流方式,一種是相應數據response,一種是請求數據request,本次用response,flow代表數據流


          為了篩選新聞熱點的數據流,根據第二步url的固定部分判斷該數據流是否是我們要的url,如果是,則保存flow.request.text,用json解析保存到表格內,至此腳本編寫完畢。在腳本所在路徑輸入mitmdump -s demo.py


          然后在模擬器中打開騰訊新聞今日熱搜界面

          再看看表格中保存的數據


          第四步:用appium控制手機模擬器定時啟動騰訊新聞APP

          第三步中是手動點擊查看熱點榜,因為此熱點信息是10分鐘更更新1次


          所以我們需要用appium寫個腳本,模擬循環進行此過程,同時mitmproxy腳本會截取最新的數據


          但是現在還是沒法打開模擬器里的騰訊新聞app,因為模擬器還未連接到主機,還需要在夜神模擬器所在安裝目錄bin路徑下運行以下代碼


          再檢測一下


          小結:app的爬取是爬蟲最難的部分,涉及很多復雜的逆向分析過程,這次只是借助模擬器介紹了1個非常簡單的app爬取過程,有興趣的朋友可以借此深入學習一下。

          1 模擬丁香園的高保真原型

          在一般的開發工作之前,我們通常會設計產品原型,大部分為axure繪制的線框圖作為產品的PRD文檔,供UI和開發進行前期工作,但是有的時候客戶、領導想在開發之前,看到產品的概貌,就必須做產品的高保真原型進行模擬,這時如果做出來的原型能運行在手機端,那再好不過,如圖1(注:上圖是仿照丁香園的家庭用藥,做的一個高保真原型,算是免費給丁香園打廣告,是不是考慮給我點廣告費?哈哈)。

          原型制作軟件有挺多,不過個人使用之后,最后還是依然堅持使用Axure,優點頗多,也可能是先入為主,這個教程Axure也是必須軟件之一,適配為iphone5s

          1、首選是制作高保真原型,如圖2:

          圖2 高保真的原型圖

          (注:高保真原型最好不要用太多內部框架嵌套,加載速度有點慢,還是用動態面板慢慢做,層級多了要有耐心)

          iOS的屏幕尺寸目前是有限的幾種,原型尺寸要和其一致。比如iphone5s視網膜下像素為640*1136(The default full screen size of the iPhone 5 is 320 x 568 px (w x h).就是說320*568已經可以鋪滿全屏,不過,由于Axure導出的原型在iOS上處理status bar時有問題,需要在高度上減去status bar的高度20,就為320*548,所以保證原型的高寬為320和548,如圖3整體高度為548px:

          圖3 高寬為320*548

          2、F8進行生成設置,設置如下圖4:

          圖4 配置設置

          按照上圖,設置參數(注:不過閃屏頁面一直無法出現,這個問題我也沒得到解決,有解決的可以回復我)

          3、生成原型文件,上傳到axureshare或者放置在EasyWebSevr的根目錄下,用本機IP替代電腦名稱,獲得完整路徑。(不清楚的點擊上期內容如何用EasyWebSvr搭建axure本地環境)

          4、復制生成的html中原型鏈接,選擇without Sitemap,如圖5:

          圖5 復制鏈接

          5、在safari中粘貼鏈接,并打開,已經可以看到和屏幕寬度的界面,并添加到主屏幕,如圖6:。

          圖6 添加到主屏幕

          6、可以通過桌面的快捷icon,進入原型,這個時候已經適配了手機,躺著桌面的icon,絲毫不會讓人看得出是原型,下圖7:

          圖7 test桌面icon快捷啟動

          本文作者:某人某年; 轉載自:簡書


          主站蜘蛛池模板: 亚洲av日韩综合一区二区三区| 精品视频一区二区三区四区五区| 国产成人无码AV一区二区在线观看| 久久精品国产免费一区| 亚洲国产精品无码第一区二区三区| 国产成人无码AV一区二区| 国产日韩精品一区二区在线观看| 日韩免费无码视频一区二区三区| 久久一区二区免费播放| 亚洲AV综合色区无码一区爱AV| 免费无码AV一区二区| 国产亚洲一区二区三区在线| 无码少妇一区二区浪潮av| 免费看无码自慰一区二区| 蜜桃传媒一区二区亚洲AV| 乱子伦一区二区三区| 无码免费一区二区三区免费播放| 国产福利一区二区在线视频 | 国产人妖视频一区在线观看| 在线观看日本亚洲一区| 亚洲国产视频一区| 无码人妻一区二区三区一| 中文字幕无线码一区2020青青| 一区国产传媒国产精品| 一本久久精品一区二区| 人妻互换精品一区二区| 精品国产一区二区三区久| 国产福利一区视频| 亚洲日本一区二区一本一道| 精品国产亚洲一区二区在线观看| 国产高清精品一区| 国产一区二区福利| 国产短视频精品一区二区三区| 亚洲综合无码一区二区痴汉 | 久久综合精品不卡一区二区| 日本一区二区在线| 偷拍激情视频一区二区三区| 日韩精品一区二区三区中文3d| 人妻体内射精一区二区| 人妻少妇精品一区二区三区| 亚洲av综合av一区|