目录
移动端数据简介
随着互联网的发展,数据不仅仅知识存在于PC端。移动端的数据在这几年的占比以及势头发展趋势呈现几何倍数的增长。对于做数据分析,用户画像,市场调研来说仅仅参考PC端的数据是不够的。那么与此同时移动的数据就显得尤为重要。
adb的简介与使用
adb的安装与使用
Adb又称Android调试桥,用于通过电脑端与模拟器或者是设备之间的交互的一个工具
Adb client 命令行程序‘adb’用于从shell或脚本中运行adb命令
Adb server adb server 是运行在PC的的一个后台程序
Adbd 程序adbd作为一个后台进程在Android设备或模拟器系统中运行
adb有什么作用?
- 安装卸载apk文件
- 移动设备和PC之间拷贝文件
- 查看设备上安装的应用信息
- 文件管理
- 按键操作
adb如何使用?
把adb的bin目录添加到环境变量当中
adb devices 查看链接的移动设备
adb kill-server 关闭链接的移动设备
adb install apk文件路径 安装app应用
adb shell pm list packages 查看应用包名
adb uninstall 应用包名 卸载应用
fiddler抓包工具的使用
常见App抓包软件对比
fiddler抓包工具
什么是fiddler?
Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯。
官网:
Windows安装Fiddler:
Fiddler安装及证书配置教程(Windows) - 柠檬草不孤单 - 博客园 (cnblogs.com)https://www.cnblogs.com/temari/p/13418037.html
fiddler功能
(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设置移动端数据包
夜神模拟器配置
注意,代理服务器端口为fiddler的端口号,默认为8888;
fiddler设置
然后打开模拟器的浏览器,搜索:本机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即可。
Appium爬取移动端
环境搭建
1.搭建java环境
2.搭建Android环境
Java环境
Java环境搭建:
java1.8安装及环境变量配置 - nojacky - 博客园https://www.cnblogs.com/nojacky/p/9497724.html
AndroidSDK环境搭建
将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,需要:
- 在你运行程序的电脑上 用 USB线 连接上 你的安卓手机
- 进入 手机设置 -> 关于手机 ,不断点击 版本号 菜单(5次以上),
- 退出到上级菜单,在开发者模式中,启动USB调试
如果用模拟器
- 打开设置,找到关于平板电脑
- 找到版本号,连续点击,直到弹出开启发开者模式
- 退出到上级菜单,在开发者模式中,启动USB调试
adb调试工具
ADB全名 Android Debug Bridge,是一个调试工具。
adb的构成和工作原理
adb包含三个部分
- client端:运行在开发机器中,用来发送adb命令
- 守护进程:运行在调试设备中,手机或模拟器,用来接收并执行adb命令
- server端:用来管理client端和手机的守护进程之间的通信
adb常用命令
获取包名和界面名
- 包名(package):决定程序的唯一性(不是应用的名字)
- 界面名(activity):目前可以理解,一个界面名,对应着一个界面
使用步骤
- 打开需要测试的应用程序
- 输入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}}}
- 包名为:com.android.settings
- 界面名为:.Settings
adb其他命令
Appium介绍和安装
Appium介绍
appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于iOS和Android操作系统。原生的应用是指Android或iOS的SDK编写的应用,移动网页应用是指网页应用,类似于ios中Safari应用或者Chrome应用或者类浏览器的应用。混合应用是指一种包裹webview的应用,原生应用于网页内容交互性的应用。
Appium环境搭建
使用Appium和Python来进行自动化测试,需要安装两个东西,一个是appium的客户端,一个是appium-python库,这两个需要安装的东西在加上手机就可以进行自动化测试了。他们之间的关系是:Python代码->Appium-Python库->Appium->手机。
教程:
启动成功展示:
appium-python库安装
pip install Appium-Python-Client
Appium抓取元素
即可像selenium一样在页面上提取数据了。
Appium快速使用
打开模拟器中的浏览器,输入百度网址并打开
步骤
- 打开手机模拟器
- 打开appium工具
- 创建Python项目
- 复制代码,并运行
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/
adb连接不到设备报错
将这个文件
复制到这里
然后将nox_adb改名为adb,原先的文件大家可以做个备份