Как отправить запрос через proxy?
У меня есть proxy адрес, который выглядит примерно так: 185.233.80.131 : 9122 : GVF7nV : kbh32Z (ip адрес : порт : логин : пароль). Для отправки запроса через proxy я использую Tunnel.
const tunnelingAgent = tunnel.httpOverHttps({
proxy: getProxyOptions(),
});
const req = https.request(
{
host: 'url сайта, к которому хочу обратиться через proxy',
port: 443,
agent: tunnelingAgent,
},
(res) => {
console.log(res);
}
);
function getProxyOptions() {
return {
host: '185.233.80.131',
port: 9122,
proxyAuth: 'GVF7nV:kbh32Z'
};
}
Но вылетает ошибка:
Error: tunneling socket could not be established, cause=write EPROTO 12248:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:c:\ws\deps\openssl\openssl\ssl\record\ssl3_record.c:332
Судя по ответам в интернете, такая ошибка говорит об использовании в адресе https, в то время как при обращении к proxy нужно использовать http.
Но когда пытаюсь записать примерно вот так:
function getProxyOptions() {
return {
host: 'http://185.233.80.131',
port: 9122,
proxyAuth: 'GVF7nV:kbh32Z'
};
}
Выдаёт ошибку:
Error: tunneling socket could not be established, cause=getaddrinfo ENOTFOUND 185.233.80.131
Подскажите, пожалуйста, как решить эту проблему?
UPDATE: Если считать проблемой то, что я не мог отправить запрос через proxy, то эту проблему я решил. Для этого я использовал библиотеку node-fetch. Теперь отправление запроса выглядит так:
import * as url from 'url';
import fetch, { RequestInit } from 'node-fetch';
import { Agent } from 'http';
const HttpsProxyAgent = require('https-proxy-agent');
const agentOptions: url.UrlWithStringQuery = url.parse('http://185.233.80.131:9122');
agentOptions.auth = 'GVF7nV:kbh32Z';
const agent: Agent = new HttpsProxyAgent(agentOptions);
const requestInit: RequestInit = { agent };
fetch('https://example.com', requestInit);