tag attribute javascript phantomjs casperjs overwrite navigator

javascript - attribute - Falsas propiedades del navegador.



title html css (1)

Después de revisar el código, descubrí que el siguiente archivo debería cambiarse:

src/qt/qtwebkit/Source/WebCore/page/NavigatorBase.cpp

y NavigatorBase::platform() debe establecer en la cadena deseada que le gustaría que se devuelva como la NavigatorBase::platform() navegación. Pero no estoy seguro de si arruinará otras cosas, por favor dé sugerencias si no es una solución adecuada.

Me gustaría falsificar la propiedad de la plataforma Navigator de CasperJS (/ PhantomJS). Encontré las soluciones fáciles de sobrescribir el objeto Navigator en la carga de la página que se sugiere en muchos otros sitios en la web:

casper.on(''page.initialized'', function(){ this.evaluate(function(){ (function(oldNav){ var newNav = {}; [].forEach.call(Object.getOwnPropertyNames(navigator), function(prop){ if (prop === ''platform'') { Object.defineProperty(newNav, prop, { value: ''Win64'' }); }else { Object.defineProperty(newNav, prop, { get: function(){ return oldNav[prop]; } }); } }); window.navigator = newNav; })(window.navigator); }); });

Pero el problema es que si obtenemos las propiedades del Navegador desde un Iframe, los valores siguen siendo los originales porque la página inicializada solo la configura para la página principal. Así que opté por cambiarlo en su código fuente y construirlo de nuevo. Descargué Phantomjs del repositorio de git y busqué un valor de plataforma codificada (Linux x86_64 para mi caso). Encontré la cadena codificada en ./phantomjs/src/qt/qtwebkit/Source/WebCore/platform/qt/UserAgentQt.cpp

Lo cambié a la cadena que quería que me devolviera como navigator.platform, pero no afectó a navigator.platform. ¿Dónde debería cambiarlo? ¿Es (plataforma) una cadena codificada o se crea dinámicamente?