Здравствуйте уважаемые знатоки.
В первые столкнулся с надобностью отправить http запрос через прокси из nodejs но понял что это не такая простая задача.
Неработает ни на винде 10 ни на дебиан.
Чуть ниже представлен код который я пытался заставить работать и там же в комментарии
Сразу скажу что прокси которые я использовал 100% рабочие.
Node.js v18.20.6
///////// axois ///////////
const axios = require('axios');
axios.get('https://www.httpbin.org/ip', {
'responseType': 'text',
'timeout':120000,
'proxy': {
'protocol': 'http',
'host': 'x.x.x.x', // подставте свой прокси хост
//'hostname': 'x.x.x.x', // <--- пробовал раскомментить эту строку а верхнюю закомментить, не помогло, пробовал обе раскомментить, не помогло
'port': 0000, // подставте свой прокси порт
'auth': {
'username': 'username', // подставте свой прокси username
'password': 'password' // подставте свой прокси password
}
}
})
.then((res) => { console.log('res.data:', res.data) })
.catch((err) => {
if (err.response) {
console.log('err.response.data:', err.response.data);
}else if(err.request){
console.log('err.request:', err.request);
}else{
console.log('err.message:', err.message);
}
});
// Ответ (если в "protocol" подставить "http")
/* err.response.data: <html><head><title>400 Bad Request</title></head>
<body><h2>400 Bad Request</h2></body></html>
*/
// Ответ (если в "protocol" подставить не "http" а "https")
/*
err.request: <ref *2> Writable {
_writableState: WritableState {
objectMode: false,
highWaterMark: 16384,
finalCalled: false,
needDrain: false,
ending: false,
ended: false,
finished: false,
destroyed: false,
decodeStrings: true,
defaultEncoding: 'utf8',
length: 0,
writing: false,
corked: 0,
sync: true,
bufferProcessing: false,
onwrite: [Function: bound onwrite],
...
}
*/
//////////////////////////////////////////////////////////////////////////////////////////
///////// fetch /////////
const { HttpsProxyAgent } = require('https-proxy-agent');
var proxy_url = 'http://username:password@x.x.x.x:0000'; // подставьте свои значения для прокси. Кстати если вместо "http://" вписать "https://" непомогает
var proxy_agent = new HttpsProxyAgent(proxy_url);
(async () => {
var response = await fetch('https://www.httpbin.org/ip', {
agent: proxy_agent,
});
var data = await response.text();
console.log('DATA:', data);
})();
// Ответ (показывает мой собственный ip либо ip машины т.е. если запускать код из vds какого нибудь )
/* DATA: {
"origin": "178.121.31.147"
} */
У кого какие буду идеи?