写在前面
最近看猪八戒,想接单赚点外快,看了半天没有爬虫需求,看到什么制作算命网站、微信朋友圈采集。ok,来了点兴趣,之前做app爬虫使用的fiddler+xposed,可惜这种方法对于混淆+双向证书校验无效。在搜索过程中看到appium,对应网页端的selenium,本文记录下配置环境的过程。
Android Studio
下载地址
安装教程
注意配置好SDK的安装目录,并且务必记住此目录,等下需要添加虚拟环境
Appium
安装python包
pip install Appium-Python-Client
安装appium-desktop
Github地址
选择exe版本下载安装
如果下载速度过慢请使用手机流量下载,再传文件到电脑
安装过程也没有什么坑,只是会默认安装到C盘
添加虚拟环境:
在系统变量里添加变量名ANDROID_HOME,变量值为Android studio的SDK安装根目录
在系统变量Path里面添加%ANDROID_HOME%\platform-tools,注意与前一个值之间要有分号间隔
添加完成后按Win+R打开cmd,输入adb version验证是否配置成功
其余环境:
Microsoft .NET Framework 4.5
node.js
Java JDK
开始调试
我使用的是MuMu模拟器,adb连接使用如下命令:
adb connect 127.0.0.1:7555
再输入adb devices查看设备
输入adb shell进入shell环境
获取app包名:
csdn
如果已经安装该app,使用adb连接模拟器,然后在模拟器中启动,再在命令行中执行:
adb shell dumpsys window w |findstr \/ |findstr name=
或
adb shell dumpsys window | findstr mCurrentFocus
不要进入shell环境执行,findstr是windows命令
获取activity
csdn
启动app,执行下列命令
adb shell dumpsys window w | grep mCurrent
注意有些app加载完成后获取的activity可能无用,需要loading界面的activity
命令行启动app:
adb shell am start +包名/.Activity
执行上述命令即可看到模拟器启动了对应的app,如果失败请查找错误
配置Appium Desired Capabilities
首先启动Appium-desktop,点击右上角搜索样式按钮
{
#text,操作系统
"platformName": "Android",
#text,系统版本
"platformVersion": "6.0.1",
#text,名称(没有硬性要求)
"deviceName": "MuMu",
#text,app包名(某灵魂交友app)
"appPackage": "cn.soulapp.android",
#text,对应的activity
"appActivity": ".ui.splash.SplashActivity",
#bool,在启动时不重置应用
"noReset": true
}
点击右下角Start Session将启动该app并进入调试界面
python脚本样例
需打开模拟器,adb连接,启动appium-desktop(无需点击搜索框)
#导入webdriver模块
from appium import webdriver
#TouchAction执行辅助操作
from appium.webdriver.common.touch_action import TouchAction
#构造配置文件,与上面写的作用一致
caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "6.0.1"
caps["deviceName"] = "MuMu"
caps["appPackage"] = "cn.soulapp.android"
caps["appActivity"] = ".ui.splash.SplashActivity"
caps["noReset"] = True
caps["ensureWebviewsHavePages"] = True
#此项可以防止appium在无操作后退出,可以保留600秒
caps['newCommandTimeout']=600
#连接到appium-desktop,使用caps字典作为配置文件
driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
#该行代码将执行向上滑动操作,如果无效,可以尝试将long_press替换为press
TouchAction(driver).long_press(x=400, y=800).move_to(x=400,y=100).release().perform()
#该语句执行后app将会退出
#driver.quit()
更多操作请根据需要在网络中检索,总会找到你想要的答案
写在后面
配置环境忙活了半天,刷了两三条瞬间就完事儿了,说好的微信朋友圈采集也没有搞