2012-11-26 13 views
7

है, मैं कई अलग-अलग पृष्ठों तक पहुंचने के लिए curl का उपयोग कर रहा हूं। मुझे यह जांचने का एक शानदार तरीका चाहिए कि पृष्ठ में जावास्क्रिप्ट रीडायरेक्ट है या नहीं। मैं शरीर में window.location की उपस्थिति की जांच कर सकता हूं, लेकिन क्योंकि यह .js फ़ाइल के अंदर हो सकता है या jQuery जैसी लाइब्रेरी का उपयोग कर सकता है, ऐसा लगता है कि कोई भी समाधान सही नहीं होगा। क्या किसी के भी पास कोई सुझाव है?पता लगाएं कि किसी वेब पेज में जावास्क्रिप्ट रीडायरेक्ट

+0

नहीं (आसानी से) संभव के साथ कर्ल के बाद से सरल कर्ल अनुरोध जावास्क्रिप्ट का समर्थन नहीं करता है। – PeeHaa

+0

हां, मैं इसे निष्पादित करने के बजाए एक पार्सर के माध्यम से मार्कअप चलाने के बारे में सोच रहा था। – madphp

+0

आपको बाहरी फ़ंक्शन कोड में और पेज लोड पर कॉल किए जाने वाले कार्यों के भीतर window.location की आवश्यकता होगी। जाहिर है, सभी फाइलों में भी शामिल है। – Ranty

उत्तर

2

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 
+0

जेएस क्लाइंट साइड रीडायरेक्ट के साथ अपना कोड कैसे अनुवर्ती किया है? किसी भी जेएस रीडायरेक्ट चलाने से पहले पेज नहीं खोलेंगे? – CMCDragonkai

0

आप केवल स्क्रिप्ट को पार्स करके नहीं कर सकते हैं। केवल निष्पादन आपको पृष्ठ के जेएस का सही प्रवाह दिखाएगा।

निष्पादन की नकल करने का एक तरीका कोड स्तर के विभिन्न स्तरों के लिए एक पुनर्निर्देशन है। सबसे ऊपर <script> टैग के तहत होगा और यहां कोई भी रीडायरेक्ट सीधे रीडायरेक्ट होगा। यदि कोई रीडायरेक्ट फ़ंक्शंस के अंदर पाया जाता है तो आपको प्रोग्राम की संरचना को ट्रैक करना होगा और अनुमान लगाना होगा।

+0

यह है कि @madphp का अर्थ है 'जावास्क्रिप्ट रीडायरेक्ट' है ... यदि वह केवल एक रीडायरेक्ट की उपस्थिति का पता लगाने की इच्छा रखता है, तो प्रश्न की टिप्पणियों में वर्णित एक साधारण पार्सर अच्छी तरह से काम करेगा। यदि वह जानना चाहता है कि कोई अस्तित्व में है या निष्पादित किया जाएगा, तो उसे उन अनुमानों को बनाना होगा। – renab

+0

हाँ, यह एक समस्या है। मुझे आश्चर्य हुआ कि खिड़की के लिए एक निर्दोष कारण होगा। एक समारोह में स्थान। किसी मोबाइल संस्करण या गैर-फ़्लैश पृष्ठ पर रीडायरेक्ट करना पसंद है। – madphp

+0

@renab। हां और यही कारण है कि मैंने दोनों राय – footy

0

कर्ल का उपयोग करने के उद्देश्य और वास्तव में पृष्ठ पर रीडायरेक्ट की आवश्यकता के आधार पर। आवश्यक ब्राउज़िंग करने के लिए फ़ैंटॉमजेएस (http://phantomjs.org/) जैसे हेडलेस फ्रेमवर्क को शामिल करना संभव है। आप यह देखने में सक्षम होंगे कि रीडायरेक्ट होगा या पृष्ठ पर निष्पादित किसी भी अन्य जावास्क्रिप्ट को ट्रैक करेगा।

संबंधित मुद्दे