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

标签 python selenium selenium-webdriver redirect har

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

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

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

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

最佳答案

为了获得重定向链,您需要 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("StackOverFlow") 
driver.get("https://stackoverflow.com")
print(proxy.har)

还有其他库如selenium-wire具有类似的功能(以及其他功能)。

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

确保download the proxy并添加Server的启动路径。

关于python - 如果我必须直接单击横幅并在另一个选项卡上打开它,如何使用 selenium 获取重定向链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67147262/

相关文章:

python - Tkinter 弹出窗口中的小部件从另一个窗口中的小部件获取 Tab 焦点

c# - 如何防止 headless chrome 缓存 cookie?

Python selenium is_displayed 方法

java - 找到不可见的值

c# - 在 selenium/webdriver c# 中循环遍历多个 moveToElement

python - 按空白分割图像

python - 如何防止ipython笔记本中的单元格重叠

python - 关于如何在 python 中使用属性功能的真实示例?

python - Beautifulsoup 获取汤中未选择的元素

node.js - Firefox 不等待页面加载 Webdriverio