为了账号安全,请及时绑定邮箱和手机立即绑定

ChromeDriver 未通过 Java ZAP API 代理本地流量

ChromeDriver 未通过 Java ZAP API 代理本地流量

www说 2023-03-17 15:47:35
我对 ZAP 很陌生,我必须使用 ZAP java API 对 Web 应用程序执行安全测试,使用 Selenium 在浏览器上导航,为 ZAP 创建流量。我正在使用 Eclipse IDE for Enterprise Java Developers 版本 2019-03 (4.11.0) 和 Java jdk-1.8.0_212 和 Maven 3.5.3,以及 3 个导入的库:harlib 版本 1.1.1 (edu.umass.cs.benchlab harlib )、zap api 版本 1.7.0 (org.owasp zaproxy-api) 和代理版本 2.4.2 快照 (net.continuumsecurity zap-java-api)我遵循了本教程: https: //dzone.com/articles/automate-zap-security-tests-with-selenium-webdrive-1,它有效。回顾一下,它使用了 3 个类:一个用于实例化 Web 浏览器 (BrowserDriverFactory.java),一个用于实际存储所有导航功能和参数 (WebSiteNavigation.java),一个用于创建 ZAP 代理、配置它并执行安全测试作为 @Test 函数 (ZapSecurityTest.java)。我在代理我的本地应用程序时遇到了一些问题:似乎我的本地应用程序不使用 ZAP 代理,即使我的 chromedriver 很清楚代理(我在 ZAP UI 中看到非本地流量)。奇怪的是,我什至将我的本地 URL 显式添加到上下文并将其设置为在范围内:clientapi.context.includeInContext(contextName,  java.util.regex.Pattern.quote(WebSiteNavigation.BASE_URL));clientapi.context.setContextInScope(contextName, "true");这样做并在我的本地应用程序上导航后,我在 ZAP UI 中看到了相关的非本地流量,但没有看到本地流量。当我检查 clientapi.context.urls(contextName) 返回的内容时,它是空的。我用以下方法创建我的代理:private static Proxy createZapProxyConfiguration() {       Proxy proxy = new Proxy();       proxy.setHttpProxy(ZAP_PROXYHOST + ":" + ZAP_PROXYPORT);       proxy.setSslProxy(ZAP_PROXYHOST + ":" + ZAP_PROXYPORT);       return proxy;}调用者:@Beforepublic void setUp() {    // Configure ZAP Scanner    zapScanner = new ZAProxyScanner(ZAP_PROXYHOST, ZAP_PROXYPORT,       ZAP_APIKEY);    clientapi = new ClientApi(ZAP_PROXYHOST, ZAP_PROXYPORT);       // Start new session    zapScanner.clear();    log.info("Started a new session: Scanner");    // Create ZAP API client    zapSpider = (Spider) zapScanner;    // Create driver object    driver = BrowserDriverFactory.createChromeDriver      (createZapProxyConfiguration(), BROWSER_DRIVER_PATH);    siteNavigation = new WebSiteNavigation(driver);}奇怪的是,几天前,当我第一次设置它时,它就像一个魅力......然后我尝试自动化身份验证过程,但从那以后,它不起作用......我在这里错过了什么吗?我至少在寻找正确的地方?
查看完整描述

1 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

默认情况下,Chrome 不会代理默认发送到 localhost 的请求,因此如果是这种情况,您需要向 chrome 驱动程序传递一个额外的标志。这是使用 JSON 配置它的方式:


capabilities: {

    browserName: 'chrome',

    proxy: proxy

    chromeOptions: {

      args: ['--proxy-bypass-list=<-loopback>']

    }

  },

使用 Java API 也可以做到这一点。


查看完整回答
反对 回复 2023-03-17
  • 1 回答
  • 0 关注
  • 213 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号