Advanced Scripting Techniques

Advanced Scripting Techniques

Complex automation often requires scripts to interact with multiple ZAP components. Access scanners, spiders, and other extensions through ZAP's comprehensive API:

// Advanced script coordinating multiple ZAP components
function automatedSecurityTest(targetUrl) {
    var URI = Java.type("java.net.URI");
    var HttpSender = Java.type("org.parosproxy.paros.network.HttpSender");
    
    // Get references to extensions
    var extSpider = control.getExtensionLoader().getExtension("ExtensionSpider");
    var extAscan = control.getExtensionLoader().getExtension("ExtensionActiveScan");
    
    // Configure context
    var context = model.getSession().newContext("AutoTest");
    context.addIncludeInContextRegex(targetUrl + ".*");
    
    // Start spider
    print("Starting spider scan...");
    var spiderId = extSpider.startScan(targetUrl, null, null, null, context.getId());
    
    // Wait for spider to complete
    while (extSpider.getSpiderProgress(spiderId) < 100) {
        Java.type("java.lang.Thread").sleep(1000);
        print("Spider progress: " + extSpider.getSpiderProgress(spiderId) + "%");
    }
    
    // Start active scan
    print("Starting active scan...");
    var ascanId = extAscan.startScan(targetUrl, null, null, null, null, context.getId());
    
    // Monitor and report progress
    while (extAscan.getScanProgress(ascanId) < 100) {
        Java.type("java.lang.Thread").sleep(5000);
        print("Active scan progress: " + extAscan.getScanProgress(ascanId) + "%");
    }
    
    print("Security test completed!");
}

Script persistence and sharing enhance team collaboration. Save proven scripts to version control, document expected inputs and outputs, and create script libraries for common tasks. ZAP's script templates provide starting points for new scripts, accelerating development. Consider creating organization-specific templates encoding your testing standards and patterns.