Navegador sin cabeza para C # (.NET)?

Soy (era) un desarrollador de Python que está construyendo una aplicación de raspado web GUI. Recientemente decidí migrar a .NET framework y escribir la misma aplicación en C # (esta decisión no fue mía).

En Python, he usado la biblioteca Mechanize. Sin embargo, parece que no puedo encontrar nada similar en .NET. Lo que necesito es un navegador que se ejecute en un modo sin cabeza, que tenga la capacidad de completar formularios, enviarlos, etc. El analizador de JavaScript no es obligatorio, pero sería bastante útil.

Hay algunas opciones:

  • WebKit.Net (gratis)

  • Awesomium
    Está basado en Chrome / WebKit y funciona como un encanto. Hay una licencia gratuita disponible, pero también comercial, y si es necesario, puedes comprar el código fuente 🙂

  • HTML Agility Pack (gratis)
    Esto ayuda a extraer información de HTML, etc. y puede ser útil en su caso (posiblemente en combinación con HttpWebRequest )

Más soluciones:

  • PhantomJS : navegador web sin funciones con todas las funciones. A menudo se usa en pares con Selenium, lo que le permite acceder al navegador desde la aplicación .NET.
  • Optimus ( paquete nuget ): navegador web sin cabeza liviano. Está en beta, pero es suficiente para algunos casos.

Solía ​​usar ambos para probar la web. Pero también son adecuados para raspar web.

Puede estar detrás de TrifleJS (actualmente en beta) o algo similar usando la clase .NET WebBrowser que se comunica con IE a través de una API ActiveX / COM sin ventanas.

Básicamente, ejecutará un navegador completamente desarrollado (no un contenedor de solicitud http) utilizando el motor Trident de Internet Explorer, si no está interesado en la API de JavaScript (un puerto de fantasmas ) todavía puede usar parte de la base de código C # para evitar conceptos clave (encabezados personalizados, cookies, ejecución de scripts, representación de capturas de pantalla, etc.).

Tenga en cuenta que esto también puede emular diferentes versiones de IE dependiendo de lo que haya instalado.

enter image description here