Node.js无法向zomato.com发送请求

我想请求https://zomato.com/,但没有任何反应,我可以连接任何地方,但不能到zomato我每次都会收到超时错误。 我试图设置用户代理,但它没有工作。 我使用节点6.6.0和请求2.79.0。 有任何想法吗?

var request = require('request'); var cheerio = require('cheerio'); var fs = require('fs'); var http = require('http'); request.get({ url: 'http://zomato.com/', headers: { 'user-ggent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36' } }, function(error, response, body) { if(error) { console.log("Error: " + error); return; } else { console.log("Status code: " + response.statusCode); } }); 


更新:
我注意到了这一点:

 curl -X GET "https://zomato.com/" 

返回301redirect

我有一些问题试图做一些类似的网站。 尝试NigthmareJS而不是请求

我没有testing过zomato,但在这里有我用于另一个网站的代码:

 var website = new Nightmare() .useragent("Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36") .goto('http://zomatoorwhateverwebsite.com/') .evaluate(function(){ return document.documentElement.innerHTML; }) .end() .then(function(html) { var $ = cheerio.load(html); //Do what you need here }) 

我希望这有帮助。 有时你需要添加一些wait()检查文档的额外function

如果你看看curl zomato.com -v的输出,你可以看到我们正在被redirect:

 HTTP/1.1 301 Moved Permanently HTTP/1.1 301 Moved Permanently 

所以我们需要添加:

  followAllRedirects: true, 

这里 :

  request.get({ url: 'http://zamato.com/', followAllRedirects: true, headers: { 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36' }