2017-08-10 78 views
0

集成的Python API腳本我有使用Python API如下觸發ZAP創建ZAP HTML報告(OWASP): -如何使用與詹金斯

腳本來源: -

https://github.com/zaproxy/zaproxy/wiki/ApiPython

我希望通過命令行生成HTML報告。

我正在嘗試與Jenkins進行整合。 我在Jenkins中發現了Owasp的一些插件,但似乎沒有按預期工作。

任何想法,鏈接,教程將真的幫助我。

+0

的http://本地主機:8080 /其它/ core/other/htmlreport /?apikey = mykey&formMethod = GET將顯示報告。但如何保存併發送與詹金斯指: - https://github.com/zaproxy/zaproxy/issues/2920 –

回答

0

在此URL/API(http://ZAP-IP:PORT/UI/core/other/htmlreport/)用戶可以獲取報告。

我沒有找到任何zap支持插件,所以我寫了selenium webdriver java腳本來完成我的任務。該代碼是: -

@Test 
    public void Report() { 
      System.setProperty("webdriver.chrome.driver",System.getProperty("user.dir")+"\\src\\lib\\chromedriver.exe"); 
      ChromeOptions chromeOptions = new ChromeOptions(); 
      chromeOptions.addArguments("--start-maximized"); 
      WebDriver driver = new ChromeDriver(chromeOptions); 
      driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
      driver.get("http://localhost:8080/UI/core/other/htmlreport"); 
      driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS); 
      driver.findElement(By.id("apikey")).sendKeys("ChangeMe"); 
      driver.findElement(By.id("button")).click(); 

      SimpleDateFormat dateFormatForFoldername = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); 
      Date currentDate = new Date(); 
      String folderDateFormat = dateFormatForFoldername.format(currentDate); 
     try { 
      URL oracle = new URL(driver.getCurrentUrl()); 
      BufferedReader in = new BufferedReader(
      new InputStreamReader(oracle.openStream())); 
      BufferedWriter writer = new BufferedWriter(new FileWriter("Reports"+File.separator+"OwaspReport-"+folderDateFormat+".html")); 

      String inputLine; 
      while ((inputLine = in.readLine()) != null){ 
       try{ 
        writer.write(inputLine); 
       } 
       catch(IOException e){ 
        e.printStackTrace(); 
        return; 
       } 
      } 
      in.close(); 
      writer.close(); 
      driver.quit(); 
     } 
     catch(Exception ex) { 
      System.out.println(ex.getMessage()); 
      ex.printStackTrace(); 
     } 
    } 

注: - 更改URL中的端口,按您的ZAP端口和更換apiKey

希望它會幫助你:)

0

我發現了Python API會只連接到本地zaproxy服務器,所以jenkins slave和zaproxy服務器應該在同一臺機器(pod)中運行。

我使用jenkins管道和publishHTML插件來將報告集成到jenkins結果中。

  1. 由python腳本

    fHTML=open('/zap/report/zapreport.html', 'w') 
    fHTML.write(zap.core.htmlreport()) 
    fHTML.close() 
    
  2. 產生詹金斯子機側的報告文件發佈報告,詹金斯導致

     sh "cp /zap/report/* ./report" 
         publishHTML (target: [ 
         allowMissing: false, 
         alwaysLinkToLastBuild: false, 
         keepAll: true, 
         reportDir: 'report', 
         reportFiles: 'zapreport.html', 
         reportName: "Zaproxy Report" 
         ])