En date du 7 octobre 2026, Shifter dispose du plus grand pool d'IP US actives, devant Oxylabs et Bright Data, pour une fraction du coût.Shifter a désormais le plus grand pool d'IP US actives

Voir les benchmarks
Intégration

Utilisez Shifter avec Java

Intégrez les proxies résidentiels et ISP de Shifter dans des applications Java en quelques minutes. Compatible avec le HttpClient intégré (Java 11+), OkHttp, Apache HttpClient, Selenium et Jsoup — aucun SDK requis.

Démarrage rapide

Installer

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

Utilisation de base

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("http://ip-info.com/json"))
      .GET()
      .build();

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

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

Fonctionnalités

Support natif pour HttpClient (Java 11+), OkHttp, Apache HttpClient, RestTemplate et WebClient
Rotation par requête par défaut, avec `sid` pour les sessions persistantes et `ttl-N` pour des épinglages temporisés de N secondes
Support des navigateurs sans interface via Selenium WebDriver et Playwright pour Java
Protocoles HTTP, HTTPS et SOCKS5 sur le même point d'accès passerelle
Géo-ciblage dans 195+ pays via les paramètres de nom d'utilisateur — aucune dépendance supplémentaire requise
Compatible avec Java 8, 11, 17 et 21 — fonctionne avec Maven, Gradle et tout écosystème JVM (Kotlin, Scala, Groovy)

Exemples

HttpClient intégré (Java 11+)

La bibliothèque standard depuis Java 11 — aucune dépendance tierce. Configurez le proxy via ProxySelector et les identifiants via Authenticator. Le même client peut être partagé en toute sécurité entre les threads.

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 est le client HTTP le plus populaire en Java. Configurez le proxy et les identifiants sur le builder du client — le même client peut être réutilisé en toute sécurité entre les threads et multiplexe les connexions.

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

Pilotez une vraie instance Chrome / Firefox via Shifter pour les cibles rendues en JavaScript. Utilisez selenium-wire (ou une extension Chrome) pour gérer l'authentification du proxy.

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

Encapsulez Shifter dans une @Configuration Spring pour que chaque RestTemplate ou WebClient injecté dans votre application passe par le proxy. Compatible avec Spring 5+ et 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

Foire aux questions

Questions fréquentes sur l'utilisation de Shifter avec Java.

Passez ProxySelector.of(new InetSocketAddress("p.shifter.io", 443)) à HttpClient.newBuilder().proxy(...) et fournissez les identifiants via un Authenticator qui retourne PasswordAuthentication pour getPasswordAuthentication. Bibliothèque standard uniquement — aucune dépendance supplémentaire.

Définissez le proxy sur OkHttpClient.Builder() avec new Proxy(Proxy.Type.HTTP, address) et fournissez un proxyAuthenticator qui ajoute un en-tête Proxy-Authorization en utilisant Credentials.basic(user, pass). Le même client peut être réutilisé en toute sécurité entre les threads.

Oui. Définissez l'hôte proxy HTTP et SSL sur un objet Selenium Proxy, attachez-le à ChromeOptions et lancez ChromeDriver. Pour l'authentification par nom d'utilisateur et mot de passe en mode sans interface, associez-le à la liste blanche d'IP de Shifter ou utilisez selenium-wire — Chrome ne demande pas nativement les identifiants du proxy.

Ajoutez un identifiant de session au nom d'utilisateur du proxy — par exemple `customer-USERNAME-country-us-sid-123ABC`. Chaque requête authentifiée avec le même sid réutilisera la même IP résidentielle. Ajoutez `ttl-N` pour épingler cette IP pendant N secondes au maximum.

Oui. Configurez un @Bean RestTemplate ou WebClient qui encapsule un Apache HttpClient ou un client Reactor Netty avec Shifter comme proxy. Injectez ce bean partout où vous devez appeler des API externes — compatible avec Spring Framework 5+ et Spring Boot 3.

Aucun SDK n'est requis. Shifter utilise le protocole HTTP / SOCKS5 standard — pointez votre client existant vers `p.shifter.io:443`. Cela garde votre pom.xml ou build.gradle léger et fonctionne de Java 8 à Java 21.

Commencer

Commencer à utiliser Shifter avec Java

Ajoutez les proxies résidentiels et ISP 205M+ de Shifter à votre stack JVM en moins de 5 minutes. Compatible avec HttpClient, OkHttp, Spring et Selenium WebDriver.

Essayez Shifter gratuitementConfiguration en quelques minutes. Annulez à tout moment.