Herramienta de configuración de proxy ProxyCfg.exe

Importante

ProxyCfg.exe ha quedado en desuso desde Windows Vista y Windows Server 2008. Se ha reemplazado por Netsh.exe (consulte Comandos Netsh.exe).

En este tema, se explica el uso de la herramienta de los servicios de HTTP de Microsoft Windows (WinHTTP) de configuración de proxy, ProxyCfg.exe.

Hay dos maneras de acceder a los servidores HTTP y Secure Hypertext Transfer Protocol (HTTPS) a través de un proxy mediante los servicios HTTP de Microsoft Windows (WinHTTP). Primero, puede especificar la configuración del proxy desde la aplicación WinHTTP. Segundo, puede especificar la configuración del proxy predeterminada desde fuera de la aplicación mediante la utilidad de configuración de proxy ubicada en el directorio %windir%\system32.

Puede establecer los datos del proxy mediante programación desde la aplicación o el script. Si va a escribir una aplicación mediante la API de WinHTTP, use una de las dos técnicas siguientes para cambiar la configuración de proxy.

  • Use la función WinHttpOpen. Especifique el tipo de acceso en el segundo parámetro, el nombre del proxy en el tercero y una lista de omisión en el cuarto. En el ejemplo siguiente, se muestra cómo se puede usar la función WinHttpOpen para establecer datos de proxy.

    hSession = WinHttpOpen( L"WinHTTP Example/1.0",  
                            WINHTTP_ACCESS_TYPE_NAMED_PROXY,
                            L"proxy_name", 
                            L"<local>", 
                            0);
    
  • Use la función WinHttpSetOption. La marca WINHTTP_OPTION_PROXY permite especificar la configuración del proxy con una estructura WINHTTP_PROXY_INFO. En el ejemplo de código siguiente, se muestra cómo se puede usar la función WinHttpSetOption para establecer datos de proxy.

    WINHTTP_PROXY_INFO proxyInfo;
    proxyInfo.dwAccessType = WINHTTP_ACCESS_TYPE_NAMED_PROXY;
    proxyInfo.lpszProxy = L"proxy_name";
    proxyInfo.lpszProxyBypass = L"<local>";
    
    // Set the proxy information for this session.
    WinHttpSetOption( hSession, 
                      WINHTTP_OPTION_PROXY, 
                      &proxyInfo, 
                      sizeof(proxyInfo));
    

Si va a escribir un script o una aplicación mediante el objeto WinHttpRequest, use la técnica siguiente para cambiar la configuración de proxy.

  • Use el método SetProxy. Especifique el tipo de acceso en el primer parámetro, el nombre del proxy en el segundo y una lista de omisión en el tercero. En el ejemplo siguiente, se muestra cómo se puede usar el método SetProxy en el script para establecer datos de proxy.

    WinHttpReq.SetProxy( HTTPREQUEST_PROXYSETTING_PROXY, 
                         "proxy_server:80", 
                         "*.microsoft.com");
    

Para especificar la configuración predeterminada y eliminar la necesidad de usar el método SetProxy o la función WinHttpSetOption, use la utilidad de configuración de proxy. Con esta utilidad, puede especificar el acceso de la aplicación directamente a una red, a través de un proxy, o a través de una combinación de acceso directo y proxy mediante una lista de omisión. Cuando se usa la API de WinHTTP, la herramienta de configuración de proxy solo determina la configuración al pasar la marca WINHTTP_ACCESS_TYPE_DEFAULT a la API de WinHttpOpen. El objeto WinHttpRequest usa la configuración de la herramienta de configuración de proxy de forma predeterminada.

La configuración de proxy para WinHTTP no es la configuración de proxy para Microsoft Internet Explorer. No pueden configurar las opciones de proxy para WinHTTP en el Panel de control de Microsoft Windows. El uso de la utilidad de configuración de proxy WinHTTP no modifica la configuración que usa para Internet Explorer.

Nota:

Si intenta abrir y enviar una solicitud HTTP mediante WinHTTP y la configuración del proxy es incorrecta, se produce un error.

Parámetros de línea de comandos

En la tabla siguiente, se enumeran los parámetros de la línea de comandos disponibles para su uso con la herramienta "ProxyCfg.exe".

Parámetro Description
None Cuando no se especifica ningún parámetro, se muestra la configuración actual de proxy de WinHTTP.
? Se muestra la información de ayuda.
d Especifica que las aplicaciones WinHTTP acceden a la red directamente, sin un proxy.
p Especifica el puerto del servidor proxy. También puede especificar una lista opcional de servidores a los que se accede sin un proxy.
u Especifica que las aplicaciones WinHTTP usan la configuración de proxy del usuario actual para Internet Explorer. Este parámetro no funciona si Internet Explorer detecta automáticamente la configuración del proxy o si usa una dirección URL de configuración automática para establecer la información del proxy.
i Especifica que las aplicaciones WinHTTP usan la configuración de proxy del usuario actual para Internet Explorer. Esto solo funciona cuando ProxyCfg.exe no se usó anteriormente. Si ProxyCfg.exe está instalado, especifique que el parámetro de línea de comandos "u" use la configuración manual. Este parámetro no funciona si Internet Explorer detecta automáticamente la configuración de proxy o si usa una dirección URL de configuración automática para establecer la información de proxy.

Puede especificar servidores proxy en una cadena delimitada por espacios. Las listas de servidores proxy pueden incluir el número de puerto que se usa para tener acceso al proxy. A fin de enumerar un proxy para un protocolo específico, la cadena debe seguir el formato: <protocol>=https://<proxy_name>. Los protocolos válidos son HTTP y HTTPS. Por ejemplo, para enumerar un proxy HTTP, una cadena válida es http=https://http_proxy_name:80, donde http_proxy_name es el nombre del servidor proxy y 80 es el número de puerto que debe usar para acceder al proxy. Si el proxy usa el número de puerto predeterminado para ese protocolo, puede omitir el número de puerto. Si un nombre de proxy se enumera solo, puede usarlo como proxy predeterminado para cualquier protocolo que no tenga un proxy especificado. Por ejemplo, http=https://http_proxy other_proxy usa http_proxy para las operaciones HTTP, mientras que el protocolo HTTPS usa el proxy denominado other_proxy.

Puede enumerar nombres de host o direcciones IP conocidos localmente en la lista de omisión de proxy. La lista puede contener caracteres comodín, "*", que hacen que la aplicación omita el servidor proxy en las direcciones que coincidan con el patrón especificado; por ejemplo, "*.microsoft.com" o "*.org". Los caracteres comodín deben ser los caracteres de la izquierda en la lista. Por ejemplo, no se admite "aaa.*". Para enumerar varias direcciones y nombres de host, sepárelos por espacios en blanco o punto y coma en la cadena de omisión del proxy. Si especifica la macro <local>, la función omite cualquier nombre de host que no contenga un punto.

Advertencia

Después de que se ejecute Proxycfg.exe, no se puede restaurar la configuración de proxy anterior. Sin embargo, puede quitar la configuración del proxy por completo.

Uso

Para usar la herramienta de configuración de proxy, abra una ventana del símbolo del sistema y ejecute la utilidad de configuración de proxy con los parámetros de línea de comandos adecuados. En la sección siguiente, se proporcionan ejemplos de sintaxis.

Ejemplo de sintaxis

Ejemplo 1: Uso de un proxy solo para recursos externos

A continuación, se muestra el uso más común de Proxycfg.exe. Este comando especifica que se accede a los servidores HTTP y HTTPS a través del servidor proxy denominado "proxy_server", excepto para los nombres de host que no contienen un punto.

proxycfg -p proxy_server "<local>"

Ejemplo 2: Uso de un proxy para todos los recursos

En el ejemplo siguiente, se especifica que se accede a los servidores HTTP y HTTPS a través del servidor proxy denominado "proxy_server". No se especifica ninguna lista de omisión.

proxycfg -p proxy_server

Ejemplo 3: Uso de un proxy diferente para recursos seguros

En el ejemplo siguiente, se especifica que se accede a los servidores HTTP a través del proxy http_proxy y a los servidores HTTPS a través de https_proxy. Los sitios de intranet locales y cualquier sitio del dominio *.microsoft.com omiten el proxy.

proxycfg -p "http=http_proxy https=https_proxy" "<local>;*.microsoft.com"

Quitar ProxyCfg.exe

Después de usar la herramienta de configuración de proxy, no se puede restaurar la configuración del proxy original. Sin embargo, si es necesario, puede quitar la configuración del Registro que crea la utilidad. Para quitar las entradas del Registro que crea ProxyCfg.exe, debe eliminar el valor WinHttpSettings de la siguiente clave del Registro.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\WinHttpSettings

Eliminar el valor WinHttpSettings quita todas las configuraciones de proxy.

ProxyCfg.exe y autenticación

La utilidad de configuración de proxy establece la directiva de autenticación predeterminada. Dado que no debe realizar la autenticación NTLM con hosts que no son de confianza, la autenticación NTLM solo se produce automáticamente con hosts en la lista de omisión de proxy. Si no hay ningún proxy, puede seguir usando ProxyCfg.exe para especificar una lista de omisión de hosts en los que confía para realizar la autenticación NTLM. Se requiere un nombre de proxy al usar ProxyCfg.exe para este propósito, pero puede usar cualquier cadena válida en lugar de un nombre de proxy real.

Para obtener más información sobre la directiva de inicio de sesión automático, consulte Directiva de inicio de sesión automática.