Proxy Port Method

To simplify implementation for users with existing proxy pools, we offer a proxy front-end to the API. The proxy will take your requests and pass them through to the API which will take care of proxy rotation, captchas, and retries.

The proxy mode is a light front-end for the API and has all the same functionality and performance as sending requests to the API endpoint.

The username for the proxy is scraperapi and the password is your API key.

try {
    String apiKey = "APIKEY";
    String proxy = "proxy-server.scraperapi.com";
    URL server = new URL("https://httpbin.org/ip");
    String proxyUsername="scraperapi";
    Authenticator.setDefault(new Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
          return new PasswordAuthentication(proxyUsername, apiKey.toCharArray());
        }
      });
    Properties systemProperties = System.getProperties();
    systemProperties.setProperty("http.proxyHost", proxy);
    systemProperties.setProperty("http.proxyPort", "8001");
    HttpURLConnection httpURLConnection = (HttpURLConnection) server.openConnection();
    httpURLConnection.connect();
    String readLine = null;
    int responseCode = httpURLConnection.getResponseCode();
    if (responseCode == HttpURLConnection.HTTP_OK) {
        BufferedReader in = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
        StringBuffer response = new StringBuffer();
        while ((readLine = in.readLine()) != null) {
            response.append(readLine);
        }
        in.close();
        System.out.println(response.toString());
    } else {
        throw new Exception("Error in API Call");
    }
} catch (Exception ex) {
    ex.printStackTrace();
}

Note: So that we can properly direct your requests through the API, your code must be configured to not verify SSL certificates.

To enable extra functionality whilst using the API in proxy mode, you can pass parameters to the API by adding them to username, separated by periods.

For example, if you want to enable Javascript rendering with a request, the username would be scraperapi.render=true

try {
    String apiKey = "APIKEY";
    String proxy = "proxy-server.scraperapi.com";
    URL server = new URL("https://httpbin.org/ip");
    String proxyUsername="scraperapi.render=true";
    Authenticator.setDefault(new Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
          return new PasswordAuthentication(proxyUsername, apiKey.toCharArray());
        }
      });
    Properties systemProperties = System.getProperties();
    systemProperties.setProperty("http.proxyHost", proxy);
    systemProperties.setProperty("http.proxyPort", "8001");
    HttpURLConnection httpURLConnection = (HttpURLConnection) server.openConnection();
    httpURLConnection.connect();
    String readLine = null;
    int responseCode = httpURLConnection.getResponseCode();
    if (responseCode == HttpURLConnection.HTTP_OK) {
        BufferedReader in = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
        StringBuffer response = new StringBuffer();
        while ((readLine = in.readLine()) != null) {
            response.append(readLine);
        }
        in.close();
        System.out.println(response.toString());
    } else {
        throw new Exception("Error in API Call");
    }
} catch (Exception ex) {
    ex.printStackTrace();
}

Multiple parameters can be included by separating them with periods; for example:

try {
    String apiKey = "APIKEY";
    String proxy = "proxy-server.scraperapi.com";
    URL server = new URL("https://httpbin.org/ip");
    String proxyUsername="scraperapi.render=true.country_code=us";
    Authenticator.setDefault(new Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
          return new PasswordAuthentication(proxyUsername, apiKey.toCharArray());
        }
      });
    Properties systemProperties = System.getProperties();
    systemProperties.setProperty("http.proxyHost", proxy);
    systemProperties.setProperty("http.proxyPort", "8001");
    HttpURLConnection httpURLConnection = (HttpURLConnection) server.openConnection();
    httpURLConnection.connect();
    String readLine = null;
    int responseCode = httpURLConnection.getResponseCode();
    if (responseCode == HttpURLConnection.HTTP_OK) {
        BufferedReader in = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
        StringBuffer response = new StringBuffer();
        while ((readLine = in.readLine()) != null) {
            response.append(readLine);
        }
        in.close();
        System.out.println(response.toString());
    } else {
        throw new Exception("Error in API Call");
    }
} catch (Exception ex) {
    ex.printStackTrace();
}

Last updated