使用Python和Selenium(或其他)跟踪重定向链

时间:2017-06-14 17:36:58

标签: python selenium redirect

实施例: http://url1.com(javascript重定向) - > url2.com(javascript重定向新窗口) - > url3.com(javascript重定向) - > url4.com (网址没有定义,我有大量的randoms网址)

我的问题:我不知道跟踪重定向链如何。我知道第一个url1,我可以使用browser.current_url捕获最后一个url。但是如何捕获url2,3(以及url1和最后一个url之间的所有其他内容)。

请求很简单:

app.module.shared.ts

但请求无法使用Javascript。

我能做什么?

2 个答案:

答案 0 :(得分:1)

你不能用Selenium做到这一点 简化的解释是301/302状态代码重定向由浏览器在http级别处理(再次简化 - SE与DOM /页面的html一起工作),并且从未传播到Selenium。用上一句中的javascript代替Selenium,它仍然大部分都是真的。

使用js可以做的最好的事情是注入一个beforeunloadunload事件监听器来捕获并确认url1的存在 - > url2重定向,但就是这样。

你可以使用python的requests库来实现它是因为它适用于较低(http)协议级别,并跟踪它们。由于您已经有解决方案,为什么不将它用于此测试。

答案 1 :(得分:0)

正如第一个答案所说,您不能用 selenium 做到这一点。但是,您可以将 seleniumBrowserMobProxy 结合使用,因为网络驱动程序选项支持 BrowserMobProxy。

此外,我建议您尝试 selenium-wire,它扩展了 Selenium 的 Python 绑定,让您可以访问浏览器发出的底层请求。您编写代码的方式与使用 Selenium 的方式相同,但您可以获得额外的 API 来检查请求和响应并动态更改它们。 见selenium-wire