morelearn1990
V2EX  ›  Node.js

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

  •  
  •   morelearn1990 · Feb 12, 2020 · 8134 views
    This topic created in 2306 days ago, the information mentioned may be changed or developed.

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

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

    情况有了变化但是数据还是没有获取到;
    axios response 里面的 status 是 200,statusText 是 Connection established ;
    但是 data 还是没有数据,这个情况我还真没遇到过,能否指导一下,谢谢
    newlifeinsc
        6
    newlifeinsc  
       Feb 12, 2020
    最好把代码贴出来吧,光这样说不知道什么问题
    yuang
        7
    yuang  
       Feb 12, 2020 via Android
    this.axiosInstance.defaults.proxy = false; this.axiosInstance.defaults.httpsAgent = tunnel.httpsOverHttp({ proxy: { host: proxyHost, port: proxyPort } });
    yuang
        8
    yuang  
       Feb 12, 2020 via Android
    npm tunnel。需要上代理隧道
    muzuiget
        9
    muzuiget  
       Feb 13, 2020
    是不是你的代理是 SOCKS5 协议的,看上去那个库不支持。
    morelearn1990
        10
    morelearn1990  
    OP
       Feb 13, 2020
    @yuang 谢谢大神,成功了。这个代理隧道是什么意思呀?
    yuang
        11
    yuang  
       Feb 13, 2020 via Android
    @morelearn1990 客气了。原理我也不太懂,只是以前遇到过同样的问题
    rabbbit
        12
    rabbbit  
       Mar 2, 2020
    我也遇到了这个问题, 楼主可以贴个示例吗? 用的 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);
    });
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   914 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 19:52 · PVG 03:52 · LAX 12:52 · JFK 15:52
    ♥ Do have faith in what you're doing.