System proxy server bypass (aka "excludes") does not work


My Katalon test scripts run on a VM using a proxy.
- For KS, it is declared in Window \ Katalon Studio Preferences \ Katalon \ Proxy \ System:
Proxy option: Manual proxy configuration
Proxy server type: HTTP
Address: xxx, Port: yyy
- For KRE, my command-lines include: -proxy.system.option=MANUAL_CONFIG -proxy.system.server.type=HTTP -proxy.system.server.address=xxx -proxy.system.server.port=yyy

Now, when calling some very special REST API, I have to bypass this proxy.

I have tried two options (see below). None work. What am I doing wrong?

Option (a): Declare an exception
- In KS: Fill the text box for “Excludes” with “"
- In KRE: Add the -proxy.system.excludes="” option
It does not work. The “excludes” seems ignored. Does pattern matching work? I have tried with the full server name, it does not work.

Option (b): In the keyword which does the call to the REST API, override the default proxy stuff.
The code is:

  // Get current proxy information
  KeywordUtil.logInfo("Proxy Info: "+ ro.getProxy())
  // Override proxy
  ProxyInformation specialProxy = new ProxyInformation();
  KeywordUtil.logInfo("Proxy Info FOR THIS REQUEST: "+ ro.getProxy())
  //Send the request
  ResponseObject respObj = WS.sendRequest(ro)

The log suggests the switch worked:

20:30:39.657 INFO Proxy Info: ProxyInformation { proxyOption=MANUAL_CONFIG, proxyServerType=HTTP, username=, password=, proxyServerAddress=xxx, proxyServerPort=yyy, executionList="*", isApplyToDesiredCapabilities=true }
20:30:39.683 INFO Proxy Info FOR THIS REQUEST: ProxyInformation { proxyOption=NO_PROXY, proxyServerType=null, username=null, password=
, proxyServerAddress=null, proxyServerPort=0, executionList=“null”, isApplyToDesiredCapabilities=false }

… but the HAR showed that the request went through the proxy (and failed). In other words, the proxy info which I had setup was just ignored.

Thanks in advance for any help.

– Michel

Reading more thoroughly the page

a) I have not been able to understand how to make the command-line option “-proxy.system.excludes” work. Even with the full path, even with the port explicitly added, it never works. Very frustrating.

b) I have not been able to set a “noProxy” proxy object directly inside the Response Object.
KeywordUtil.logInfo("Proxy Info - ReqObject - Init: "+ ro.getProxy())
Whatever I set in this object, it seems ignored.

c) I have been able to switch the proxy object embedded in the Run Preferences.
It’s the least elegant option, but, well… it works.

import com.kms.katalon.core.configuration.RunConfiguration 

public ResponseObject bypassProxyAndSendRequest(RequestObject ro) {

	// Display proxy information - Initial
	KeywordUtil.logInfo("Proxy Info - RunConfig - Init: "+ RunConfiguration.getProxyInformation())
	// Save the initial proxy object
	ProxyInformation myInitProxy = RunConfiguration.getProxyInformation()
	// Build the NO_PROXY proxy object
	ProxyInformation myNoProxy = new ProxyInformation();
	// Switch to the NO_PROXY proxy object
	Map<String, Object> generalProperties = RunConfiguration.getExecutionGeneralProperties();
	generalProperties.put(RunConfiguration.PROXY_PROPERTY, new Gson().toJson(myNoProxy));
	// Display proxy information - After the switch
	KeywordUtil.logInfo("Proxy Info - RunConfig - After Switch: "+ RunConfiguration.getProxyInformation())
	// Send the request
	ResponseObject respObj = WS.sendRequest(ro)

	// Rollback to the initial proxy object
	generalProperties.put(RunConfiguration.PROXY_PROPERTY, new Gson().toJson(myInitProxy));
	// Display proxy information - After the rollback
	KeywordUtil.logInfo("Proxy Info - RunConfig - After Rollback: "+ RunConfiguration.getProxyInformation())
	return respObj