如果我必须直接单击横幅并在另一个选项卡上打开它,如何使用 selenium 获取重定向链?

How to get redirect chain with selenium if I must directly click on banners and open it on another tab?

我正在做一个项目,我应该在其中点击横幅并获得重定向链。

为了不让我的页面被覆盖并使下一步更容易,我想我应该 ctrl+click 在横幅上并在另一个浏览器选项卡中打开它以获得 all 真正的 重定向链。

我研究了很多,但只发现目前的方法会转储 HAR 文件以获取重定向链。但是要获取 HAR 文件,Developer Tools window 中的 Network panel 应该事先在选项卡中打开。但是,就我而言,在加载选项卡之前,新选项卡无法打开 网络面板 ;我无法打开 网络面板 并重新加载页面,因为重定向链不是真实的。此外,嵌入式 性能日志 不适用于我的情况

谁能告诉我如何解决这些问题?还是我上面的任何部分都错了?任何建议将不胜感激,因为我确实已经研究了很长时间。

为了获得重定向链,您需要 HAR 文件。

有一些软件包将 selenium 与其他库结合起来以实现此目的(以及其他添加)。

一个是browsermob-proxy.

BrowserMob Proxy allows you to manipulate HTTP requests and responses, capture HTTP content, and export performance data as a HAR file. BMP works well as a standalone proxy server, but it is especially useful when embedded in Selenium tests.

这是一个例子:

from browsermobproxy import Server
server = Server("path/to/browsermob-proxy")
server.start()
proxy = server.create_proxy()

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--proxy-server={0}".format(proxy.proxy)) #Configure chrome options
driver = webdriver.Chrome(chrome_options=chrome_options)
proxy.new_har("Whosebug") 
driver.get("https://whosebug.com")
print(proxy.har)

还有其他库,例如 selenium-wire,具有类似的功能(还有其他特性)。

注意:无需打开网络面板。

确保download the proxy并添加启动服务器的路径。