我試圖從許多HTML頁面捕捉儘可能多的Javascript重定向。我的正則表達式是:正則表達式捕捉儘可能多的Javascript重定向
((location.href)|(window.location)|(location.replace)|(location.assign))((?= ?)|(?\(?))("|')([^'"]*)("|')(?\) ?)?;
我使用Python,但問題是一般:
regex = re.compile(r"""((location.href)|(window.location)|(location.replace)|(location.assign))((?= ?)|(?\(?))("|')([^'"]*)("|')(?\) ?)?;""", re.I)
# ... some control here ...
print re.search(regex, html).group(10) # 10 is the pure url
我做了一些測試,我能趕上所有這些情況。
location.href = "http://www.foo.com";
location.href="http://www.foo.com";
window.location = "http://www.foo.com";
window.location.href = "http://www.foo.com";
location.replace ("http://www.foo.com");
location.replace("http://www.foo.com") ;
location.assign ("http://www.foo.com");
,並跳過其中,因爲代碼包含一個變量,我不能解析的網址:
location.href = "http://www.foo.com" + var + "something else";
的問題是:
- 是否有其他方式使用JavaScript重定向?其他
location.somethingelse
我失蹤了? - 我發現這4種情況的方式正確嗎?是否允許有類似
location.href = http://www.foo.com;
或location.replace (http://www.foo.com);
的東西,我會因(雙)引號而錯過?我是太嚴格還是過於寬鬆? - 我的正則表達式編寫得好嗎?或者我能以某種方式改進它?
還有'document.location' – mrk
謝謝,我忘了! – Luca
該URL應該在雙引號或單引號之間。你需要檢查兩者,因爲它們都是用JavaScript封裝字符串的有效方法。 –