2017-06-14 64 views
0

示例: http://url1.com(javascript redirect) - > url2.com(javascript redirect new window) - > url3.com(javascript redirect) - > url4.com (網址沒有定義,我有噸的隨機網址)使用Python和Selenium(或其他)跟蹤重定向鏈

我的問題:我不知道如何跟蹤重定向鏈。我知道第一個url1,我可以用browser.current_url來捕捉最後一個網址。但是,如何抓住url2,3(以及url1和上一個url之間的所有其他)。

隨着請求其易:

r = requests.get("http://url1.com") 
for ele in r.history: 
    print ele.url 
print r.url 

但要求使用Javascript不工作。

我能做些什麼?

回答

1

你不能用硒來做到這一點。
簡化的說明是301/302狀態代碼重定向由http級別的瀏覽器處理(再次簡化 - SE與DOM /頁面的html一起使用),並且從不傳播到Selenium。在前面的句子中用JavaScript代替Selenium,它仍然大部分是正確的。

你可以用js做的最好的事情是注入一個beforeunloadunload事件監聽器來捕獲並確認url1-> url2重定向的存在,但就是這樣。

您可以使用python的requests庫來處理它的原因是因爲它在較低的http協議級別上工作並對它們進行跟蹤。正如你已經有了解決方案,爲什麼不把它用於這個測試。