Integration

Shifter verwenden mit Java

Binden Sie Shifters Residential- und ISP-Proxys in wenigen Minuten in Java-Anwendungen ein. Funktioniert mit dem integrierten HttpClient (Java 11+), OkHttp, Apache HttpClient, Selenium und Jsoup – kein SDK erforderlich.

Schnellstart

Installieren

// Maven
// <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.12.0</version></dependency>

Grundlegende Nutzung

import java.net.*;
import java.net.http.*;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Quickstart {
  public static void main(String[] args) throws Exception {
    Authenticator auth = new Authenticator() {
      @Override
      protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(
          "customer-USERNAME-country-us-sid-123ABC",
          "PASSWORD".toCharArray());
      }
    };

    HttpClient client = HttpClient.newBuilder()
      .proxy(ProxySelector.of(new InetSocketAddress("p.shifter.io", 443)))
      .authenticator(auth)
      .build();

    HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("https://ipinfo.io/json"))
      .GET()
      .build();

    HttpResponse<String> response =
      client.send(request, HttpResponse.BodyHandlers.ofString());

    System.out.println(response.body());
  }
}

Funktionen

Drop-in-Unterstützung für HttpClient (Java 11+), OkHttp, Apache HttpClient, RestTemplate und WebClient
Standardmäßig Rotation pro Anfrage, mit `sid` für Sticky Sessions und `ttl-N` für zeitgesteuerte Pins von N Sekunden
Headless-Browser-Unterstützung über Selenium WebDriver und Playwright für Java
HTTP, HTTPS und SOCKS5 Protokolle am selben Gateway-Endpunkt
Geo-Targeting in 195+ Ländern über Username-Parameter — keine zusätzliche Abhängigkeit erforderlich
Kompatibel mit Java 8, 11, 17 und 21 - funktioniert mit Maven, Gradle und jedem JVM-Ökosystem (Kotlin, Scala, Groovy)

Beispiele

Integrierter HttpClient (Java 11+)

Die Standardbibliothek seit Java 11 – keine Drittanbieter-Abhängigkeiten. Konfigurieren Sie den Proxy über ProxySelector und die Anmeldedaten über Authenticator. Derselbe Client kann sicher über Threads hinweg geteilt werden.

import java.net.*;
import java.net.http.*;
import java.time.Duration;

public class HttpClientExample {
  static final String PROXY_HOST = "p.shifter.io";
  static final int    PROXY_PORT = 443;

  static HttpClient client(String country, String sid) {
    Authenticator auth = new Authenticator() {
      @Override
      protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(
          String.format("customer-USERNAME-country-%s-sid-%s-ttl-300", country, sid),
          "PASSWORD".toCharArray());
      }
    };

    return HttpClient.newBuilder()
      .proxy(ProxySelector.of(new InetSocketAddress(PROXY_HOST, PROXY_PORT)))
      .authenticator(auth)
      .connectTimeout(Duration.ofSeconds(10))
      .build();
  }

  public static void main(String[] args) throws Exception {
    HttpClient c = client("uk", "456DEF");

    for (String path : new String[]{"/login", "/dashboard", "/orders"}) {
      HttpRequest req = HttpRequest.newBuilder()
        .uri(URI.create("https://example.co.uk" + path))
        .header("User-Agent", "Mozilla/5.0 (Windows) AppleWebKit/537.36")
        .timeout(Duration.ofSeconds(30))
        .GET()
        .build();

      HttpResponse<String> r = c.send(req, HttpResponse.BodyHandlers.ofString());
      System.out.println(path + " " + r.statusCode() + " " + r.body().length());
    }
  }
}

OkHttp

OkHttp ist der beliebteste HTTP-Client in Java. Konfigurieren Sie Proxy und Anmeldedaten am Client-Builder – derselbe Client kann sicher über Threads hinweg wiederverwendet werden und multiplext Verbindungen.

import okhttp3.*;
import java.net.InetSocketAddress;
import java.net.Proxy;

public class OkHttpExample {
  public static void main(String[] args) throws Exception {
    Proxy proxy = new Proxy(Proxy.Type.HTTP,
      new InetSocketAddress("p.shifter.io", 443));

    Authenticator proxyAuth = (route, response) -> {
      String credential = Credentials.basic(
        "customer-USERNAME-country-de-city-berlin-sid-789GHI", "PASSWORD");
      return response.request().newBuilder()
        .header("Proxy-Authorization", credential)
        .build();
    };

    OkHttpClient client = new OkHttpClient.Builder()
      .proxy(proxy)
      .proxyAuthenticator(proxyAuth)
      .build();

    Request request = new Request.Builder()
      .url("https://api.example.de/products")
      .header("User-Agent", "Mozilla/5.0 (Linux) AppleWebKit/537.36")
      .build();

    try (Response response = client.newCall(request).execute()) {
      System.out.println(response.code() + " " + response.body().string().length());
    }
  }
}

Selenium WebDriver

Steuern Sie eine echte Chrome/Firefox-Instanz über Shifter für JavaScript-gerenderte Ziele. Verwenden Sie selenium-wire (oder eine Chrome-Erweiterung), um die Proxy-Authentifizierung zu verwalten.

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.Proxy;

public class SeleniumExample {
  public static void main(String[] args) {
    Proxy proxy = new Proxy();
    proxy.setHttpProxy("p.shifter.io:443");
    proxy.setSslProxy("p.shifter.io:443");

    ChromeOptions options = new ChromeOptions();
    options.setProxy(proxy);
    options.addArguments("--headless=new");
    options.addArguments(
      "--user-agent=Mozilla/5.0 (Macintosh) AppleWebKit/537.36"
    );

    // For username-password proxy auth, pair this with Shifter's IP
    // whitelist or use selenium-wire — Chrome ignores credentials in
    // headless mode without a sidecar extension.

    WebDriver driver = new ChromeDriver(options);
    try {
      driver.get("https://example.com");
      System.out.println(driver.getTitle());
      System.out.println(driver.getPageSource().length() + " bytes");
    } finally {
      driver.quit();
    }
  }
}

Spring Boot RestTemplate / WebClient

Binden Sie Shifter in eine Spring @Configuration ein, damit jedes RestTemplate oder WebClient, das Ihre App injiziert, über den Proxy geleitet wird. Funktioniert mit Spring 5+ und Spring Boot 3.

import org.apache.hc.client5.http.config.RequestConfig;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.core5.http.HttpHost;
import org.apache.hc.client5.http.auth.*;
import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ShifterRestConfig {
  @Bean
  public RestTemplate shifterRestTemplate() {
    HttpHost proxy = new HttpHost("http", "p.shifter.io", 443);

    BasicCredentialsProvider creds = new BasicCredentialsProvider();
    creds.setCredentials(
      new AuthScope(proxy),
      new UsernamePasswordCredentials(
        "customer-USERNAME-country-fr-sid-ABC123",
        "PASSWORD".toCharArray()));

    CloseableHttpClient httpClient = HttpClients.custom()
      .setProxy(proxy)
      .setDefaultCredentialsProvider(creds)
      .setDefaultRequestConfig(RequestConfig.custom().build())
      .build();

    HttpComponentsClientHttpRequestFactory factory =
      new HttpComponentsClientHttpRequestFactory(httpClient);

    return new RestTemplate(factory);
  }
}
FAQ

Häufig gestellte Fragen

Häufige Fragen zur Verwendung von Shifter mit Java.

Übergeben Sie ProxySelector.of(new InetSocketAddress("p.shifter.io", 443)) an HttpClient.newBuilder().proxy(...) und stellen Sie Anmeldedaten über einen Authenticator bereit, der PasswordAuthentication für getPasswordAuthentication zurückgibt. Nur Standardbibliothek – keine zusätzlichen Abhängigkeiten.

Setzen Sie den Proxy auf OkHttpClient.Builder() mit new Proxy(Proxy.Type.HTTP, address) und stellen Sie einen proxyAuthenticator bereit, der einen Proxy-Authorization-Header mit Credentials.basic(user, pass) hinzufügt. Derselbe Client kann sicher über Threads hinweg wiederverwendet werden.

Ja. Setzen Sie HTTP- und SSL-Proxy-Host auf einem Selenium Proxy-Objekt, fügen Sie es ChromeOptions hinzu und starten Sie ChromeDriver. Für die Benutzername-Passwort-Authentifizierung im Headless-Modus kombinieren Sie es mit Shifters IP-Whitelist oder verwenden Sie selenium-wire - Chrome fordert nativ keine Proxy-Anmeldedaten an.

Fügen Sie dem Proxy-Benutzernamen eine Sitzungs-ID hinzu - zum Beispiel `customer-USERNAME-country-us-sid-123ABC`. Jede Anfrage, die sich mit derselben sid authentifiziert, verwendet dieselbe Residential IP wieder. Fügen Sie `ttl-N` hinzu, um diese IP für bis zu N Sekunden zu fixieren.

Ja. Konfigurieren Sie ein RestTemplate oder WebClient @Bean, das einen Apache HttpClient oder Reactor Netty Client mit Shifter als Proxy umschließt. Injizieren Sie dieses Bean überall dort, wo Sie externe APIs aufrufen müssen - funktioniert mit Spring Framework 5+ und Spring Boot 3.

Es wird kein SDK benötigt. Shifter spricht einfaches HTTP / SOCKS5 - richten Sie Ihren vorhandenen Client auf `p.shifter.io:443`. Das hält Ihre pom.xml oder build.gradle schlank und funktioniert mit Java 8 bis Java 21.

Jetzt starten

Shifter verwenden mit Java

Fügen Sie Shifters 205M+ Residential- und ISP-Proxys in unter 5 Minuten zu Ihrem JVM-Stack hinzu. Kompatibel mit HttpClient, OkHttp, Spring und Selenium WebDriver.

Shifter kostenlos testenIn Minuten eingerichtet. Jederzeit kuendbar.