Estoy haciendo un programa que descarga un archivo simple de Internet en Windows, usando Wininet Family API porque quiero utilizar su comportamiento de proxy compatible con IE. Como todos saben, el IE actual tiene varias configuraciones de proxy: detección automática (WPAD), configuración automática (PAC), URL individual de forma manual, servidores proxy por protocolo, calcetines, directo, ... Para la mayoría de los usuarios, la "descarga directa" " funciona bien; sin embargo, para algunos usuarios (especialmente los que están detrás de firewall/NAT), siempre necesitan configuraciones de proxy especiales cuando hacen conexiones.Creando conexión HTTP robusta para usuarios ficticios con WinINET
Es doloroso escribir código para manejar todos estos casos, así que espero que WinINET con InternetOpen (INTERNET_OPEN_TYPE_PRECONFIG)
me pueda ayudar. Lo hace para la mayoría de los usuarios, sin embargo, todavía encuentro algunos usuarios que se quejan de falla de conexión. Estos usuarios pueden tener entornos de red muy especiales (por ejemplo, necesitan autenticación de nombre de usuario/contraseña para el proxy) y la conexión directa no funciona para ellos.
A veces los usuarios ficticios tenían una configuración incorrecta, y me gustaría que Wininet probara "todas" las posibles configuraciones de proxy para mí; Desafortunadamente, el INTERNET_OPEN_TYPE_PRECONFIG
solo probará el configurado por el usuario, no "todas las configuraciones de proxy posibles".
Así que mi pregunta es, ¿cómo puedo hacer un programa con mayor capacidad para solucionar todas las conexiones HTTP (especialmente para la configuración de proxy) para usuarios ficticios (es decir, no entienden cómo configurar su sistema)? ¿Hay alguna forma sugerida de hacer conexiones HTTP sin la necesidad de ocuparse de las cosas del proxy? (es decir, un solucionador de conexión "super" que intentará todas las configuraciones de proxy posibles), o si hay algún método para decirle a WinINET que habilite todas sus configuraciones de proxy para crear una conexión.
Francis, he encontrado este problema.La solución simple no existe; hay demasiadas variables y el repasar los escenarios como describe Justin es el único método seguro. Peor aún, eso es solo para Internet Explorer: con la creciente cuota de mercado de Firefox, se deben agregar métodos para obtener la configuración del proxy de Firefox para obtener una lista completa. –
@ J.J. - Buen punto. Pensé en el caso de Firefox cuando originalmente escribí la respuesta e iba a volver para agregar un paso sobre Firefox. ¡Tus comentarios me recordaron que hiciera esto! Vea el nuevo paso # 4 a continuación. :-) –
Lástima que no hay una solución simple ... También es interesante que tampoco haya una biblioteca que cubra todas estas cosas dolorosas. He intentado con libcurl y libproxy, pero de hecho están trabajando a su manera y realmente no funcionan como lo hace IE. – Francis