2012-11-26 11 views
7

Bir dizi farklı sayfaya erişmek için cURL kullanıyorum. Sayfanın javascript yönlendirmesi olup olmadığını kontrol etmenin zarif bir yolunu istiyorum. Vücutta bir window.location varlığını kontrol edebilirdim, ancak bir .js dosyasının içinde veya jQuery gibi bir kitaplık kullanıyor olabileceğinden, herhangi bir çözümün mükemmel olmayacağı anlaşılıyor. Herhangi bir fikri olan var mı?Bir web sayfası bir javascript yönlendirmesi varsa algılar

+0

Değil curl javascript'i desteklemediği için basit bukle istekleri. – PeeHaa

+0

Evet, yürütmeyi değil, bir ayrıştırıcıda işaretlemeyi çalıştırmayı düşünüyordum. – madphp

+0

Kod harici işlevinde ve sayfa yüklemesinde çağrılan işlevler içinde window.location öğesini aramanız gerekecektir. Tamamen, tüm dosyalar da dahil. – Ranty

cevap

2

teşekkürler ben şu örneği çalıştı:

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

Sonuç: (kolayca) mümkün olan

D:\Tools\phantomjs-1.7.0-windows>phantomjs test.js 
http://www.google.nl: false 
http://www.example.com: true 
+0

Kodunuz JS istemci tarafı yönlendirmelerle nasıl takip ediliyor? Herhangi bir JS yönlendirmesi çalıştırılmadan önce page.open bitmez mi? – CMCDragonkai

0

Yalnızca komut dosyası ayrıştırılarak yapılamaz. Sadece yürütme size o sayfanın JS'sinin gerçek akışını gösterir.

Yürütmeyi taklit etmenin bir yolu, bir yönlendirme olan farklı düzeylerde kod düzeyine sahip olmaktır. En çok en çok <script> etiketi altında olacak ve buradaki tüm yönlendirmeler düz bir yönlendirme olacaktır. İşlevler içinde herhangi bir yönlendirme bulunursa, programın yapısını izlemeniz ve bir tahminde bulunmanız gerekir.

+0

Bu, @madphp'nin 'javascript yönlendirmesi' ile ne anlama geldiğine bağlıdır ... Eğer yalnızca bir yönlendirmenin varlığını algılamak istiyorsa, sorunun yorumlarında açıkladığım gibi basit bir ayrıştırıcı iyi çalışır. Eğer var olup olmadığını bilmek istiyorsa VE idam edilecekse, bu tahminleri yapması gerekecek. – renab

+0

Evet, bu bir sorun. Bir işlevde window.location için zararsız bir neden olup olmadığını merak ettim. Mobil sürüme veya flash olmayan bir sayfaya yönlendirmek gibi. – madphp

+0

@renab. Evet ve bu yüzden neden her iki fikir verdim – footy

0

Curl kullanmasına ve sayfada yönlendirmeye gereksinim duyulmasına bağlı olarak. Gerekli tarama yapmak için PhantomJS (http://phantomjs.org/) gibi başsız çerçeveyi dahil etmek mümkündür. Bir yönlendirmenin gerçekleşip gerçekleşmeyeceğini ve sayfada çalıştırılan diğer herhangi bir javascript'i takip edip edemeyeceğinizi görebileceksiniz. phantomjs işaret için Ikstar için

İlgili konular