2012-03-30 18 views
9

Estoy escribiendo un cliente que habla con un servidor remoto a través de HTTP. Me gustaría colocar un proxy malvado entre el cliente y el servidor que (al azar) afectaría el tráfico en el cable.proxy malvado para probar la interacción cliente/servidor

Algunas cosas que me gustaría que sucedan:

  • retrasos arbitrarios para la respuesta
  • errores HTTP arbitrarias
  • este escenario es difícil imaginar con TCP pero qué demonios: respuestas truncadas (es decir, datos mal formados)
  • falta de disponibilidad temporal (aunque parece difícil dado que esto tendría que hacerse en el nivel de red más bajo).
  • errores personalizados predefinidos (por ejemplo: cada petición se vuelva con un error de servicio)

Básicamente quiero para simular una serie de condiciones que los usuarios de este software se va a experimentar en el mundo real de redes y asegúrese de que el cliente los maneje con elegancia.

Sospecho (espero) que algo así ya existe. Por favor, apúntame en la dirección correcta!

Gracias

+0

IIRC algunas empresas construyeron módulos similares para pruebas internas ... No conozco ningún proxy comercial o gratuito que permita tanto control ... básicamente, usted comenzaría con un proxy de código abierto existente y lo modificaría/ampliaría según sus necesidades ... – Yahia

+0

Sí, encontré [Mallory] (http://intrepidusgroup.com/insight/mallory/). Es compatible con los complementos, pero quiero ver si ya hay algo allí, antes de invertir tiempo en aprender Python. – EightyEight

+1

Creo que la mejor opción es simular clases de interacción de red, por lo que podría describir fácilmente tales escenarios en el código de caso de prueba, de lo contrario sería bastante difícil administrar dicho sistema. – kan

Respuesta

5

HTTP Test Tool (htt) parece que lo que necesita aquí. Tiene the ability to operate as a proxy and a reverse-proxy para probar esos casos específicamente, cuando un marco simulado es insuficiente para la tarea.

Para un proxy mal verdaderamente, considerar el uso de Squid en conjunto con el Metasploit Framework y algunas de las herramientas en BackTrack Linux. Sin embargo, eso parece estar un poco más allá del alcance de su proyecto.

(Additional tools to consider, además de one more)

3

Fiddler 1 es una scriptable visor de tráfico/proxy.

3

Puedes probar fiddler - todo lo que escribes se puede simular usando esa herramienta. También es ideal para la depuración de problemas de comunicación entre su aplicación y el servidor. Me ahorró mucho trabajo cuando estaba implementando XML-RPC.

Hay algunas extensiones geniales que pueden ayudarlo y pueden incluso write your own si necesita algo realmente especial.

[EDIT] Dado que esta es la pregunta mac, puede intentar webscarab o charles (el segundo se paga). Pero aún puede ejecutar el proxy en cualquier máquina, incluso virtual. Por lo tanto, si tiene licencia de ganar extra ...

+0

Lamentablemente estoy en un mac. – EightyEight

+0

@EightyEight ya que dudo que el violinista se ejecute en mono, he editado mi respuesta y he agregado enlaces a herramientas que se ejecutarán en mac. – SiliconMind

2

Dado que está en una Mac, tiene ipfw incorporado en su sistema. Desde un terminal, man ipfw para obtener información.

ipfw gestiona las reglas del cortafuegos, incluido un conjunto de reglas denominadas "Dummynet" que se pueden utilizar para introducir la pérdida y la latencia de paquetes. Esto no soluciona TODAS sus dudas, pero le permite afectar su tráfico a nivel de red sin involucrar un software adicional.

Encontré an article on WaterRoof que parece ser un editor de reglas GUI ipfw que admite Dummynet. Probablemente haya otros.

También eche un vistazo a this AFP548 article en la configuración del tráfico con Dummynet. Si eres bastante cómodo en una línea de comando, deberías ir bien.

Tenga en cuenta que Dummynet NO proporciona herramientas para todo lo que enumeró en su pregunta; solo le permite simular una serie de problemas de red, como la latencia y la pérdida de paquetes. Para cualquier cosa que implique la alteración de los datos en el nivel HTTP, estoy de acuerdo con otros que fiddler es probablemente la herramienta para usar.

Conozca también la herramienta "Inspeccionar elemento" de Chrome/Chromium. (Haga clic con el botón derecho y luego selecciónelo desde la parte inferior de la mayoría de los menús contextuales). Proporciona una vista detallada de los encabezados del servidor y el cliente HTTP, junto con la capacidad de modificar variables ocultas de formularios, grabar sesiones completas para verlas posteriormente, etc. Muy útil cosas.

+0

¡Esto es genial, gracias! – EightyEight

Cuestiones relacionadas