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