Automatización de Captura de Tráfico con Appium

Instalación de Emulador Android

Descargar e instalar el emulador Nox Player desde su sitio oficial.

Herramientas de Captura

Instalación de Appium

Obtener Appium Desktop desde: https://github.com/appium/apppium-desktop/releases/tag/v1.11.0

Instalación de mitmproxy

Descargar paquete de instalación o usar: pip install mitmproxy
Configurar variables de entorno tras la instalación.

Configuración de Certificado

Ejecutar mitmdump:
$ mitmdump
Servidor proxy escuchando en http://*:8080

Configurar proxy en emulador usando la IP local. Navegar a mitm.it para instalar certificado.

Instalación de Docker

Descargar Docker Toolbox para Windows: https://docs.docker.com/toolbox/toolbox_install_windows/
Solucionar errores de VM actualizando VirtualBox.

Configuración de Fiddler

Establecer IP local como servidor proxy en dispositivos móviles.

Soluciones para Problemas de Red

Resolver bloqueos de red en apps usando herramientas de captura.

Extracción de Recetas de Douguo

Análisis de Tráfico

Endpoints principales:
- Categorías: http://api.douguo.net/recipe/flatcatalogs
- Detalles: http://api.douguo.net/recipe/v2/search/0/20

Implementación

# Cabeceras comunes
encabezados = {
    "client": "4",
    "dispositivo": "OPPO R11",
    "user-agent": "Mozilla/5.0 (Linux; Android 5.1.1...)",
    # ... otros parámetros
}

def procesar_peticion(url, datos):
    respuesta = requests.post(url, headers=encabezados, data=datos)
    return respuesta
# Procesamiento de categorías
def obtener_categorias():
    datos = {"client": "4", "_vs": "2305"}
    respuesta = procesar_peticion(URL_CATEGORIAS, datos)
    # Extraer subcategorías
    for subcat in respuesta.json()['result']['cs'][0]['cs']:
        datos_busqueda = {"keyword": subcat['name'], "order": "0"}
        cola_tareas.put(datos_busqueda)
# Almacenamiento en MongoDB
class ConexionMongo:
    def __init__(self):
        self.cliente = pymongo.MongoClient()
        self.bd = self.cliente['recetas_douguo']
    
    def insertar(self, item):
        coleccion = self.bd['datos_recetas']
        coleccion.insert_one(item)

Configuración de Android SDK

Descargar e instalar: http://tools.android-studio.org/index.php/sdk
Variables de entorno:
- ANDROID_HOME: Ruta de instalación
- PATH: %ANDROID_HOME%\tools y %ANDROID_HOME%\platform-tools

Actualización de ADB para Nox

Reemplazar archivos adb en directorio de instalación de Nox Player.

Uso de uiautomatorviewer

Localizar en: android-sdk/tools/uiautomatorviewer.bat

Pruebas con Appium

config = {
    "platformName": "Android",
    "deviceName": "127.0.0.1:52001",
    "appPackage": "com.tal.kaoyan",
    "appActivity": "com.tal.kaoyan.ui.activity.SplashActivity"
}

driver = webdriver.Remote("http://localhost:4723/wd/hub", config)
# Automatización de flujo
try:
    if driver.find_element_by_id('tv_skip'):
        driver.find_element_by_id('tv_skip').click()
except:
    pass

Extracción de Seguidores de Douyin

Análisis de Página Compartida

def decodificar_datos(html):
    mapeo_caracteres = [
        {'simbolos': [' ', ' '], 'valor': 0},
        # ... otros mapeos
    ]
    for grupo in mapeo_caracteres:
        for simbolo in grupo['simbolos']:
            html = html.replace(simbolo, str(grupo['valor']))
    return html

Automatización con Appium

def obtener_seguidores(controlador):
    controlador.find_element_by_id('btn_buscar').click()
    controlador.find_element_by_id('campo_busqueda').send_keys('706942127')
    controlador.find_element_by_id('filtro_usuarios').click()
    # ... interacción con lista

Captura con mitmdump

def response(flow):
    if 'follower/list/' in flow.request.url:
        for usuario in flow.response.json()['followers']:
            datos = {
                'id_compartir': usuario['uid'],
                'alias': usuario['nickname']
            }
            guardar_en_bd(datos)

Configuración Multi-dispositivo

dispositivos = ['127.0.0.1:62001', '127.0.0.1:62025']
for i, dispositivo in enumerate(dispositivos):
    config = {
        "udid": dispositivo,
        "bootstrapPort": 4723 + i*2
    }
    # Iniciar sesión Appium

Extracción de Videos de Douyin

Análisis de API

Estructura de URL:
https://www.iesdouyin.com/web/api/v2/aweme/post/?user_id=XXX&max_cursor=0&_signature=XXX

Solución de Firma

Implementar algoritmo de firma mediante análisis de JavaScript.

Enlaces sin Marca de Agua

Usar formato: https://aweme.snssdk.com/aweme/v1/play/?video_id=XXX

Etiquetas: Appium mitmproxy AndroidSDK UIAutomator MongoDB

Publicado el 7-5 06:48