python selenium 监听所有 请求
时间: 2023-08-13 22:08:49 浏览: 68
要在 Python 中使用 Selenium 监听所有请求,可以使用 Selenium WebDriver 的 `execute_script` 方法结合 JavaScript 的 `XMLHttpRequest` 对象来实现。下面是一个示例代码:
```python
from selenium import webdriver
# 创建 WebDriver 对象
driver = webdriver.Chrome()
# 注册请求监听函数
driver.execute_script("""
(function() {
// 保存原始的 XMLHttpRequest 构造函数
var originalXHR = window.XMLHttpRequest;
// 重写 XMLHttpRequest 构造函数
function newXHR() {
var xhr = new originalXHR();
xhr.addEventListener("load", function() {
// 在请求完成时触发此事件
console.log("请求完成:", xhr);
});
xhr.addEventListener("error", function() {
// 在请求发生错误时触发此事件
console.log("请求错误:", xhr);
});
return xhr;
}
// 替换原始的 XMLHttpRequest 构造函数
window.XMLHttpRequest = newXHR;
})();
""")
# 打开页面
driver.get('https://example.com')
# 关闭 WebDriver
driver.quit()
```
在上述代码中,我们使用 `execute_script` 方法执行一段 JavaScript 代码,该代码会重写原始的 XMLHttpRequest 构造函数,从而实现对所有请求的监听。JavaScript 代码中添加了两个事件监听器,分别在请求完成和请求发生错误时触发,并通过 `console.log` 输出相关信息。
请注意,这种方法只能监听通过 XMLHttpRequest 发起的请求,无法监听其他类型的网络请求(如 fetch、AJAX 库等)。另外,Selenium WebDriver 会打开一个浏览器窗口,因此监听的是浏览器内部的请求。
希望这个示例对你有帮助!如有其他问题,请随时提问。