需要用到2个库,requestsocks5-http-client/lib/Agent/或者socks5-https-client/lib/Agent因为一些已知的原因,有时候,http.request请求无法获取到数据,首先想到的是proxy,其次是socket5。有了上面两个库,下面的代码就超级简单了。constrequest=require('request');varhttpAgent=require('socks5-http-client/lib/Agent');varhttpsAgent=require('socks5-https-client/lib/Agent');varAgent=/^https/.test(url)?httpsAgent:httpAgent;request({url:url,strictSSL:false,agentClass:Agent},function(err,res){console.log(err||res.body,res.statusCode,res.headers);});当然也可以修改代理地址:request({url:url,strictSSL:false,agentClass:Agent,agentOptions:{socksHost:'localhost',//Defaultsto'localhost'.socksPort:1080,//Defaults到1080。}},function(err,res){console.log(err||res.body,res.statusCode,res.headers);});我不明白的是:我在使用http.request的时候需要自己添加各种header来满足请求不报错,但是request库不需要写任何headers。在这里留下一面旗帜。如果有人知道,请在下面发表评论。
