it-swarm.com.de

axios: https-Anfrage über Proxy

Ich versuche, axios mit einem Proxy-Server zu verwenden, um einen https-Aufruf zu tätigen:

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)})

Die Proxy-Server, die ich verwende, befinden sich alle in den USA und sind sehr anonym. Sie unterstützen HTTP und HTTPS.

Ich erhalte diesen Fehler:

{Fehler: Schreiben Sie EPROTO 140736580649920: Fehler: 140770FC: SSL Routinen: SSL23_GET_SERVER_HELLO: unbekannt Protokoll: ../ deps/openssl/openssl/ssl/s23_clnt.c: 794:

Um sicherzustellen, dass das Problem bei axios und NICHT beim Proxy liegt, habe ich Folgendes versucht:

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

Das funktioniert absolut gut.

Wie konfiguriere ich Axios für die Arbeit mit Proxy- und https-URLs?

7
etayluz

Versuche dies. Diese Arbeit für mich.

Zuerst

npm install axios-https-proxy-fix

Dann

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

Die Unterstützung für Axios-https-Proxy ist bei Verwendung von https-Proxys fehlgeschlagen. Versuchen Sie, den Proxy mithilfe von http durch [httpsProxyAgent][1] zu übergeben.

var axios = require('axios'); 

let httpsProxyAgent = require('https-proxy-agent');
var agent = new httpsProxyAgent('http://username:[email protected]:port');

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

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

Alternativ gibt es eine Abfolge von Axios, die Folgendes enthält: axios-https-proxy-fix aber ich würde die erste Methode empfehlen, um die neuesten Axios-Änderungen sicherzustellen.

1
cyberwombat

Versuchen Sie, den Port in der URL explizit anzugeben:

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

Wenn Sie auch einen HTTPS-über-HTTP-Tunnel benötigen, finden Sie in diesem Artikel eine Lösung.

Hoffe das hilft,

Jan

0
Jan Molak

Dieser Fehler ist darauf zurückzuführen, dass axios versucht, Ihre Anfrage über https zu proxy (dies geht von Ihrer URL aus). Dieses Ticket verfolgt es: https://github.com/axios/axios/issues/925

0
Sergio