web-dev-qa-db-fra.com

axios: demande https par proxy

J'essaie d'utiliser axios avec un serveur proxy pour émettre un appel https:

const url = "https://walmart.com/ip/50676589"
var config = { proxy: { Host: proxy.ip, port: proxy.port } }

axios.get(url, config)
.then(result => {})
.catch(error => {console.log(error)})

Les serveurs proxy que j'utilise sont tous anonymes aux États-Unis et prennent en charge HTTP et HTTPS.

Je reçois cette erreur:

{Erreur: écrire EPROTO 140736580649920: erreur: 140770FC: SSL routines: SSL23_GET_SERVER_HELLO: inconnue protocole: ../ deps/openssl/openssl/ssl/s23_clnt.c: 794:

Afin de m'assurer que le problème concerne axios et PAS le proxy, j'ai essayé ceci:

curl -x 52.8.172.72:4444 -L ' https://www.walmart.com/ip/50676589 '

Cela fonctionne totalement bien.

Comment configurer axios pour fonctionner avec les proxies et les URL https?

7
etayluz

Essaye ça. Cela fonctionne pour moi.

Premier

npm installer axios-https-proxy-fix

Ensuite

import axios from 'axios-https-proxy-fix'; 

const proxy = {
  Host: 'some_ip',
  port: some_port_number,
  auth: {
    username: 'some_login',
    password: 'some_pass'
  }
};

async someMethod() {
  const result = await axios.get('some_https_link', {proxy});
}
1
Denis Grushak

La prise en charge du proxy Axios https est limitée si vous utilisez des proxies https. Essayez de passer le proxy via [httpsProxyAgent][1] en utilisant http.

var axios = require('axios'); 

let httpsProxyAgent = require('https-proxy-agent');
var agent = new httpsProxyAgent('http://username:pass@myproxy:port');

var config = {
  url: 'https://google.com',
  httpsAgent: agent
}

axios.request(config).then((res) => console.log(res)).catch(err => console.log(err))

Alternativement, il existe un fork d'Axios qui intègre ceci: axios-https-proxy-fix mais je recommanderais la première méthode pour garantir les dernières modifications Axios.

1
cyberwombat

Essayez de spécifier explicitement le port dans l'URL:

const url = "https://walmart.com:443/ip/50676589"

Si vous avez également besoin d'un tunnel HTTPS sur HTTP, vous trouverez une solution dans cet article .

J'espère que cela t'aides,

Jan

0
Jan Molak

Cette erreur est due au fait qu'axios essaie de transmettre votre demande par proxy via https (il la prend à partir de votre URL). Ce ticket la suit: https://github.com/axios/axios/issues/925

0
Sergio