node.js - quitar - quit proxy npm
Usar npm detrĂ¡s del proxy corporativo.pac (19)
Acabo de tener un problema muy similar, en el que no pude lograr que npm trabajara detrás de nuestro servidor proxy.
Mi nombre de usuario es de la forma "dominio / nombre de usuario", incluida la barra en la configuración del proxy que resultó en una barra inclinada que aparece. Entonces, ingresando esto:
npm config set proxy "http://domain/username:password@servername:port/"
luego, al ejecutar esta npm config get proxy
devuelve esto: http://domain/username:password@servername:port/
Por lo tanto, para solucionar el problema, en su lugar, URL codificó la barra invertida, así que ingresé esto:
npm config set proxy "http://domain%5Cusername:password@servername:port/"
y con esto se corrigió el acceso de proxy.
Necesito descargar varios paquetes a través de npm, pero nuestra configuración de proxy corporativo es un archivo .pac (estoy en Windows)
ya lo intenté
npm config set proxy http://mydomain/username:[email protected]:8181/proxy.pac
npm config set https-proxy http://mydomain/username:[email protected]:8181/proxy.pac
o
npm config set proxy http://1.2.3.4:8181/proxy.pac
npm config set https-proxy http://1.2.3.4:8181/proxy.pac
pero no funciona ...
¿cualquier sugerencia? Gracias
Agregar las líneas a continuación en el archivo .typingsrc me ayudó.
{
"rejectUnauthorized": false,
"registryURL" :"http://api.typings.org/"
}
Busque la url del archivo pac
en la configuración de Internet Explorer lan y descargue el archivo pac desde la URL configurada. El archivo pac es solo un archivo javascript con una función llamada FindProxyForURL
que devuelve diferentes servidores proxy en diferentes escenarios.
Intente encontrar un host en ese archivo pac que cree que es para el tráfico web general y conéctelo a .npmrc en C:/Users/<username>/.npmrc
proxy=http://<username>:<pass>@proxyhost:<port>
https-proxy=http://<uname>:<pass>@proxyhost:<port>
Aunque puede iniciar sesión con su dominio y nombre de usuario en su máquina corporativa, es muy posible que el nombre de dominio del directorio activo del usuario no sea necesario para el proxy , solo el nombre de usuario y la contraseña (que pueden ser diferentes al inicio de sesión de Active Directory)
No te olvides de jugar con el escape de los caracteres de contraseña especiales.
Debes usar "npm config set http-proxy "
utilizar:
npm config set http-proxy http://1.2.3.4:8181
npm config set https-proxy http://1.2.3.4:8181
Descargue su archivo .pac
. Ábralo en cualquier editor y busque PROXY = "PROXY XXXX:80;
.Puede tener muchos proxies, copiar cualquiera de ellos y ejecutar los siguientes comandos de terminal:
npm config set proxy http://X.X.X.X:80
npm config set https-proxy http://X.X.X.X:80
¡Ahora debería poder instalar cualquier paquete!
En el trabajo, utilizamos ZScaler como nuestro proxy. La única forma en que logré que npm trabaje fue usar cntlm .
Ver esta respuesta:
Me encontré con un problema similar y descubrí que mi archivo de configuración npm (.npmrc) tiene una entrada de registro incorrecta. lo comenté y re run npm install. funcionó.
Me encontré con varios problemas con esto y, finalmente, lo que hice fue lo siguiente:
- Fiddler usado, con "Authentication Authenticate" seleccionado
En las reglas personalizadas de violinista, agregué
if (m_AutoAuth) {oSession["X-AutoAuth"] = "domain//username:password";}
Finalmente en npm, establecí el proxy en http: // localhost: 8888
Esto funcionó bien.
Obtendrá el host y el puerto proxy de su administrador o soporte del servidor.
Después de esa configuración
npm config set http_proxy http://username:[email protected]:itsport
npm config set proxy http://username:[email protected]:itsport
Si hay algún carácter especial en la contraseña, prueba con% urlencode. Por ejemplo: - libra (hash) shuold ser reemplazado por% 23.
Esto funcionó para mí ...
Para ampliar la respuesta de @Steve Roberts.
Mi nombre de usuario es de la forma "dominio / nombre de usuario", incluida la barra en la configuración del proxy que resultó en una barra inclinada que aparece. Entonces, ingresando esto:
npm config set proxy "http://domain/username:password@servername:port/"
También tuve que URL codificar mi domain/user
cadena de domain/user
, sin embargo, tengo un espacio dentro de mi nombre de usuario, así que puse un +
para codificar la codificación de URL de espacio, pero se doblaría como %2B
(que es la codificación URL para el signo más, sin embargo, la codificación URL de un espacio es %20
), así que tuve que hacer lo siguiente:
comando npm
//option one
//it works for some packages
npm config set http_proxy "http://DOMAIN%5Cuser+name:[email protected]:port"
npm config set proxy "http://DOMAIN%5Cuser+name:[email protected]:port"
//option two
//it works best for me
//please notice that I actually used a space
//instead of URL encode it with ''+'', ''%20 '' OR %2B (plus url encoded)
npm config set http_proxy "http://DOMAIN%5Cuser name:[email protected]:port"
npm config set proxy "http://DOMAIN%5Cuser name:[email protected]:port"
solución de problemas de configuración npm
npm config list
para obtener los valores analizados que había establecido anteriormente, y así es como me enteré de la doble codificación. Extraño.
Saludos.
VARIABLES DE ENTORNO DE WINDOWS (Indicador CMD)
Actualizar
Resulta que incluso con las configuraciones anteriores, todavía tenía algunos problemas con algunos paquetes / scripts que usan Request - Cliente HTTP simplificado internamente para descargar cosas. Entonces, como se explicó en el archivo Léame anterior, podemos especificar variables de entorno para establecer el proxy en la línea de comando, y Request respetará esos valores.
Luego, después de (y soy reacio a admitir esto) varios intentos (más como días), de tratar de establecer las variables de entorno, finalmente tuve éxito con las siguientes pautas:
rem notice that the value after the = has no quotations
rem - I believe that if quotations are placed after it, they become
rem part of the value, you do not want that
rem notice that there is no space before or after the = sign
rem - if you leave a space before it, you will be declaring a variable
rem name that includes such space, you do not want to do that
rem - if you leave a space after it, you will be including the space
rem as part of the value, you do not want that either
rem looks like there is no need to URL encode stuff in there
SET HTTP_PROXY=http://DOMAIN/user name:[email protected]:port
SET HTTPS_PROXY=http://DOMAIN/user name:[email protected]:port
cntlm
Utilicé la técnica anterior durante unas semanas, hasta que me di cuenta de la sobrecarga de actualizar mi contraseña en todas las herramientas que necesitaban la configuración del proxy.
Además de npm, también uso:
- cenador
- vagabundo
- caja virtual (ejecutando linux)
- apt-get [linux]
- git
- vscode
- soportes
- átomo
- TSD
cntlm Pasos de configuración
Entonces, instalé cntlm . Establecer cntlm
es bastante directo, busca el archivo ini @ C:/Program Files/Cntlm/cntlm.ini
- Abra
C:/Program Files/Cntlm/cntlm.ini
(es posible que necesite derechos de administrador) - busca las líneas de
Username
deUsername
yDomain
(línea 8-9, creo)- agrega tu nombre de usuario
- agrega tu dominio
En la ejecución del indicador de cmd:
cd C:/Program Files/Cntlm/ cntlm -M cntlm -H
- se le pedirá la contraseña:
cygwin warning: MS-DOS style path detected: C:/Program Files/Cntlm/cntlm.ini Preferred POSIX equivalent is: /Cntlm/cntlm.ini CYGWIN environment variable option "nodosfilewarning" turns off this warning. Consult the user''s guide for more details about POSIX paths: http://cygwin.com/cygwin-ug-net/using.html#using-pathnames Password:
La salida que obtenga de
cntlm -H
se verá algo así como:PassLM 561DF6AF15D5A5ADG PassNT A1D651A5F15DFA5AD PassNTLMv2 A1D65F1A65D1ASD51 # Only for user ''user name'', domain ''DOMAIN''
- Se recomienda que use PassNTLMv2 así que agregue un
#
antes de la líneaPassLM
yPassNT
o no los use
- Se recomienda que use PassNTLMv2 así que agregue un
- Pegue la salida de
cntlm -H
en el archivo ini reemplazando las líneas paraPassLM
,PassNT
yPassNTMLv2
, o comente las líneas originales y agregue las suyas. - Agregue sus servidores
Proxy
. Si no sabe qué es el servidor proxy ... Haga lo que hice, busqué el archivo de configuración automática de mi proxy buscando la clave del RegistroAutoConfigURL
enHKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings
. Navega hacia esa url y busca el código que resulta ser JavaScript. - Opcionalmente, puede cambiar el puerto donde cntlm escucha cambiando la línea
Listen ####
, donde####
es el número de puerto.
Configurar NPM con cntlm
Entonces, apuntas npm a tu proxy cntml, puedes usar la ip, utilicé localhost
y el puerto predeterminado para cntlm 3128
para que mi url de proxy se vea así
http://localhost:3128
Con el comando apropiado:
configuración npm establecer proxy http: // localhsot: 3128
Es mucho mas simple Configura todas sus herramientas con esa misma URL y solo actualiza la contraseña en un solo lugar. La vida es mucho más simple que no.
Debe configurar el certificado de CA npm
De la documentación npm ca
Si su proxy corporativo está interceptando conexiones https con su propio certificado autofirmado, esto es imprescindible para evitar (gran no-no). npm config set strict-ssl false
Pasos básicos
- Obtenga el certificado de su navegador (Chromes funciona bien). Exportarlo como Base-64 codificado X.509 (.CER)
- Reemplazar nuevas líneas con
/n
- Edite su
.npmrc
agregue una líneaca[]="-----BEGIN CERTIFICATE-----/nXXXX/nXXXX/n-----END CERTIFICATE-----"
Cuestiones
Me he dado cuenta de que algunas veces el npm se cuelga, por lo que me detengo (a veces con fuerza) cntlm y lo reinicio.
Para cualquiera que tenga problemas con un firewall corporativo, así como problemas con SSL (no se puede obtener el certificado de emisor local), aquí hay algunos pasos que puede intentar:
Olvídate de SSL
Si no está preocupado por SSL, puede seguir los consejos de muchos colaboradores anteriores configurando sus proxies y cambiando el registro a la versión no segura:
npm config set proxy http://username:password@proxyname:port
npm config set https-proxy http://username:password@proxyname:port
npm config set registry http://registry.npmjs.org/
Un rápido "error" aquí, mis credenciales de proxy son las mismas para las solicitudes seguras y no seguras (observe cómo dejé mi protocolo como http: // para la configuración https-proxy ). Esto puede ser lo mismo para ti, y puede que no.
Quiero mantener SSL
Si desea mantener SSL, y no desea usar strict-ssl=false
, entonces tiene más trabajo por hacer. En mi caso, estoy detrás de un firewall corporativo y estamos utilizando certificados autofirmados, por lo que recibo el error de unable to get local issuer certificate
. Si está en el mismo bote que yo, tendrá que configurar la opción cafile=
en el archivo de configuración npm. En primer lugar, debe crear un archivo PEM que contenga información sobre sus certificados autofirmados. Si no sabe cómo hacerlo, aquí hay instrucciones para un entorno de Windows sin utilizar software de terceros:
Necesitamos indicar explícitamente qué certificados se deben confiar porque estamos usando certificados de autofirma. Para mi ejemplo, navegué a www.google.com usando Chrome para poder obtener los certificados.
En Chrome, vaya a Inspeccionar -> Seguridad -> Ver certificado. Verá todos los certificados que permiten la conexión SSL. Observe cómo estos certificados son autofirmados. La parte borrosa es mi compañía, y no somos una Autoridad Certificada. Puede exportar la ruta completa del certificado como un archivo P7B, o puede exportar los certificados individualmente como archivos CER (codificación base64). Exportar la ruta completa como P7B no le sirve de mucho porque a su vez tendrá que abrir este archivo en un administrador de certificados y exportar como archivos CER individuales de todos modos. En Windows, al hacer doble clic en el archivo P7B se abrirá la aplicación Certificate Manager.
Exportar como CER (Base 64) es realmente un archivo de texto en el siguiente formato:
-----BEGIN CERTIFICATE-----
MIIGqzCCBZOgAwIBAgITIwAAABWhFPjwukYhTAADAAAAFTANBgkqhkiG9w0BAQUF
ADBFMRMwEQYKCZImiZPyLGQBGRYDY29tMRYwFAYKCZImiZPyLGQBGRYGaXJ2aW5n
b0pvCkNmjWzaNNUg2hYET+pP5nP75aRu+kPRl9UnlQ....rest of certificate...
-----END CERTIFICATE-----
Para crear nuestro archivo PEM, simplemente necesitamos apilar estos certificados uno encima de otro en un solo archivo y cambiar la extensión a .pem. Usé bloc de notas para hacer esto.
Apila los certificados en orden inverso desde la ruta del certificado. Así que arriba, comenzaría con * .google.com y luego pegaría Websense debajo de él, luego emitiría CA 1, etc. De esta forma, los certificados se analizarían desde la parte superior hasta la inferior en busca de la CA raíz apropiada. Simplemente incluir la Root CA no funcionará, pero tampoco es necesario que incluya todos los certificados. Desde la ruta anterior, solo necesito incluir los certificados que vienen antes del certificado de Websense (Emisión CA 1, Política CA, Root CA).
Una vez que estos certificados autofirmados se guardan en un archivo PEM, estamos listos para instruir a npm para que use estos certificados como nuestra CA de confianza. Simplemente configura el archivo de configuración y deberías ir:
npm config set cafile "C:/yourcerts.pem"
Ahora, con sus proxies establecidos (http y https), y el registro establecido en https://registry.npmjs.org
, debería poder instalar paquetes detrás de un firewall corporativo con certificados autofirmados sin anular la configuración strict-ssl
.
Prueba esto, establece el proxy en npm de la siguiente manera
npm config set proxy "http://<user-name>:<password>@<proxy-url>:<port>"
npm config set https-proxy "http://<user-name>:<password>@<proxy-url>:<port>"
npm config set strict-ssl false
npm config set registry "http://registry.npmjs.org/"
Prueba esto, fue lo único que funcionó para mí:
npm --proxy http: //: @proxyhost: --https-proxy http: //: @proxyhost: --strict-ssl instalación falsa -g paquete
Preste atención a la opción --strict-ssl false
Buena suerte.
Puede verificar Fiddler si NPM está dando error de Autenticación. Es fácil de instalar y configurar. Establezca la regla de Fiddler para que se autentique automáticamente. En .npmrc configure estas propiedades
registry=http://registry.npmjs.org
proxy=http://127.0.0.1:8888
https-proxy=http://127.0.0.1:8888
http-proxy=http://127.0.0.1:8888
strict-ssl=false
Funcionó para mí :)
Resolví este problema de esta manera:
1) Ejecuto este comando:
npm config set strict-ssl false
2) Luego configure npm para que se ejecute con http, en lugar de https:
npm config set registry "http://registry.npmjs.org/"
3) Luego instala tu paquete
npm install <package name>
Si está detrás de una red corporativa con proxy, acabo de utilizar una herramienta proxy ntlm y utilicé el puerto y el proxy provistos por ntlm, por instinto utilicé esta configuración:
strict-ssl=false
proxy=http://localhost:3125
Espero que esto ayude.
Sistema operativo: Windows 7
Pasos que funcionaron para mí:
-
npm config get proxy
npm config get https-proxy
Comentarios: ejecuté este comando para conocer mi configuración proxy
npm config rm proxy
-
npm config rm https-proxy
-
npm config set registry=http://registry.npmjs.org/
-
npm install
Tuve un problema similar e intenté todas las soluciones alternativas anteriores, pero ninguna de ellas me funcionó (estaba usando caracteres especiales (como el símbolo ''@'') en mi contraseña y también necesitaba agregar un nombre de dominio).
Aparte de eso, estaba un poco aprensivo de agregar mi contraseña como texto sin formato. Resultó que la solución más fácil para superar todos estos desafíos era utilizar algún tipo de proxy inverso (como Fiddler).
Ya he detallado los pasos de configuración en this respuesta en SO.
Use el comando a continuación en cmd o GIT Bash u otra solicitud
$ npm config set proxy "http://192.168.1.101:4128"
$ npm config set https-proxy "http://192.168.1.101:4128"
donde 192.168.1.101 es proxy ip y 4128 es puerto. cambiar de acuerdo a su configuración de proxy.