2016-11-10 2 views
3

Wie kann ich benutzerdefinierte userAgent-Eigenschaft festlegen? zu arbeiten
Ich versuchteWie Sie die UserAgent-Eigenschaft in Node-Phantom festlegen?

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

Aber es nicht zu benutzen.
Ich habe auch versucht, die Änderungen über 'page.get'

page.get zu überprüfen ('Einstellungen')
.then (function (Einstellungen) {
console.log (Einstellungen);
})
.catch (function (err) {
console.error (err);
})

Aber das einzige, was ich sehe, ist:


    { 
     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 
    }

Hier ist mein Code

'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(); 
     }); 
} 

Antwort

0

Frustrierende Schichten API Abstraktion :(

Was für mich gearbeitet wird im Anschluss an die API-Richtlinien von Knoten-Phantom: https://github.com/amir20/phantomjs-node#page-object-api

PhantomJS verwendet page.set(.. während phantomjs- Knoten verwendet page.setting(.. zum Lesen und Schreiben.

camelCased für zusätzliche Verwirrung;)

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

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

hatte ich das gleiche Problem gerade jetzt, und Ihre Frage hat mir geholfen, diese einzuschränken. Vielen Dank!

Verwandte Themen