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

为什么同样的在浏览球和 postman 中可以请求到,而在本地 nodejs 代码中请求不到?

  •  1
     
  •   yuang · 2019-11-09 14:35:57 +08:00 · 7536 次点击
    这是一个创建于 1831 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有这样一个请求: https://api.pinterest.com/v1/me/pins/?access_token=xyz,access_token 是有效的,直接粘贴在浏览器地址栏或 postman 中可以访问到,但是使用 如下代码

    // test.js
    var http = require("https");
    
    var options = {
      "method": "GET",
      "hostname": "api.pinterest.com",
      "port": null,
      "path": "/v1/me/pins?access_token=xyz",
    };
    
    var req = http.request(options, function (res) {
      var chunks = [];
    
      res.on("data", function (chunk) {
        chunks.push(chunk);
      });
    
      res.on("end", function () {
        var body = Buffer.concat(chunks);
        console.log(body.toString());
      });
    });
    
    req.end();
    

    使用 node test.js 运行时报这样的错:

      errno: 'ETIMEDOUT',
      code: 'ETIMEDOUT',
      syscall: 'connect',
      address: '173.252.102.241',
      port: 443
    

    请教各位 v 友指点迷津,感谢。

    第 1 条附言  ·  2019-11-09 18:01:22 +08:00
    已确定是代理问题,需要在代码中添加 proxy,即可访问到。不得不说 pinterest 的 api 真是难用,一小时只能请求 5 次。。。
    ```js
    const options = {
    method: "GET",
    url: "https://api.pinterest.com/v1/me",
    qs: {
    access_token: String(userToken)
    },
    // tslint:disable-next-line: no-http-string
    proxy: "http://127.0.0.1:10887"
    };
    ```
    7 条回复    2019-11-09 18:06:19 +08:00
    nannanziyu
        1
    nannanziyu  
       2019-11-09 15:12:38 +08:00   ❤️ 1
    因为你浏览器开代理了
    zyl423
        2
    zyl423  
       2019-11-09 15:13:04 +08:00
    抓个包看看请求有什么不同
    opengps
        3
    opengps  
       2019-11-09 15:15:24 +08:00 via Android   ❤️ 1
    useragent 是防爬虫最简单的做法,你没修改就等同于告诉对方你是爬虫
    chuxiaonan
        4
    chuxiaonan  
       2019-11-09 15:16:24 +08:00   ❤️ 1
    有没有可能是 HTTPS 认证的问题 原因可能出在 nodejs 版本不支持 HTTPS 认证 gcc 版本过低 或者其他什么方面
    之前在公司服务器上遇到过 重新打个新 docker 就 OK 了
    photon006
        5
    photon006  
       2019-11-09 15:47:50 +08:00   ❤️ 1
    不要相信自己的封装能力,用现成的 request、superagent 库
    yuang
        6
    yuang  
    OP
       2019-11-09 18:03:53 +08:00
    @photon006 感谢,使用 request 库并设置代理已解决问题。
    yuang
        7
    yuang  
    OP
       2019-11-09 18:06:19 +08:00
    @nannanziyu 确实是代理问题
    @zyl423 不懂如何抓包
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5458 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:12 · PVG 15:12 · LAX 23:12 · JFK 02:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.