You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium脚本:如何在页面快速重定向前获取初始URL?

解决Selenium无法捕获页面初始重定向URL的问题

以下是几种可行方案,帮你获取到那个转瞬即逝的初始URL:

1. 利用Chrome DevTools Protocol(CDP)监听网络请求

通过CDP可以捕获浏览器发出的所有网络请求,包括初始页面的加载请求,不受重定向影响。以Java为例:

// 初始化ChromeDriver并开启CDP连接
ChromeDriver driver = new ChromeDriver();
DevTools devTools = driver.getDevTools();
devTools.createSession();

// 启用网络监听
devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));

// 监听请求发送事件,获取初始URL
devTools.addListener(Network.requestWillBeSent(), request -> {
    // 过滤出目标新页面的初始请求
    if (request.getRequest().getUrl().contains("你的目标特征")) {
        System.out.println("初始URL: " + request.getRequest().getUrl());
        // 可在此停止监听或执行后续操作
    }
});

// 执行点击按钮操作,触发新页面打开
driver.findElement(By.id("目标按钮ID")).click();

2. 禁用JavaScript阻止自动重定向

多数页面的快速重定向由JavaScript触发,禁用JS后重定向会失效,你可以直接获取初始URL:

ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-javascript");
ChromeDriver driver = new ChromeDriver(options);

// 登录后点击按钮
driver.findElement(By.id("目标按钮ID")).click();
// 切换到新窗口
Set<String> windowHandles = driver.getWindowHandles();
driver.switchTo().window(windowHandles.stream().skip(1).findFirst().get());
// 获取初始URL
String initialUrl = driver.getCurrentUrl();
System.out.println("初始URL: " + initialUrl);

// 测试完成后可恢复JS(若需后续操作)
options.addArguments("--enable-javascript");

注意:禁用JS可能影响页面其他功能,仅建议在单独测试初始URL的步骤中使用。

3. 修改本地hosts阻断重定向目标

把重定向后的目标域名指向无效IP(如127.0.0.1),使浏览器无法完成重定向,停留在初始页面:

  1. 找到本地hosts文件(Windows: C:\Windows\System32\drivers\etc\hosts;Linux/Mac: /etc/hosts)
  2. 添加一行:127.0.0.1 重定向目标域名.com
  3. 刷新DNS缓存(Windows: ipconfig /flushdns;Linux/Mac: sudo dscacheutil -flushcache)
  4. 执行Selenium脚本,点击按钮后切换到新窗口,直接获取初始URL

测试完成后记得删除hosts中的新增条目,避免影响其他访问。

4. 使用代理工具拦截请求

用mitmproxy这类代理工具,设置为浏览器的代理,拦截所有HTTP请求,从中筛选出初始页面的URL。该方法适合复杂场景,但需额外配置代理环境。

内容的提问来源于stack exchange,提问作者TesterABC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 22:38:14