无法使用自定义用户代理值连接Node和Phantom

时间:2013-08-21 11:03:11

标签: node.js phantomjs pipe

我的代码只适用于 Phantom.js ,只能使用自定义用户代理值。但是,当我尝试用 npm phantom Node.js 包装此代码时,我遇到了设置User-agent值的问题。正如我从模块描述中所理解的那样它应该像这样 p.page.set('settings',{...})

即使使用例如代码,它也不起作用:

var phantom = require('phantom');

phantom.create(function(ph) {
  return ph.createPage(function(page) {
    return p.page.set('settings', {userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36'});
    // or p.page.set('settings.userAgent', 'Mozilla ....');
    return page.open("http://www.google.com", function(status) {
      return page.evaluate((function() {
        return document.title;
      }), function(result) {
        console.log('Page title is ' + result);
        return ph.exit();
}); }); }); });

我应该在哪里插入此代码 - 在 phantom.create 之后或 ph.createPage 之后以及为什么它会返回错误

stream.js:94
      throw er; // Unhandled stream error in pipe.
            ^
ReferenceError: p is not defined

1 个答案:

答案 0 :(得分:2)

ph.createPage page.open <之间 page.set 而不是 p.page.set / p>

return ph.createPage(function(page) {    
  page.set('settings.userAgent', "Mozilla/5.0 ... Safari/537.36");
  return page.open("http://www.google.com", function(status) {