我使用 nodejs 去请求一个 api 地址,这个地址需要翻&&墙。 我挂上代理后,浏览器和 postman 都能请求到数据,nodejs 就是请求不到数据,一直是要么是 connect ETIMEDOUT 要么是 confuse。 nodejs 使用的是 axios 作为请求库,也试过 request,两个都不能请求到数据。 请教一下各位大神,这个可能是什么原因呀。
1
newlifeinsc 2020-02-12 18:31:50 +08:00
首先你挂的什么代理,有在代码里指名用什么代理吗
|
2
ayase252 2020-02-12 18:33:33 +08:00
用 proxy 属性指定使用的代理,https://github.com/axios/axios#request-config
|
3
morelearn1990 OP 使用的 socket 代理,代码里面没有指明用代理。是否一定要在代码里面指定代理?
|
4
morelearn1990 OP 我刚出来收快递了,我回去试一下
|
5
morelearn1990 OP @ayase252 @newlifeinsc
大神你好 情况有了变化但是数据还是没有获取到; axios response 里面的 status 是 200,statusText 是 Connection established ; 但是 data 还是没有数据,这个情况我还真没遇到过,能否指导一下,谢谢 |
6
newlifeinsc 2020-02-12 21:07:27 +08:00
最好把代码贴出来吧,光这样说不知道什么问题
|
7
yuang 2020-02-12 22:17:22 +08:00 via Android
this.axiosInstance.defaults.proxy = false; this.axiosInstance.defaults.httpsAgent = tunnel.httpsOverHttp({ proxy: { host: proxyHost, port: proxyPort } });
|
8
yuang 2020-02-12 22:18:47 +08:00 via Android
npm tunnel。需要上代理隧道
|
9
muzuiget 2020-02-13 01:23:11 +08:00
是不是你的代理是 SOCKS5 协议的,看上去那个库不支持。
|
10
morelearn1990 OP @yuang 谢谢大神,成功了。这个代理隧道是什么意思呀?
|
11
yuang 2020-02-13 09:46:04 +08:00 via Android
@morelearn1990 客气了。原理我也不太懂,只是以前遇到过同样的问题
|
12
rabbbit 2020-03-02 13:39:31 +08:00
我也遇到了这个问题, 楼主可以贴个示例吗? 用的 axios 的版本是多少?
我发现有些网站不会走代理,例如下面的 baidu.com ``` axios.defaults.proxy = false; axios.defaults.httpsAgent = tunnel.httpsOverHttp({ // 随便设置个错误的端口也能成功,实际上没走代理 proxy: { host: "127.0.0.1", port: "7777" } }); axios .get("http://baidu.com") .then(function(response) { console.log("Response with axios was ok: " + response.status); }) .catch(function(error) { console.log(error); }); ``` |