прокси удостоверяване в node.js със заявка за модул

Опитвам се да използвам модула заявка в моето приложение node.js и трябва да конфигурирам настройките на прокси с удостоверяване.

Моите настройки са нещо подобно:

proxy:{
    host:"proxy.foo.com",
    port:8080,
    user:"proxyuser",
    password:"123"
}

Как мога да задам моята прокси конфигурация, когато направя заявка? Може ли някой да ми даде пример? Благодаря


person Victor    schedule 10.05.2014    source източник


Отговори (3)


Ето пример за това как да конфигурирате (https://github.com/mikeal/request/issues/894 ):

//...some stuff to get my proxy config (credentials, host and port)
var proxyUrl = "http://" + user + ":" + password + "@" + host + ":" + port;

var proxiedRequest = request.defaults({'proxy': proxyUrl});

proxiedRequest.get("http://foo.bar", function (err, resp, body) {
  ...
})
person Victor    schedule 25.05.2014
comment
Вашият отговор ми помогна да стигна до мястото, където трябваше да бъда за моя. +1 - person James LeClair; 17.11.2014
comment
Няма отговор, когато правя това. Знаете ли някаква конкретна причина? - person Suhail Gupta; 26.09.2017
comment
Виктор, благодаря ти! - person Qulery; 23.01.2018

Приетият отговор не е грешен, но исках да предам алтернатива, която задоволява малко по-различна нужда, която открих.

По-специално моят проект има набор от прокси сървъри, от които да избирате, а не само един. Така че всеки път, когато правя заявка, няма много смисъл да задавам отново обекта request.defaults. Вместо това можете просто да го прехвърлите директно към опциите за заявка.

var reqOpts = {
    url: reqUrl, 
    method: "GET", 
    headers: {"Cache-Control" : "no-cache"}, 
    proxy: reqProxy.getProxy()};

reqProxy.getProxy() връща низ до еквивалента на [protocol]://[username]:[pass]@[address]:[port]

След това направете заявката

request(reqOpts, function(err, response, body){
    //handle your business here
});

Надяваме се, че това помага на някой, който идва заедно със същия проблем. наздраве

person James LeClair    schedule 17.11.2014
comment
reqProxy друг пакет ли е? - person sidonaldson; 07.07.2015
comment
@sidonaldson Не, reqProxy е просто модул, който написах, за да обслужва прокси низа. - person James LeClair; 08.07.2015
comment
Странно. request.defaults не работи за мен. Вместо това това решение проработи. - person coding_idiot; 16.05.2019

прокси параметърът приема низ с url за вашия прокси сървър, в моя случай прокси сървърът беше на http://127.0.0.1:8888

request({ 
    url: 'http://someurl/api',
    method: 'POST',
    proxy: 'http://127.0.0.1:8888',
    headers: {
        'Content-Length': '2170',
        'Cache-Control': 'max-age=0'
    },
    body: body
  }, function(error, response, body){
    if(error) {
        console.log(error);
    } else {
      console.log(response.statusCode, body);
    }

    res.json({ 
      data: { body: body } 
    })
});
person svnm    schedule 28.10.2015
comment
поставянето на http: в proxy беше ключът за мен. - person Arpit Aggarwal; 14.10.2019