V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
morelearn1990
V2EX  ›  Node.js

请教一个 nodejs 的网络请求问题。

  •  
  •   morelearn1990 · 2020-02-12 18:30:01 +08:00 · 7236 次点击
    这是一个创建于 1752 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我使用 nodejs 去请求一个 api 地址,这个地址需要翻&&墙。 我挂上代理后,浏览器和 postman 都能请求到数据,nodejs 就是请求不到数据,一直是要么是 connect ETIMEDOUT 要么是 confuse。 nodejs 使用的是 axios 作为请求库,也试过 request,两个都不能请求到数据。 请教一下各位大神,这个可能是什么原因呀。

    12 条回复    2020-03-02 13:39:31 +08:00
    newlifeinsc
        1
    newlifeinsc  
       2020-02-12 18:31:50 +08:00
    首先你挂的什么代理,有在代码里指名用什么代理吗
    ayase252
        2
    ayase252  
       2020-02-12 18:33:33 +08:00
    用 proxy 属性指定使用的代理,https://github.com/axios/axios#request-config
    morelearn1990
        3
    morelearn1990  
    OP
       2020-02-12 18:34:09 +08:00 via iPhone
    使用的 socket 代理,代码里面没有指明用代理。是否一定要在代码里面指定代理?
    morelearn1990
        4
    morelearn1990  
    OP
       2020-02-12 18:34:58 +08:00 via iPhone
    我刚出来收快递了,我回去试一下
    morelearn1990
        5
    morelearn1990  
    OP
       2020-02-12 20:34:44 +08:00
    @ayase252 @newlifeinsc
    大神你好

    情况有了变化但是数据还是没有获取到;
    axios response 里面的 status 是 200,statusText 是 Connection established ;
    但是 data 还是没有数据,这个情况我还真没遇到过,能否指导一下,谢谢
    newlifeinsc
        6
    newlifeinsc  
       2020-02-12 21:07:27 +08:00
    最好把代码贴出来吧,光这样说不知道什么问题
    yuang
        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 } });
    yuang
        8
    yuang  
       2020-02-12 22:18:47 +08:00 via Android
    npm tunnel。需要上代理隧道
    muzuiget
        9
    muzuiget  
       2020-02-13 01:23:11 +08:00
    是不是你的代理是 SOCKS5 协议的,看上去那个库不支持。
    morelearn1990
        10
    morelearn1990  
    OP
       2020-02-13 08:35:36 +08:00
    @yuang 谢谢大神,成功了。这个代理隧道是什么意思呀?
    yuang
        11
    yuang  
       2020-02-13 09:46:04 +08:00 via Android
    @morelearn1990 客气了。原理我也不太懂,只是以前遇到过同样的问题
    rabbbit
        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);
    });
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1289 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:00 · PVG 08:00 · LAX 16:00 · JFK 19:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.