2016-11-10 53 views
3

如何设置自定义userAgent属性?
我试图用如何在node-phantom中设置userAgent属性?

page.set( 'settings.userAgent', 'myCustomUserAgent')

但它似乎并没有工作。
我还试图通过'page.get'

page.get( '设置')。然后
(函数(设置)来检查更改{
的console.log(设置);
} )
.catch(函数(ERR){
console.error(ERR);}

但我唯一看到的是:


    { 
     XSSAuditingEnabled: false, 
     javascriptCanCloseWindows: true, 
     javascriptCanOpenWindows: true, 
     javascriptEnabled: true, 
     loadImages: true, 
     localToRemoteUrlAccessEnabled: false, 
     userAgent: 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1', 
     webSecurityEnabled: true 
    }

这里是我的代码

'use strict'; 
const async = require('async'); 
const phantom = require('node-phantom-async'); 
process.setMaxListeners(Infinity); 

const uri = 'http://www.my.uri'; 

function parseCatalogLinks(callback) { 
    phantom.create({ 
     phantomPath: require('phantomjs').path, 
     ignoreSSLErrors: true 
    }) 
     .bind({}) 
     .then(function (ph) { 
      this.ph = ph; 
      return this.ph.createPage(); 
     }) 
     .then(function (page) { 
      this.page = page; 
      this.page.set('settings.userAgent', 'Mozilla/5.0 (Windows NT 6.3; WOW64)' + 
       ' AppleWebKit/537.36 (KHTML, like Gecko)' + 
       ' Chrome/54.0.2840.87 Safari/537.36'); 
      return this.page; 
     }) 
     .then(function (page) { 
      this.page.get('settings') 
       .then(function (settings) { 
        console.log('settings', settings) 
       }) 
       .catch(function (err) { 
        console.error(err); 
       }); 
      return this.page.open(uri); 
     }) 
     .catch(function (err) { 
      console.error('Error while opening main page', err); 
     }) 
     .then(function (status) { 
      console.info('Main site ' + uri + ' opened with status', status); 
     }) 
     .then(function() { 
      return this.page.evaluate(function() { 
       var $catalogLinksList = $('.header .category .category__item'); 
       var catalogItems = []; 

       $catalogLinksList.each(function() { 
        catalogItems.push({ 
         sectionLink: $('a.category__link', this).attr('href'), 
         sectionTitle: $('.category__title', this).text() 
        }) 
       }); 
       return catalogItems; 
      }) 
     }) 
     .catch(function (err) { 
      console.error('Error while evaluating the main page', uri, err); 
     }) 
     .then(function (result) { 
      callback(null, result); 
     }) 
     .finally(function() { 
      return this.page.close(); 
     }) 
     .finally(function() { 
      return this.ph.exit(); 
     }); 
} 

回答

0

令人沮丧的API抽象:(层

什么工作对我来说是继从节点幻像的API准则: https://github.com/amir20/phantomjs-node#page-object-api

PhantomJS使用page.set(..而phantomjs-节点使用page.setting(..来读取和写入。

camelCased额外的混乱;)

this._page.setting('userAgent', 'foobar');  

    return this._page.setting('userAgent'); // returns 'foobar' 

刚才我有同样的问题,你的问题帮我缩小下来。谢谢!