├── .gitignore ├── README.md ├── lib └── zap-api-1.2.0.jar ├── pom.xml ├── proxy.iml └── src ├── main ├── java │ └── net │ │ └── continuumsecurity │ │ └── proxy │ │ ├── Authentication.java │ │ ├── ContextModifier.java │ │ ├── HarUtils.java │ │ ├── LoggingProxy.java │ │ ├── ProxyException.java │ │ ├── ScanningProxy.java │ │ ├── Spider.java │ │ ├── ZAProxyScanner.java │ │ └── model │ │ ├── AuthenticationMethod.java │ │ ├── Context.java │ │ ├── ScanInfo.java │ │ ├── ScanResponse.java │ │ ├── ScannerInfo.java │ │ ├── Script.java │ │ └── User.java └── resources │ ├── extendedapi-alpha-1.zap │ └── extendedapi-alpha-2.zap └── test ├── java └── net │ └── continuumsecurity │ └── proxy │ ├── SpiderTest.java │ ├── TestEnvironment.java │ ├── TestHarUtils.java │ └── ZAProxyScannerTest.java └── resources └── ropeytasks-0.1.war /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | .idea/ 3 | *.iml 4 | target/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | zap-java-api 2 | ============ 3 | 4 | Java client library for OWASP ZAP. In addition to scanning and spidering, it also provides programmatic access to the proxy. 5 | 6 | The core functionality is in [ZAProxyScanner.java](https://github.com/continuumsecurity/zap-java-api/blob/master/src/main/java/net/continuumsecurity/proxy/ZAProxyScanner.java) 7 | 8 | To build 9 | ======== 10 | 11 | mvn package -DskipTests -------------------------------------------------------------------------------- /lib/zap-api-1.2.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iriusrisk/zap-java-api/4f9fe090a073345e9ae33b40ff0e378662a7c2a8/lib/zap-api-1.2.0.jar -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | net.continuumsecurity 8 | zap-java-api 9 | 2.6.0 10 | 11 | 12 | 13 | 14 | org.apache.maven.plugins 15 | maven-compiler-plugin 16 | 3.1 17 | 18 | 1.6 19 | 1.6 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | org.hamcrest 28 | hamcrest-all 29 | 1.3 30 | 31 | 32 | org.mortbay.jetty 33 | jetty 34 | 6.1.26 35 | test 36 | 37 | 38 | org.codehaus.jackson 39 | jackson-mapper-asl 40 | 1.9.12 41 | 42 | 43 | junit 44 | junit 45 | 4.11 46 | test 47 | 48 | 49 | org.seleniumhq.selenium 50 | selenium-java 51 | 2.32.0 52 | 53 | 54 | org.zaproxy 55 | zap-clientapi 56 | 1.2.0 57 | 58 | 59 | edu.umass.cs.benchlab 60 | harlib 61 | 1.1.2 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /proxy.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /src/main/java/net/continuumsecurity/proxy/Authentication.java: -------------------------------------------------------------------------------- 1 | package net.continuumsecurity.proxy; 2 | 3 | import net.continuumsecurity.proxy.model.User; 4 | 5 | import java.io.IOException; 6 | import java.io.UnsupportedEncodingException; 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | public interface Authentication { 11 | /** 12 | * Returns the supported authentication methods by ZAP. 13 | * @return list of supported authentication methods. 14 | * @throws ProxyException 15 | */ 16 | List getSupportedAuthenticationMethods() throws ProxyException; 17 | 18 | /** 19 | * Returns logged in indicator pattern for the given context. 20 | * @param contextId Id of the context. 21 | * @return Logged in indicator for the given context. 22 | * @throws ProxyException 23 | */ 24 | String getLoggedInIndicator(String contextId) throws ProxyException; 25 | 26 | /** 27 | * Returns logged out indicator pattern for the given context. 28 | * @param contextId Id of the context. 29 | * @return Logged out indicator for the given context. 30 | * @throws ProxyException 31 | */ 32 | String getLoggedOutIndicator(String contextId) throws ProxyException; 33 | 34 | /** 35 | * Sets the logged in indicator to a given context. 36 | * @param contextId Id of a context. 37 | * @param loggedInIndicatorRegex Regex pattern for logged in indicator. 38 | * @throws ProxyException 39 | */ 40 | void setLoggedInIndicator(String contextId, String loggedInIndicatorRegex) throws ProxyException; 41 | 42 | /** 43 | * Sets the logged out indicator to a given context. 44 | * @param contextId Id of a context. 45 | * @param loggedOutIndicatorRegex Regex pattern for logged out indicator. 46 | * @throws ProxyException 47 | */ 48 | void setLoggedOutIndicator(String contextId, String loggedOutIndicatorRegex) throws ProxyException; 49 | 50 | /** 51 | * Returns authentication method for a given context. 52 | * @param contextId Id of a context. 53 | * @return Authentication method details for the given context id. 54 | * @throws ProxyException 55 | */ 56 | Map getAuthenticationMethodInfo(String contextId) throws ProxyException; 57 | 58 | /** 59 | * Returns the list of authentication config parameters. 60 | * Each config parameter is a map with keys "name" and "mandatory", holding the values name of the configuration parameter and whether it is mandatory/optional respectively. 61 | * @param authMethod Valid authentication method name. 62 | * @return List of configuration parameters for the given authentication method name. 63 | * @throws ProxyException 64 | */ 65 | List> getAuthMethodConfigParameters(String authMethod) throws ProxyException; 66 | 67 | /** 68 | * Sets the authentication method for a given context with given configuration parameters. 69 | * @param contextId Id of a context. 70 | * @param authMethodName Valid authentication method name. 71 | * @param authMethodConfigParams Authentication method configuration parameters such as loginUrl, loginRequestData formBasedAuthentication method, and hostName, port, realm for httpBasedAuthentication method. 72 | * @throws ProxyException 73 | */ 74 | void setAuthenticationMethod(String contextId, String authMethodName, String authMethodConfigParams) throws ProxyException; 75 | 76 | /** 77 | * Sets the formBasedAuthentication to given context id with the loginUrl and loginRequestData. 78 | * Example loginRequestData: "username={%username%}&password={%password%}" 79 | * @param contextId Id of the context. 80 | * @param loginUrl Login URL. 81 | * @param loginRequestData Login request data with form field names for username and password. 82 | * @throws ProxyException 83 | * @throws UnsupportedEncodingException 84 | */ 85 | void setFormBasedAuthentication(String contextId, String loginUrl, String loginRequestData) throws ProxyException, UnsupportedEncodingException; 86 | 87 | /** 88 | * Sets the HTTP/NTLM authentication to given context id with hostname, realm and port. 89 | * @param contextId Id of the context. 90 | * @param hostname Hostname. 91 | * @param realm Realm. 92 | * @param portNumber Port number. 93 | * @throws ProxyException 94 | */ 95 | void setHttpAuthentication(String contextId, String hostname, String realm, String portNumber) throws ProxyException, UnsupportedEncodingException; 96 | 97 | /** 98 | * Sets the HTTP/NTLM authentication to given context id with hostname, realm. 99 | * @param contextId Id of the context. 100 | * @param hostname Hostname. 101 | * @param realm Realm. 102 | * @throws ProxyException 103 | */ 104 | void setHttpAuthentication(String contextId, String hostname, String realm) throws ProxyException, UnsupportedEncodingException; 105 | 106 | /** 107 | * Sets the manual authentication to the given context id. 108 | * @param contextId Id of the context. 109 | * @throws ProxyException 110 | */ 111 | void setManualAuthentication(String contextId) throws ProxyException; 112 | 113 | /** 114 | * Sets the script based authentication to the given context id with the script name and config parameters. 115 | * @param contextId Id of the context. 116 | * @param scriptName Name of the script. 117 | * @param scriptConfigParams Script config parameters. 118 | * @throws ProxyException 119 | */ 120 | void setScriptBasedAuthentication(String contextId, String scriptName, String scriptConfigParams) throws ProxyException, UnsupportedEncodingException; 121 | 122 | /** 123 | * Returns list of {@link User}s for a given context. 124 | * @param contextId Id of the context. 125 | * @return List of {@link User}s 126 | * @throws ProxyException 127 | * @throws IOException 128 | */ 129 | List getUsersList(String contextId) throws ProxyException, IOException; 130 | 131 | /** 132 | * Returns the {@link User} info for a given context id and user id. 133 | * @param contextId Id of a context. 134 | * @param userId Id of a user. 135 | * @return {@link User} info. 136 | * @throws ProxyException 137 | * @throws IOException 138 | */ 139 | User getUserById(String contextId, String userId) throws ProxyException, IOException; 140 | 141 | /** 142 | * Returns list of config parameters of authentication credentials for a given context id. 143 | * Each item in the list is a map with keys "name" and "mandatory". 144 | * @param contextId Id of a context. 145 | * @return List of authentication credentials configuration parameters. 146 | * @throws ProxyException 147 | */ 148 | List> getAuthenticationCredentialsConfigParams(String contextId) throws ProxyException; 149 | 150 | /** 151 | * Returns the authentication credentials as a map with key value pairs for a given context id and user id. 152 | * @param contextId Id of a context. 153 | * @param userId Id of a user. 154 | * @return Authentication credentials. 155 | * @throws ProxyException 156 | */ 157 | Map getAuthenticationCredentials(String contextId, String userId) throws ProxyException; 158 | 159 | /** 160 | * Creates a new {@link User} for a given context and returns the user id. 161 | * @param contextId Id of a context. 162 | * @param name Name of the user. 163 | * @return User id. 164 | * @throws ProxyException 165 | */ 166 | String newUser(String contextId, String name) throws ProxyException; 167 | 168 | /** 169 | * Removes a {@link User} using the given context id and user id. 170 | * @param contextId Id of a {@link net.continuumsecurity.proxy.model.Context} 171 | * @param userId Id of a {@link User} 172 | * @throws ProxyException 173 | */ 174 | void removeUser(String contextId, String userId) throws ProxyException; 175 | 176 | /** 177 | * Sets the authCredentialsConfigParams to the given context and user. 178 | * Bu default, authCredentialsConfigParams uses key value separator "=" and key value pair separator "&". 179 | * Make sure that values provided for authCredentialsConfigParams are URL encoded using "UTF-8". 180 | * @param contextId Id of the context. 181 | * @param userId Id of the user. 182 | * @param authCredentialsConfigParams Authentication credentials config parameters. 183 | * @throws ProxyException 184 | */ 185 | void setAuthenticationCredentials(String contextId, String userId, String authCredentialsConfigParams) throws ProxyException; 186 | 187 | /** 188 | * Enables a {@link User} for a given {@link net.continuumsecurity.proxy.model.Context} id and user id. 189 | * @param contextId Id of a {@link net.continuumsecurity.proxy.model.Context} 190 | * @param userId Id of a {@link User} 191 | * @param enabled Boolean value to enable/disable the user. 192 | * @throws ProxyException 193 | */ 194 | void setUserEnabled(String contextId, String userId, boolean enabled) throws ProxyException; 195 | 196 | /** 197 | * Sets a name to the user for the given context id and user id. 198 | * @param contextId Id of a {@link net.continuumsecurity.proxy.model.Context} 199 | * @param userId Id of a {@link User} 200 | * @param name User name. 201 | * @throws ProxyException 202 | */ 203 | void setUserName(String contextId, String userId, String name) throws ProxyException; 204 | 205 | /** 206 | * Returns the forced user id for a given context. 207 | * @param contextId Id of a context. 208 | * @return Id of a forced {@link User} 209 | * @throws ProxyException 210 | */ 211 | String getForcedUserId(String contextId) throws ProxyException; 212 | 213 | /** 214 | * Returns true if forced user mode is enabled. Otherwise returns false. 215 | * @return true if forced user mode is enabled. 216 | * @throws ProxyException 217 | */ 218 | boolean isForcedUserModeEnabled() throws ProxyException; 219 | 220 | /** 221 | * Enables/disables the forced user mode. 222 | * @param forcedUserModeEnabled flag to enable/disable forced user mode. 223 | * @throws ProxyException 224 | */ 225 | void setForcedUserModeEnabled(boolean forcedUserModeEnabled) throws ProxyException; 226 | 227 | /** 228 | * Sets a {@link User} id as forced user for the given {@link net.continuumsecurity.proxy.model.Context} 229 | * @param contextId Id of a context. 230 | * @param userId Id of a user. 231 | * @throws ProxyException 232 | */ 233 | void setForcedUser(String contextId, String userId) throws ProxyException; 234 | 235 | /** 236 | * Returns list of supported session management methods. 237 | * @return List of supported session management methods. 238 | * @throws ProxyException 239 | */ 240 | List getSupportedSessionManagementMethods() throws ProxyException; 241 | 242 | /** 243 | * Returns session management method selected for the given context. 244 | * @param contextId Id of a context. 245 | * @return Session management method for a given context. 246 | * @throws ProxyException 247 | */ 248 | String getSessionManagementMethod(String contextId) throws ProxyException; 249 | 250 | /** 251 | * Sets the given session management method and config params for a given context. 252 | * @param contextId Id of a context. 253 | * @param sessionManagementMethodName Session management method name. 254 | * @param methodConfigParams Session management method config parameters. 255 | * @throws ProxyException 256 | */ 257 | void setSessionManagementMethod(String contextId, String sessionManagementMethodName, String methodConfigParams) throws ProxyException; 258 | } 259 | -------------------------------------------------------------------------------- /src/main/java/net/continuumsecurity/proxy/ContextModifier.java: -------------------------------------------------------------------------------- 1 | package net.continuumsecurity.proxy; 2 | 3 | public interface ContextModifier { 4 | void setIncludeInContext(String contextName, String regex); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/net/continuumsecurity/proxy/HarUtils.java: -------------------------------------------------------------------------------- 1 | package net.continuumsecurity.proxy; 2 | 3 | import edu.umass.cs.benchlab.har.HarHeader; 4 | import edu.umass.cs.benchlab.har.HarRequest; 5 | 6 | public class HarUtils { 7 | public static HarRequest changeCookieValue(HarRequest request,String name,String value) { 8 | String patternMulti = "([; ]" + name + ")=[^;]*(.*)"; 9 | String patternStart = "^(" + name + ")=[^;]*(.*)"; 10 | 11 | for (HarHeader header : request.getHeaders().getHeaders()) { 12 | if (header.getName().equalsIgnoreCase("COOKIE")) { 13 | if (header.getValue() != null) { 14 | String updated = header.getValue().replaceAll(patternMulti, "$1=" + value + "$2"); 15 | if (updated.equals(header.getValue())) { 16 | updated = header.getValue().replaceAll(patternStart, "$1=" + value + "$2"); 17 | } 18 | header.setValue(updated); 19 | } 20 | } 21 | } 22 | return request; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/net/continuumsecurity/proxy/LoggingProxy.java: -------------------------------------------------------------------------------- 1 | package net.continuumsecurity.proxy; 2 | 3 | 4 | import edu.umass.cs.benchlab.har.HarEntry; 5 | import edu.umass.cs.benchlab.har.HarRequest; 6 | import org.openqa.selenium.Proxy; 7 | 8 | import java.net.UnknownHostException; 9 | import java.util.List; 10 | 11 | 12 | public interface LoggingProxy { 13 | /* 14 | Call newSession(string, string) on the ZAP api 15 | */ 16 | void clear() throws ProxyException; 17 | 18 | /* 19 | Get the history of all requests and responses, populated into HarEntrys. A HarEntry consists of a HarRequest and HarResponse, all of the fields 20 | of these classes, and the classes they contain should be correctly populated. 21 | */ 22 | List getHistory() throws ProxyException; 23 | 24 | /* 25 | As above, but only get a range of records 26 | */ 27 | List getHistory(int start, int count) throws ProxyException; 28 | 29 | /* 30 | How many records are available to fetch? 31 | */ 32 | int getHistoryCount() throws ProxyException; 33 | 34 | 35 | /* 36 | Search through all the HarRequests for the given regex. The search should be performed on all request headers as well as post body. 37 | When a match is found, return the entire HarEntry (request and response). 38 | */ 39 | List findInRequestHistory(String regex) throws ProxyException; 40 | 41 | /* 42 | Search through all HarResponses for the given regex, this must include response headers and content. 43 | */ 44 | List findInResponseHistory(String regex) throws ProxyException; 45 | 46 | List findInResponseHistory(String regex,List entries); 47 | /* 48 | Make a request using the HarRequest data and follow redirects if specified. Return all the resulting request/responses. 49 | */ 50 | List makeRequest(HarRequest request, boolean followRedirect) throws ProxyException; 51 | 52 | /* 53 | Return the details of the proxy in Selenium format: org.openqa.selenium.Proxy 54 | */ 55 | Proxy getSeleniumProxy() throws UnknownHostException; 56 | 57 | public void setAttackMode() throws ProxyException; 58 | 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/net/continuumsecurity/proxy/ProxyException.java: -------------------------------------------------------------------------------- 1 | package net.continuumsecurity.proxy; 2 | 3 | public class ProxyException extends RuntimeException { 4 | 5 | private static final long serialVersionUID = -8089119902100465025L; 6 | 7 | public ProxyException() { 8 | super(); 9 | } 10 | 11 | public ProxyException(String message) { 12 | super(message); 13 | } 14 | 15 | public ProxyException(String message, Throwable cause) { 16 | super(message, cause); 17 | } 18 | 19 | public ProxyException(Throwable cause) { 20 | super(cause); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/net/continuumsecurity/proxy/ScanningProxy.java: -------------------------------------------------------------------------------- 1 | package net.continuumsecurity.proxy; 2 | 3 | import net.continuumsecurity.proxy.model.Context; 4 | import net.continuumsecurity.proxy.model.Script; 5 | import org.zaproxy.clientapi.core.Alert; 6 | 7 | import java.io.IOException; 8 | import java.util.List; 9 | import java.util.regex.Pattern; 10 | 11 | public interface ScanningProxy extends LoggingProxy { 12 | 13 | /* 14 | Return all results as a list of org.zaproxy.clientapi.core.Alert 15 | */ 16 | List getAlerts() throws ProxyException; 17 | 18 | /* 19 | As above, but for a specific range of records 20 | */ 21 | List getAlerts(int start, int count) throws ProxyException; 22 | 23 | /* 24 | The number of available alerts 25 | */ 26 | int getAlertsCount() throws ProxyException; 27 | 28 | public void deleteAlerts() throws ProxyException; 29 | /* 30 | Perform an active scan of everything that was logged by the proxy 31 | */ 32 | public void scan(String url) throws ProxyException; 33 | 34 | /* 35 | Return the percentage completion of the current scan 36 | */ 37 | public int getScanProgress(int scanId) throws ProxyException; 38 | 39 | public int getLastScannerScanId() throws ProxyException; 40 | 41 | public byte[] getXmlReport() throws ProxyException; 42 | 43 | public byte[] getHtmlReport() throws ProxyException; 44 | 45 | void setScannerAttackStrength(String scannerId, String strength) throws ProxyException; 46 | 47 | void setScannerAlertThreshold(String scannerId, String threshold) throws ProxyException; 48 | 49 | public void setEnableScanners(String ids, boolean enabled) throws ProxyException; 50 | 51 | public void disableAllScanners() throws ProxyException; 52 | 53 | public void enableAllScanners() throws ProxyException; 54 | 55 | public void setEnablePassiveScan(boolean enabled) throws ProxyException; 56 | 57 | public void excludeFromScanner(String regex) throws ProxyException; 58 | 59 | /** 60 | * Shuts down ZAP. 61 | * @throws ProxyException 62 | */ 63 | public void shutdown() throws ProxyException; 64 | 65 | /** 66 | * Enables handling of anti CSRF tokens during active scanning. 67 | * @param enabled Boolean flag to enable / disable handling of anti CSRF tokens during active scan. 68 | * @throws ProxyException 69 | */ 70 | public void setOptionHandleAntiCSRFTokens(boolean enabled) throws ProxyException; 71 | 72 | /** 73 | * Creates a new context with given context name and sets it in scope if @param inScope is true. 74 | * 75 | * @param contextName Name of the context. 76 | * @param inScope true to set context in scope. 77 | * @throws ProxyException 78 | */ 79 | void createContext(String contextName, boolean inScope) throws ProxyException; 80 | 81 | /** 82 | * Adds include regex to the given context. 83 | * 84 | * @param contextName Name of the context. 85 | * @param regex Regex to include in context. 86 | * @throws ProxyException 87 | */ 88 | void includeRegexInContext(String contextName, Pattern regex) throws ProxyException; 89 | 90 | /** 91 | * Adds include parent url to the given content. 92 | * @param contextName Name of the context. 93 | * @param parentUrl Parent URL to include in context. 94 | * @throws ProxyException 95 | */ 96 | void includeUrlTreeInContext(String contextName, String parentUrl) throws ProxyException; 97 | 98 | /** 99 | * Add exclude regex to the given context. 100 | * @param contextName Name of the context. 101 | * @param regex Regex to exclude from context. 102 | * @throws ProxyException 103 | */ 104 | void excludeRegexFromContext(String contextName, Pattern regex) throws ProxyException; 105 | 106 | /** 107 | * Add exclude regex to the given context. 108 | * @param contextName Name of the context. 109 | * @param parentUrl Parent URL to exclude from context. 110 | * @throws ProxyException 111 | */ 112 | void excludeParentUrlFromContext(String contextName, String parentUrl) throws ProxyException; 113 | 114 | /** 115 | * Returns Context details for a given context name. 116 | * @param contextName Name of context. 117 | * @return Context details for the given context 118 | * @throws ProxyException 119 | */ 120 | Context getContextInfo(String contextName) throws ProxyException, IOException; 121 | 122 | /** 123 | * Returns list of context names. 124 | * @return List of context names. 125 | * @throws ProxyException 126 | */ 127 | List getContexts() throws ProxyException; 128 | 129 | /** 130 | * Sets the given context in or out of scope. 131 | * @param contextName Name of the context. 132 | * @param inScope true - Sets the context in scope. false - Sets the context out of scope. 133 | * @throws ProxyException 134 | */ 135 | void setContextInScope(String contextName, boolean inScope) throws ProxyException; 136 | 137 | /** 138 | * Returns the list of included regexs for the given context. 139 | * @param contextName Name of the context. 140 | * @return List of include regexs. 141 | * @throws ProxyException 142 | */ 143 | List getIncludedRegexs(String contextName) throws ProxyException; 144 | 145 | /** 146 | * Returns the list of excluded regexs for the given context. 147 | * @param contextName Name of the context. 148 | * @return List of exclude regexs. 149 | * @throws ProxyException 150 | */ 151 | List getExcludedRegexs(String contextName) throws ProxyException; 152 | 153 | /** 154 | * Returns the list of Anti CSRF token names. 155 | * @return List of Anti CSRF token names. 156 | * @throws ProxyException 157 | */ 158 | List getAntiCsrfTokenNames() throws ProxyException; 159 | 160 | /** 161 | * Adds an anti CSRF token with the given name, enabled by default. 162 | * @param tokenName Anti CSRF token name. 163 | * @throws ProxyException 164 | */ 165 | void addAntiCsrfToken(String tokenName) throws ProxyException; 166 | 167 | /** 168 | * Removes the anti CSRF token with the given name. 169 | * @param tokenName Anti CSRF token name. 170 | * @throws ProxyException 171 | */ 172 | void removeAntiCsrfToken(String tokenName) throws ProxyException; 173 | 174 | /** 175 | * Returns the list of scripting engines that ZAP supports. 176 | * @return List of script engines. 177 | * @throws ProxyException 178 | */ 179 | List listEngines() throws ProxyException; 180 | 181 | /** 182 | * Returns the list of scripts loaded into ZAP. 183 | * @return List of scripts. 184 | * @throws ProxyException 185 | */ 186 | List