है, मैं कई अलग-अलग पृष्ठों तक पहुंचने के लिए curl का उपयोग कर रहा हूं। मुझे यह जांचने का एक शानदार तरीका चाहिए कि पृष्ठ में जावास्क्रिप्ट रीडायरेक्ट है या नहीं। मैं शरीर में window.location
की उपस्थिति की जांच कर सकता हूं, लेकिन क्योंकि यह .js फ़ाइल के अंदर हो सकता है या jQuery जैसी लाइब्रेरी का उपयोग कर सकता है, ऐसा लगता है कि कोई भी समाधान सही नहीं होगा। क्या किसी के भी पास कोई सुझाव है?पता लगाएं कि किसी वेब पेज में जावास्क्रिप्ट रीडायरेक्ट
उत्तर
phantomjs ओर इशारा करते हुए के लिए Ikstar के लिए धन्यवाद मैं निम्न उदाहरण बाहर काम किया:
test.js
var page = require('webpage').create();
var testUrls = [
"http://www.google.nl",
"http://www.example.com"
];
function testNextUrl()
{
var testUrl = testUrls.shift();
page.open(testUrl, function() {
var hasRedirect = page.url.indexOf(testUrl) !== 0;
console.log(testUrl + ": " + hasRedirect.toString());
if (testUrls.length) {
testNextUrl();
} else {
phantom.exit();
}
});
}
testNextUrl();
परिणाम:
D:\Tools\phantomjs-1.7.0-windows>phantomjs test.js
http://www.google.nl: false
http://www.example.com: true
जेएस क्लाइंट साइड रीडायरेक्ट के साथ अपना कोड कैसे अनुवर्ती किया है? किसी भी जेएस रीडायरेक्ट चलाने से पहले पेज नहीं खोलेंगे? – CMCDragonkai
आप केवल स्क्रिप्ट को पार्स करके नहीं कर सकते हैं। केवल निष्पादन आपको पृष्ठ के जेएस का सही प्रवाह दिखाएगा।
निष्पादन की नकल करने का एक तरीका कोड स्तर के विभिन्न स्तरों के लिए एक पुनर्निर्देशन है। सबसे ऊपर <script>
टैग के तहत होगा और यहां कोई भी रीडायरेक्ट सीधे रीडायरेक्ट होगा। यदि कोई रीडायरेक्ट फ़ंक्शंस के अंदर पाया जाता है तो आपको प्रोग्राम की संरचना को ट्रैक करना होगा और अनुमान लगाना होगा।
यह है कि @madphp का अर्थ है 'जावास्क्रिप्ट रीडायरेक्ट' है ... यदि वह केवल एक रीडायरेक्ट की उपस्थिति का पता लगाने की इच्छा रखता है, तो प्रश्न की टिप्पणियों में वर्णित एक साधारण पार्सर अच्छी तरह से काम करेगा। यदि वह जानना चाहता है कि कोई अस्तित्व में है या निष्पादित किया जाएगा, तो उसे उन अनुमानों को बनाना होगा। – renab
हाँ, यह एक समस्या है। मुझे आश्चर्य हुआ कि खिड़की के लिए एक निर्दोष कारण होगा। एक समारोह में स्थान। किसी मोबाइल संस्करण या गैर-फ़्लैश पृष्ठ पर रीडायरेक्ट करना पसंद है। – madphp
@renab। हां और यही कारण है कि मैंने दोनों राय – footy
कर्ल का उपयोग करने के उद्देश्य और वास्तव में पृष्ठ पर रीडायरेक्ट की आवश्यकता के आधार पर। आवश्यक ब्राउज़िंग करने के लिए फ़ैंटॉमजेएस (http://phantomjs.org/) जैसे हेडलेस फ्रेमवर्क को शामिल करना संभव है। आप यह देखने में सक्षम होंगे कि रीडायरेक्ट होगा या पृष्ठ पर निष्पादित किसी भी अन्य जावास्क्रिप्ट को ट्रैक करेगा।
नहीं (आसानी से) संभव के साथ कर्ल के बाद से सरल कर्ल अनुरोध जावास्क्रिप्ट का समर्थन नहीं करता है। – PeeHaa
हां, मैं इसे निष्पादित करने के बजाए एक पार्सर के माध्यम से मार्कअप चलाने के बारे में सोच रहा था। – madphp
आपको बाहरी फ़ंक्शन कोड में और पेज लोड पर कॉल किए जाने वाले कार्यों के भीतर window.location की आवश्यकता होगी। जाहिर है, सभी फाइलों में भी शामिल है। – Ranty