मैं CasperJS (/ PhantomJS) की नकली नेविगेटर प्लेटफ़ॉर्म संपत्ति चाहता हूं। मैं पृष्ठ लोड पर नेविगेटर वस्तु अधिलेखन की आसान समाधान है जो वेब पर कई अन्य स्थानों में सुझाव दिया है पाया:नकली नेविगेटर गुण
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);
});
});
लेकिन समस्या यह है कि अगर हम एक Iframe से नेविगेटर गुण प्राप्त, मूल्यों अभी भी कर रहे हैं मूल एक क्योंकि, पृष्ठ.in प्रारंभिक केवल इसे मुख्य पृष्ठ के लिए सेट करता है। इसलिए मैंने इसे अपने स्रोत कोड में बदलने और इसे फिर से बनाने का विकल्प चुना। मैंने गिट रेपो से फ़ैंटोमज डाउनलोड किए, और मैंने एक हार्डकोडेड प्लेटफ़ॉर्म मान (मेरे मामले के लिए लिनक्स x86_64) की खोज की। मुझे ./phantomjs/src/qt/qtwebkit/Source/WebCore/platform/qt/UserAgentQt.cpp
में हार्डकोडेड स्ट्रिंग मिली, मैंने इसे उस स्ट्रिंग में बदल दिया जिसे मैं नेविगेटर.प्लेटफार्म के रूप में वापस लौटना चाहता था, लेकिन यह नेविगेटर.प्लाफ़ॉर्म को प्रभावित नहीं करता था। मुझे इसे कहां बदलना चाहिए? क्या यह (मंच) एक harcoded स्ट्रिंग है या यह गतिशील रूप से बनाया गया है?
मैं कैंसर बदलने या फ़ैंटॉमजेएस के अपने संस्करण के निर्माण के बजाय कुछ विधियों को ओवरराइट करने का सुझाव दूंगा। शायद आपके पास अपने Google समूह https://groups.google.com/forum/#!forum/casperjs – CSchulz
में अपने प्रश्न पूछने के लिए और अधिक भाग्य है आपकी टिप्पणी के लिए धन्यवाद। मैंने वह किया। – Alex
शायद आप अपना समाधान उत्तर के रूप में पोस्ट कर सकते हैं। – CSchulz