Node.js Request()在一个特定域的页面上失败

时间:2018-05-14 14:35:31

标签: node.js node-request

我的客户突然遇到使用Node.js进行HTML scraper工作的问题。我已经在原因上盘旋,发现它位于Request模块中。这让我编写了一个小型测试应用程序,它只通过Request模块获取给定URL的HTML。像这样:

var request = require('request');

request('https://www.politi.dk/da/ompolitiet/jobipolitiet/ledige_stillinger/ledigestillinger', function(err, res, body){
    if(err){
        console.log(err);
    } else {
        console.log('statusCode:', res.statusCode);
        console.log('statusMessage:', res.statusMessage);
    }
});

上面的例子不起作用,因为我在运行应用程序时遇到以下错误:

{ Error: socket hang up
    at TLSSocket.onHangUp (_tls_wrap.js:1137:19)
    at Object.onceWrapper (events.js:313:30)
    at emitNone (events.js:111:20)
    at TLSSocket.emit (events.js:208:7)
    at endReadableNT (_stream_readable.js:1064:12)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
  code: 'ECONNRESET',
  path: null,
  host: 'www.politi.dk',
  port: 443,
  localAddress: undefined }

但是,如果我将URL更改为任何其他URL,则可以使用以下内容:

statusCode: 200
statusMessage: OK

我已尝试在politi.dk域上传递其他网址,但这也无效。因此,当通过Request模块请求页面时,我可以得出结论,该域存在问题。奇怪的是,它直到最近才起作用。什么可能导致这个问题?可以对politi.dk的服务器进行一些设置更改,这会导致此问题吗?我发现很难在谷歌上找到任何有用的东西。我在SO上找到了nodejs-what-does-socket-hang-up-actually-mean线程,这是完全相同的问题。但答案对我没什么帮助。

任何?

0 个答案:

没有答案