目录
移动端数据简介
adb的简介与使用
adb的安装与使用
adb有什么作用?
adb如何使用?
fiddler抓包工具的使用
常见App抓包软件对比
fiddler抓包工具
什么是fiddler?
fiddler功能
Fiddler设置移动端数据包
夜神模拟器配置
fiddler设置
Appium爬取移动端
环境搭建
Java环境
AndroidSDK环境搭建
adb调试工具
adb的构成和工作原理
adb常用命令
Appium介绍和安装
Appium介绍
Appium环境搭建
Appium抓取元素
Appium快速使用
adb连接不到设备报错
随着互联网的发展,数据不仅仅知识存在于PC端。移动端的数据在这几年的占比以及势头发展趋势呈现几何倍数的增长。对于做数据分析,用户画像,市场调研来说仅仅参考PC端的数据是不够的。那么与此同时移动的数据就显得尤为重要。
Adb又称Android调试桥,用于通过电脑端与模拟器或者是设备之间的交互的一个工具
Adb client 命令行程序‘adb’用于从shell或脚本中运行adb命令
Adb server adb server 是运行在PC的的一个后台程序
Adbd 程序adbd作为一个后台进程在Android设备或模拟器系统中运行
把adb的bin目录添加到环境变量当中
adb devices 查看链接的移动设备
adb kill-server 关闭链接的移动设备
adb install apk文件路径 安装app应用
adb shell pm list packages 查看应用包名
adb uninstall 应用包名 卸载应用
Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯。
官网:
Fiddler | Web Debugging Proxy and Troubleshooting SolutionsExplore the Fiddler family of web debugging proxy tools and troubleshooting solutions. Easily debug, mock, capture, and modify web and network traffic.https://www.telerik.com/fiddler
Windows安装Fiddler:
Fiddler安装及证书配置教程(Windows) - 柠檬草不孤单 - 博客园 (cnblogs.com)https://www.cnblogs.com/temari/p/13418037.html
(1)支持IE,Chrome,FireFox等等浏览器;
(2)可以在phone,pad等移动设备进行连接;
(3)fiddler教程:
fiddler配置及使用教程 - purplelavender - 博客园 (cnblogs.com)https://www.cnblogs.com/woaixuexi9999/p/9247705.html【Fiddler学习】Fiddler教程,比较经典全面(转) - 伊凡Ivan - 博客园 (cnblogs.com)https://www.cnblogs.com/conquerorren/p/8472285.html
注意,代理服务器端口为fiddler的端口号,默认为8888;
然后打开模拟器的浏览器,搜索:本机ip:代理端口号,下载证书;
然后对它随意命名即可:
这样fiddler就设置好了,我们就可以使用fiddler抓取到数据包了。
然后用requests模块正常发送请求即可;如:
import requests
headers = {
'Host': 'mapi.kyboye.com',
'User-Agent': 'KaoYanBang AipBot/1.0 (KaoYanClub-Android/3.2.9; android/7.1.2; samsung+SM-G9810)'
}
url = 'https://mapi.kyboye.com/club/thread/guide?type=5&skip=0&psize=40&_t=1649396710844'
res = requests.get(url, headers=headers)
print(res.json())
这里要强调的是,fiddler获取header和url:
点击Just url和Headers only即可。
1.搭建java环境
2.搭建Android环境
Java环境搭建:
java1.8安装及环境变量配置 - nojacky - 博客园https://www.cnblogs.com/nojacky/p/9497724.html
java1.8安装_2020JDK1.8安装教程详解(一次就可安装成功)_不懂就承认的博客-CSDN博客https://blog.csdn.net/weixin_29216049/article/details/114034465
将SDK保存到任意硬盘下
Android SDK文件夹解压到任意目录
配置环境变量
1.进入我的电脑 -> 属性 -> 高级系统设置 -> 环境变量
2.在系统变量下点击新建 -> 变量名: ANDROID_HOME -> 变量值:D:\android-sdk -> 点击确定按钮
3.在系统变量下找到系统的path变量,最后添加:;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;(最前面是一个分号,如果path变量最后已有分号,可不用添加) -> 点击确定按钮或直接添加D:\androidsdk\platform-tools
验证环境变量
重启命令行工具,命令行输入adb,不报错即可
与模拟器设备相连
上述的软件环境都准备好以后,要自动化手机APP,需要:
如果用模拟器
ADB全名 Android Debug Bridge,是一个调试工具。
adb包含三个部分
获取包名和界面名
使用步骤
adb shell dumpsys window windows | findstr mFocusedApp
打开设置界面,输入命令adb shell dumpsys window windows | findstr mFocusedApp
adb shell dumpsys window windows | findstr mFocusedApp
mFocusedApp=AppWindowToken{2c5d0fc token=Token{39766def ActivityRecord{2d26ace u0 com.android.settings/.Settings t2}}}
adb其他命令
appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于iOS和Android操作系统。原生的应用是指Android或iOS的SDK编写的应用,移动网页应用是指网页应用,类似于ios中Safari应用或者Chrome应用或者类浏览器的应用。混合应用是指一种包裹webview的应用,原生应用于网页内容交互性的应用。
使用Appium和Python来进行自动化测试,需要安装两个东西,一个是appium的客户端,一个是appium-python库,这两个需要安装的东西在加上手机就可以进行自动化测试了。他们之间的关系是:Python代码->Appium-Python库->Appium->手机。
教程:
Appium环境搭建超详细教程 - 知乎前言:本系列教程会从软件的基本安装开始,最终目的是通过完成几个案例后, 大家实现 自由抓取App中想要的资源。本系列以后会更的: Appium基本使用及控制真机及安卓模拟器Mitmproxy抓包工具的基本使用Fiddler抓包软件…https://zhuanlan.zhihu.com/p/49193525
启动成功展示:
appium-python库安装
pip install Appium-Python-Client
即可像selenium一样在页面上提取数据了。
打开模拟器中的浏览器,输入百度网址并打开
步骤
from appium import webdriver
caps = dict()
caps['platformName'] = 'Android'
caps['platformVersion'] = '5.1.1'
caps['deviceName'] = 'Android'
caps['appPackage'] = 'com.android.browser'
caps['appActivity'] = '.BrowserActivity'
caps['unicodeKeyboard'] = True
caps['resetKeyboard'] = True
caps['noReset'] = True
caps['newCommandTimeout'] = 6000
caps['automationName'] = 'UiAutomator2'
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps)
driver.get('https://www.baidu.com/')
打开游戏中心并搜索淘宝
from appium import webdriver
from appium.webdriver.extensions.android.nativekey import AndroidKey
caps = dict()
caps['platformName'] = 'Android' # 被测手机是安卓
caps['platformVersion'] = '5.1.1' # 手机安卓版本
caps['deviceName'] = 'Android' # 设备名,安卓手机可以随意填写
caps['appPackage'] = 'com.bignox.app.store.hd' # 启动APP Package名称
caps['appActivity'] = '.ui.activity.MainActivity' # 启动Activity名称
caps['unicodeKeyboard'] = True # 使用自带输入法,输入中文时填True
caps['resetKeyboard'] = True # 执行完程序恢复原来输入法
caps['noReset'] = True # 不要重置App
caps['newCommandTimeout'] = 6000
caps['automationName'] = 'UiAutomator2'
# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps)
# 设置等待时间
driver.implicitly_wait(10)
try:
skip = driver.find_element_by_id('com.bignox.app.store.hd:id/btn_skip')
if skip:
skip.click()
except:
pass
driver.find_element_by_id('com.bignox.app.store.hd:id/tv_search').click()
search = driver.find_element_by_id('com.bignox.app.store.hd:id/et_word')
search.send_keys('淘宝')
# 输入回车键,确定搜索
driver.press_keycode(AndroidKey.ENTER)
注:
from appium import webdriver
# from selenium import webdriver
caps = dict()
# 系统
caps['platformName'] = 'Android'
# 手机安卓版本 5 5.1 5.1.1
caps['platformVersion'] = '5.1.1'
# 设备名字 可以随便写
caps['deviceName'] = 'Android'
# 包名
caps['appPackage'] = 'com.tal.kaoyan'
# 界面名字
caps['appActivity'] = '.ui.login.LoginActivity'
# 使用自带的输入法,输入中文填True
caps['unicodeKeyboard'] = True
# 执行完程序恢复原来输入法
caps['resetKeyboard'] = True
caps['noReset'] = True
# localhost
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps)
Appium文档:API Documentation - Appiumhttp://appium.io/docs/en/about-appium/api/
将这个文件
复制到这里
然后将nox_adb改名为adb,原先的文件大家可以做个备份