プロキシサーバーで axios を使用して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)})
私が使用しているプロキシサーバーはすべて米国にあり、高度に匿名であり、HTTPおよびHTTPSをサポートしています。
私はこのエラーを受け取っています:
{エラー:書き込みEPROTO 140736580649920:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../ deps/openssl/openssl/ssl/s23_clnt.c:794:
問題がプロキシではなくaxiosにあることを確認するために、私はこれを試しました:
curl -x 52.8.172.72:4444 -L ' https://www.walmart.com/ip/50676589 '
これはまったく問題なく動作します。
プロキシとhttps URLで動作するようにaxiosを構成するにはどうすればよいですか?
Httpsプロキシを使用している場合、Axios httpsプロキシサポートは中断されます。 httpを使用して、プロキシを[httpsProxyAgent][1]
に渡してみてください。
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))
または、これを組み込んだAxiosのフォークがあります: axios-https-proxy-fix しかし、Axiosの最新の変更を確実にする最初の方法をお勧めします。
これを試して。それは私のために働く。
最初
npm install axios-https-proxy-fix
それから
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});
}
URLでポートを明示的に指定してみてください。
const url = "https://walmart.com:443/ip/50676589"
HTTPS-over-HTTPトンネルも必要な場合は、 この記事 に解決策があります。
お役に立てれば、
ヤン
このエラーは、axiosがhttps経由でリクエストをプロキシしようとしているため(URLから取得します)、追跡するチケットがあります: https://github.com/axios/axios/issues/925 =