APP爬取环境配置

环境配置

Charles抓包工具

Charles教程:https://www.axihe.com/tools/charles/charles/tutorial.html

Charles证书配置

注意,在Android 7以上Charles无法代理https请求,系统默认不信任用户证书,解决方法:

  • 更换Android 7以下的安卓手机测试
  • 修改apk文件,配置安全策略,需要反编译apk文件,较麻烦

mitmproxy抓包工具

mitmproxy地址:https://github.com/mitmproxy/mitmproxy/releases

安装:pip install mitmproxy

mitmproxy证书配置

对接python脚本:mitmdump -s script.py

注意:

  • 在Windows上不支持mitmproxy的控制台接口,使用mitmdump、mitmweb
  • Charles默认在本地的8888端口开启一个代理服务,mitmproxy为8080
  • Charles一般用于抓包分析,mitmproxy则可对接python脚本:重写request(flow)、response(flow)方法等

Appium自动化测试工具

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

Android Studio(包含Android SDK):https://developer.android.google.cn/studio/

Appium启动安卓APP,Desired Capabilities:
{
“platformName”: “Android”,
“deviceName”: “1801_A01”,
“appPackage”: “com.tencent.mm”,
“appActivity”: “.ui.LauncherUI”,
}

python启动安卓APP:

  1. 安装模块:pip install Appium-Python-Client -i https://pypi.tuna.tsinghua.edu.cn/simple
  2. 自动启动WX并登录
from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep

server = 'http://localhost:4723/wd/hub'
desired_caps = {
    'platformName': 'Android',
    'deviceName': '1801_A01',
    'appPackage': 'com.tencent.mm',
    'appActivity': '.ui.LauncherUI'
}

driver = webdriver.Remote(server, desired_caps)
wait = WebDriverWait(driver, 5)
login = wait.until(EC.presence_of_element_located((By.ID, 'com.tencent.mm:id/e80')))
login.click()
phone = wait.until(EC.presence_of_element_located((By.ID, 'com.tencent.mm:id/l3')))
phone.set_text('18888888888')
next_1 = wait.until(EC.presence_of_element_located((By.ID, 'com.tencent.mm:id/ay8')))
next_1.click()
passwd = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@resource-id="com.tencent.mm:id/dbs"]/android.widget.EditText')))
passwd.set_text('123456')
login_1 = wait.until(EC.presence_of_element_located((By.ID, 'com.tencent.mm:id/ay8')))
login_1.click()
yes = wait.until(EC.presence_of_element_located((By.ID, 'com.tencent.mm:id/b00')))
yes.click()

sleep(10)

appPackage为APP包名,appActivity为APP入口类,获取方式:

  1. 手机通过数据线连接电脑,开启USB调试,命令行:adb devices -l,若发现设备则连接成功
  2. 手机打开APP,命令行:adb shell dumpsys activity activities >D:\log.log
  3. 日志搜索cmp关键字

注意:

  • 由于没有Java环境,Appium启动安卓APP一直失败
  • python启动过程APP过程中,出现socket hang up报错,导致程序异常停止,原因:由于Appium、python同时打开APP,会导致socket接口冲突而中断连接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值