如何将 http 代理与 node.js http.Client 一起使用?

新手上路,请多包涵

我想使用标准 http.Client 从 node.js 进行传出 HTTP 调用。但我无法直接从我的网络访问远程服务器,需要通过代理。

如何告诉 node.js 使用代理?

原文由 Christian Berg 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 668
2 个回答

关于使用 HTTP 代理, Tim Macfarlane回答 很接近。

使用 HTTP 代理(用于非安全请求)非常简单。您连接到代理并正常发出请求,除了路径部分包含完整的 url 并且主机标头设置为您要连接的主机。

蒂姆非常接近他的答案,但他错过了正确设置主机标题。

 var http = require("http");

var options = {
  host: "proxy",
  port: 8080,
  path: "http://www.google.com",
  headers: {
    Host: "www.google.com"
  }
};
http.get(options, function(res) {
  console.log(res);
  res.pipe(process.stdout);
});

作为记录,他的答案确实适用于 http://nodejs.org/ 但那是因为他们的服务器不关心主机标头不正确。

原文由 Samuel 发布,翻译遵循 CC BY-SA 3.0 许可协议

编辑自 2020 年 2 月 11 日起,请求已完全弃用。预计不会有新的变化。

您可以使用 request ,我只是发现在 node.js 上使用代理非常容易,只需一个外部“代理”参数,它甚至通过 http 代理支持 HTTPS。

 var request = require('request');

request({
  'url':'https://anysite.you.want/sub/sub',
  'method': "GET",
  'proxy':'http://yourproxy:8087'
},function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body);
  }
})

原文由 Imskull 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题