¿Cómo domesticar a Charles Proxy?

¡Hola! Muchos de los que acuden a nosotros para entrevistas para un puesto de tester aseguran con orgullo que pueden utilizar Charles Proxy. Pero cuando se sumerge en la parte técnica, resulta obvio que el candidato solo ha oído hablar de esta herramienta. ¡Por fin domestiquemos este jarrón!







Wikipedia nos dice que:



Charles es una aplicación de proxy de depuración HTTP multiplataforma escrita en Java. Permite al usuario ver HTTP, HTTPS y el tráfico del puerto TCP habilitado al que se accede desde, hacia oa través de la computadora local. Esto incluye solicitudes y respuestas, incluidos encabezados HTTP y metadatos (como cookies, información de codificación y almacenamiento en caché), con funciones diseñadas para ayudar a los desarrolladores y evaluadores a analizar conexiones e intercambiar mensajes.


Una pequeña explicación El



rastreo es el proceso de monitorear e interceptar todos los paquetes que pasan por la red usando herramientas de rastreo (Charles Proxy).



Los primeros pasos



1. Instalación y lanzamiento



Primero necesita descargar e instalar la aplicación.



Si no ha comprado una licencia, estará disponible una versión de prueba de 30 días con restricciones (la funcionalidad no está bloqueada, pero las ventanas aparecerán con un tiempo de espera de 5 a 10 segundos antes de reanudar el uso y la aplicación finalizará después de 30 minutos).



2. Comenzamos a rastrear el tráfico



Inicie Charles Proxy, vaya al menú AyudaProxy SSLInstalar certificado raíz Charles (ver 1) → Instalar certificadoImportar el certificado .







Ahora ve las solicitudes, pero están encriptadas y no se ve nada excepto los jeroglíficos. Para ver la Solicitud / Respuesta en su forma normal, debe habilitar el Proxying SSL y configurar los dominios cuyos paquetes queremos interceptar. Y queremos recibir solicitudes de todos los sitios. Para hacer esto, vaya a ProxyConfiguración de proxy SSL .







En el cuadro de diálogo que se abre, marque la casilla de verificación Habilitar proxy SSL , seleccione la sección Incluir y haga clic en Agregar .







A continuación, complete el campo Host con * (como se muestra en la captura de pantalla) y haga clic en Aceptar .







En el cuadro de diálogo Configuración de proxy SSL, haga clic en Aceptar .







Ahora puede ver las solicitudes enviadas al servidor y las respuestas del servidor.



3.



Proxy del tráfico del navegador web Cuando reinicia Charles, solo necesita activar el Proxy de Windows (si tiene Windows) o el Proxy de Mac.







4. Configuración de un proxy en Android



Para mostrar solicitudes de aplicaciones de Android, debe tener un ensamblado de aplicaciones de Android correspondiente con el permiso establecido en el manifiesto. Supongamos que tenemos una aplicación de este tipo y queremos empezar a recibir tráfico de ella.



Para hacer esto, averiguamos la dirección IP de la PC: en Charles Proxy, vaya a AyudaDirección IP local . Vemos que su IP: 192.168.1.50.







A continuación, levante el teléfono, abraPropiedades de red -> Nombre de red WiFi -> Servidor proxy -> Manual -> Nombre de host: * su IP * / Puerto: * 8888 * -> Guarde las propiedades de red modificadas.



Ahora debe seguir el enlace chls.pro/ssl o charlesproxy.com/getssl , y luego comenzará la descarga automática del certificado. Ábralo, establezca un nombre para el certificado y ahora tendrá acceso al tráfico de la aplicación de Android.



5. Configuración de un proxy en iOS



Tome su iPhone en la mano, abra Propiedades de red → Nombre de red WiFi → Servidor proxy → Manual → Nombre de host: * Nuestra IP * / Puerto: * 8888 * → Guarde las propiedades de red cambiadas.



Ahora debe seguir el enlace chls.pro/ssl o charlesproxy.com/getssl, "Permitir" la carga del perfil de configuración. A continuación, vaya a ConfiguraciónPerfil cargadoInstalar . Luego vaya a ConfiguraciónGeneralAcerca de este dispositivoCertificados de confianza → busque el certificado instalado y conviértalo en "Confianza".



Funcionalidad Charles Proxy



  1. Sustitución de datos:

  2. Apoderado:

  3. Herramientas:

  4. Configuración de grabación
  5. Atención
  6. Repetir
  7. Repetir avanzado


1. Sustitución de datos



Imaginemos que necesitamos probar el diseño en el cliente. Debe verificar cómo se mostrará una gran cantidad de bonificaciones de usuario. Una de las opciones que muchos ofrecerán: cambiar la cantidad de bonificaciones en la base de datos y verificar el cliente. ¡Sí, tendrás razón! Sin embargo, el servidor puede tener un caché y debe esperar un tiempo hasta que se actualice la cantidad de bonificaciones, o simplemente conectarse a la base de datos y ejecutar la solicitud; esto lleva una cierta cantidad de tiempo. Hay una opción más sencilla: ¡cambiar la respuesta del servidor! Charles Proxy tiene tres formas de falsificar datos:



1.1 Punto de interrupción



Breakpoint es una especie de breakpoint para una solicitud. Cuando se encuentra una solicitud de la lista especificada, se abre una ventana separada para una mayor interacción manual con los parámetros de la solicitud. En él, vaya a cambiar manualmente las solicitudes y respuestas. Es conveniente utilizar esta función al probar API o diferentes respuestas del servidor.



Tenemos una aplicación y un perfil de usuario que actualmente tiene 0 bonificaciones en su cuenta:





La solicitud en la que viene este número de bonificaciones: https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8







Para "colgar" Breakpoint en la solicitud, vaya a la sección ProxyConfiguración de Breakpoint . A continuación, marque la casilla de verificación Habilitar puntos de interrupciónAgregar y, en el cuadro de diálogo "Editar punto de interrupción" que se abre, pegue la URL de la solicitud como se muestra en la captura de pantalla:







Por ejemplo, marque las casillas de verificación "Solicitud" y "Respuesta". Luego haga clic en Aceptar y en Aceptar nuevamente en la ventana Configuración de punto de interrupción. Ahora vuelva a ejecutar la solicitud, es decir, el cliente volverá a abrir la pantalla con el perfil de usuario.



En Charles Proxy, podemos ver que la solicitud está en pausa:







Aquí puede cambiar los parámetros de la solicitud. Pero ahora no necesita hacer esto, haga clic en "Ejecutar". A continuación, pausamos la respuesta ya recibida del servidor. Aquí es donde necesitamos editar la "Respuesta". Encuentre el parámetro requerido - bonus_cnt»: 45.







Luego cambie el valor del parámetro bonus_cnt, por ejemplo, a 1.000.000 de bonificaciones y haga clic en "Ejecutar".







El cliente muestra la nueva cantidad de bonificaciones. ¡Somos ricos!





1.2 Reescribir



Rewrite es una herramienta que le permite crear reglas que modifican solicitudes y respuestas a medida que pasan por Charles Proxy. Por ejemplo, puede agregar y cambiar un título, buscar y reemplazar texto en el cuerpo de una respuesta o solicitud, etc.



Intentemos usar Rewrite para cambiar la cantidad de bonificaciones de nuestros usuarios. Para hacer esto, abra HerramientasReescribir → marque la casilla “ Habilitar reescritura ” → Agregar . En el campo Nombre , puede ingresar cualquier nombre para la sustitución, por ejemplo, "Cambiar bonificación", o dejar el "Conjunto sin título" predeterminado.







El siguiente paso es agregar la ruta de solicitud a "Ubicación". Para hacer esto, en la sección UbicaciónAgregarcomplete los siguientes campos y guarde:



Host: https://api.youla.io



Ruta: /api/v1/user/5e6222bbbedcc5975d2375f8







Después de haber agregado la ruta de solicitud, necesita cambiar el parámetro en sí y su valor. Para hacer esto, necesita crear una regla de reescritura :



Tipo: Cuerpo (porque el parámetro está en el cuerpo);



Donde: Respuesta (porque el parámetro está en la respuesta del servidor);



Sección de coincidencia: en "Valor" especifique el valor y el parámetro que devuelve el servidor;



Reemplazar sección: En "Valor" especifique el valor y el parámetro que desea ver en el cliente.







A continuación, guarde la "Regla de reescritura" y haga clic en Aceptar en la pestaña "Configuración de reescritura". En el cliente, vuelva a solicitar el perfil de usuario. Ha cambiado automáticamente el número de bonificaciones de usuario. ¡Somos ricos otra vez!





1.3 Mapa local



Map Local es una herramienta que te permite utilizar archivos locales como si fueran parte de un servidor.



Vaya a Herramientas → Mapa local.







A continuación, en la ventana Configuración local del mapa, haga clic en Agregar → Host: https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8Ruta local : la ruta en la computadora al archivo. Puede utilizar archivos multimedia prefabricados, HTML, CSS, JSON, XML. Es más adecuado, por supuesto, que los desarrolladores no carguen datos en el servidor para su posterior prueba, pero un tester también puede encontrar una aplicación competente. Hemos preparado la respuesta que necesitaremos con anticipación y la guardamos en el archivo change_bonus.json:







Guarde los valores ingresados ​​en la pestaña Editar asignación y la pestaña Configuración local del mapa.







En el cliente, vuelva a solicitar el perfil de usuario. Ha cambiado automáticamente el número de bonificaciones de usuario. ¡Somos ricos otra vez!





Echemos un vistazo a otras características de la herramienta Charles Proxy. Y comencemos desde el principio, con la pestaña "Proxy".



2.1 Configuración del acelerador



Throttle Settings es una función que le permite configurar diferentes parámetros de la velocidad de conexión con el dominio seleccionado.



Una función para aquellos a los que les gusta probar en el ascensor, en el metro, en el paso subterráneo. Vayamos a ProxyThrottle Settings → la casilla de verificación Enable Throttling . Si no comprende todos los puntos anteriores, puede usar el preajuste del acelerador y seleccionar la velocidad adecuada para la prueba, y el sistema completará automáticamente el resto de los campos.







Si selecciona "Solo para hosts seleccionados", puede establecer un host específico al que se aplicará su configuración. Aquí puede usar ajustes preestablecidos listos para usar con configuraciones para varios tipos (4G, 3G, etc.). Y también puede establecer varios parámetros, enumeraré brevemente algunos de ellos:



El ancho de banda es la cantidad máxima de datos que se pueden transferir a lo largo del tiempo.



La utilización es la fracción del ancho de banda total que se puede proporcionar al usuario en un momento dado.



Latencia : latencia en milisegundos en la primera solicitud entre el cliente y el servidor remoto.



MTU es la unidad de transmisión máxima para el preajuste actual.



Fiabilidad : una medida de la probabilidad de que falle una conexión. Se utiliza para simular condiciones de red poco fiables.



La estabilidad es una medida de la probabilidad de que una conexión sea inestable y, por lo tanto, disminuya su calidad. Útil para simular redes en las que la calidad de la comunicación cae periódicamente, por ejemplo, el móvil.



2.2 Proxies inversos



El proxy inverso es un servidor proxy inverso. Suele utilizarse para recibir solicitudes de Internet y redirigirlas a uno de los servidores web.







2.3 Reenvío de puertos



El reenvío de puertos , a veces denominado reenvío de puertos, o tunelización, es el proceso de reenvío de tráfico dirigido a un puerto de red específico de un nodo de red a otro. Este método permite que un usuario externo llegue a un puerto dentro de la red local.







2.4 Proxy de MacOS / Proxy de Windows



Proxy de MacOS o Proxy de Windows (según su sistema operativo): envía el tráfico de proxy desde su navegador web.







Habiendo tratado con la sección Proxy, pasemos a la sección Herramientas.



3.1 Sin almacenamiento en caché



La herramienta Sin almacenamiento en caché evita el almacenamiento en caché al manipular los encabezados HTTP que controlan el almacenamiento en caché de respuestas. Los encabezados If-Modified-Sincey If-None-Matchse eliminan de las solicitudes Pragma: no-cachey se agregan Cache-control: no-cache. Headers Expires, Last-Modifiedy ETagse eliminan de la respuesta y se añaden Expires: 0, y Cache-Control: no-cache.







3.2 Bloquear cookies



Bloquear cookies : el encabezado de las cookies se elimina de las solicitudes, lo que evita que los valores de archivo se envíen desde una aplicación cliente (como un navegador web) a un servidor remoto. Además, el encabezado Set-Cookie se elimina de las respuestas, lo que evita que la aplicación cliente reciba solicitudes para configurar cookies del servidor remoto. En la configuración, puede habilitar la eliminación de cookies tanto para todos los hosts como para los seleccionados. El siguiente ejemplo permite la eliminación de cookies para todas las solicitudes.







3.3 Mapeo remoto



Map Remote : le permite redirigir solicitudes de una URL de Map From a otra Map To. Reemplaza el host, la ruta completa o solo los parámetros, según su tarea. En el siguiente ejemplo, se reemplaza la solicitud del servidor de producción al servidor de desarrollo.







3.4 Lista de bloqueo



Lista de bloqueo : le permite bloquear nombres de dominio específicos. Cuando un navegador web intenta solicitar cualquier página de un nombre de dominio bloqueado, se bloqueará. Puede elegir "Desconectar conexión" o devolver el error 403.







3.5 Suplantación de DNS



El alojamiento compartido es cuando tiene varios sitios en la misma dirección IP y el servidor web determina qué sitio está solicitando según el nombre ingresado en el navegador. Más precisamente, el servidor mira el encabezado de host enviado en la solicitud. Por ejemplo, cuando necesita reemplazar hosts para que cuando ingrese una dirección en el navegador (digamos, api.youla.ru), las solicitudes vayan a otra dirección (por ejemplo, a un sitio de prueba).



Suplantación de DNS : redirige un nombre de dominio a una dirección IP específica.







3.6 Espejo



Espejo : esta función le permite guardar automáticamente todas las respuestas devueltas a Charles Proxy. Se distribuyen localmente en la misma jerarquía que en el servidor. Si de repente hay un tiempo de inactividad en el backend, el entorno de prueba cae, etc., ya tiene simulacros listos para usar para Map Local. Puede activar la función de esta manera: HerramientasEspejo o HerramientasGuardar automáticamente .







3.7 Redactar



Redactar es una función para editar las consultas que capturó.



Por ejemplo, agrega un producto a sus favoritos, pero por alguna razón no se agrega. Puede editar una solicitud ya enviada y enviarla de nuevo. Para hacer esto, seleccione la solicitud requerida de la lista, haga clic derecho sobre ella y seleccione Redactar . El icono de solicitud cambiará y ahora puede editarlo de forma segura.







Después de haber cambiado los valores requeridos en la solicitud, haga clic en "Ejecutar" a continuación para enviar la solicitud al servidor.







4. Configuración de grabación



Configuración de grabación : configuración para mostrar las listas de dominios permitidos y bloqueados.



En la pestaña "Opciones", puede configurar el límite, es decir, el número de solicitudes que Charles Proxy puede registrar.







En la pestaña "Incluir", puede seleccionar un dominio específico para mostrar paquetes.







En la pestaña "Excluir", podemos seleccionar los dominios que deben ocultarse durante el rastreo.







5. Enfoque



Enfoque : esta función mueve el dominio a las primeras posiciones de la lista. 







6. Repetir



Repetir : envía una solicitud al servidor que es idéntica al seleccionado.







7. Repita Avanzado



Repetir Avanzado : idéntico a Repetir, solo usted puede seleccionar el número de solicitudes enviadas y la demora entre ellas. Esta función es útil al comprobar la respuesta del servidor a una inundación.



Aquí la concurrencia es el número de usuarios e iteraciones es el número de veces que se repite cada solicitud. También puede marcar la casilla "Mostrar resultados en nueva sesión", en cuyo caso se abrirá una nueva ventana donde se ejecutarán las solicitudes.







Resumen



En este artículo, intentamos describir las funciones de Charles Proxy que utilizan los probadores de aplicaciones móviles. Eso es todo, y no olvide adjuntar la sesión del sniffer al informe de error.



All Articles