gpt4 book ai didi

http - 如何从网页连接中获取所有 http 主机?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:27:47 27 4
gpt4 key购买 nike

我正在尝试构建一个自动化系统,它可以检索在单个网页连接中建立的所有连接,就像我在“源代码”下的浏览器调试器中看到的那样。基本上我想要一个脚本来打开浏览器、连接到网页、分析流量并返回我的浏览器在这个单一网页连接中连接到的所有域的列表。

我尝试结合使用 selenium 和 pyshark 并分析实时捕获,但我遇到了 2 个问题:

  1. “driver.get('url')”和“capture.sniff(timeout=t)”都是无法在后台执行的命令,这意味着我无法同时触发它们并嗅探 selenium webdriver 在做什么
  2. 当我通过分析一个 cap 文件手动检查时,我发现结果不可靠,这意味着,我可以在浏览器调试器中看到许多域没有捕获。

我相信有更好的方法来做到这一点。也许是浏览器的调试器 API?

帮助!

谢谢,

花园

最佳答案

您可以集成 BrowserMobProxySelenium 并获取这些域。

BrowserMobProxy 主页:https://bmp.lightbody.net/

自定义集成片段的一部分(Java):

import net.lightbody.bmp.core.har.Har;
import net.lightbody.bmp.core.har.HarEntry;
import net.lightbody.bmp.proxy.ProxyServer;
import org.openqa.selenium.Proxy;

...

public class NetworkTrafficInterceptor extends ProxyServer {

private static final int MAX = 8080;
private static final int MIN = 7070;
private final int portNumber;
private Har har;

public NetworkTrafficInterceptor() {
super();
portNumber = MIN + (int) (Math.random() * ((MAX - MIN) + 1));
}

public Proxy startSeleniumProxyServer() {
try {
setPort(portNumber);
start();
return seleniumProxy();
} catch (Exception ex) {
throw new WebDriverException(ex);
}
}

public void startIntercepting(String networkTrafficDumpName) {
this.har = newHar(networkTrafficDumpName);
}

public boolean searchRequestUrlInHar(String needle) {
har = getHar();
for (HarEntry entry : har.getLog().getEntries()) {
if (entry.getRequest().getUrl().contains(needle)) {
return true;
}
}
return false;
}

public int getResponseHttpStatusCode(String requestedUrl) {
for (HarEntry entry : getHar().getLog().getEntries()) {
if (entry.getRequest().getUrl().contains(requestedUrl)) {
return entry.getResponse().getStatus();
}
}
throw new WebDriverException(requestedUrl + " request is not sent");
}

...
}

我相信 entry.getRequest().getUrl() 方法应该可以帮助您收集这些域。

关于http - 如何从网页连接中获取所有 http 主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34336328/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com