Integración

Usa Shifter con PHP

Integra los proxies residenciales y de ISP de Shifter en cualquier proyecto PHP — cURL, Guzzle, Symfony HttpClient, Laravel o WordPress — sin modificar ni una sola línea de lógica de negocio.

Inicio rápido

Instalar

composer require guzzlehttp/guzzle

Uso básico

<?php
require 'vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client([
    'proxy' => 'customer-USERNAME-country-us-sid-123ABC:PASSWORD@p.shifter.io:443',
    'timeout' => 30,
]);

$response = $client->get('https://ipinfo.io/json');
$data = json_decode($response->getBody(), true);

print_r($data);
// ["ip" => "154.16.xxx.xxx", "city" => "New York", "country" => "US", ...]

Características

Compatible con cURL, Guzzle, Symfony HttpClient, Laravel Http y WordPress wp_remote_get sin configuración adicional
Rotación por solicitud de forma predeterminada, con `sid` para sesiones persistentes y `ttl-N` para fijar IPs durante N segundos
Compatible con PHP 7.4 y todas las versiones de PHP 8.x, incluida la 8.3
Protocolos HTTP, HTTPS y SOCKS5 en el mismo endpoint de pasarela
Geolocalización en más de 195 países mediante parámetros de nombre de usuario, sin necesidad de ningún paquete adicional
Integración directa para Laravel, Symfony, WordPress y cualquier framework PHP personalizado, sin dependencia de SDK

Ejemplos

cURL simple

Sin dependencias — solo la extensión estándar cURL de PHP. Úsalo cuando no puedas (o no quieras) instalar paquetes de Composer.

<?php
$proxyUser = 'customer-USERNAME-country-us-sid-123ABC';
$proxyPass = 'PASSWORD';
$proxyHost = 'p.shifter.io:443';

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL            => 'https://example.com',
    CURLOPT_PROXY          => $proxyHost,
    CURLOPT_PROXYUSERPWD   => "$proxyUser:$proxyPass",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 30,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTPHEADER     => [
        'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
    ],
]);

$body   = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo "Status: $status, Length: " . strlen($body) . "\n";

Guzzle con sesión persistente

Reutiliza la misma IP residencial en un flujo de trabajo de varios pasos añadiendo un `sid` al nombre de usuario. Añade `country-de`, `city-berlin` o `asn-7922` para geolocalización.

<?php
require 'vendor/autoload.php';

use GuzzleHttp\Client;

$sid = bin2hex(random_bytes(4));

$client = new Client([
    'proxy'    => "customer-USERNAME-country-de-city-berlin-sid-$sid-ttl-300:PASSWORD@p.shifter.io:443",
    'timeout'  => 30,
    'headers'  => [
        'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36',
    ],
]);

$login     = $client->post('https://example.de/login', [
    'form_params' => ['email' => 'user@example.com', 'password' => 'secret'],
]);
$dashboard = $client->get('https://example.de/dashboard');
$orders    = $client->get('https://example.de/orders');

echo $login->getStatusCode(), ' ', $dashboard->getStatusCode(), ' ', $orders->getStatusCode();

Symfony HttpClient

El componente HttpClient de Symfony admite HTTP/2 y se incluye con Symfony 6+ y 7. Configura el proxy de forma global o por solicitud.

<?php
use Symfony\Component\HttpClient\HttpClient;

$client = HttpClient::create([
    'proxy'   => 'customer-USERNAME-country-fr-sid-456DEF:PASSWORD@p.shifter.io:443',
    'timeout' => 30,
    'headers' => [
        'User-Agent' => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36',
    ],
]);

$response = $client->request('GET', 'https://api.example.fr/products');

if ($response->getStatusCode() === 200) {
    $products = $response->toArray();
    foreach ($products as $product) {
        echo "{$product['name']}: {$product['price']} EUR\n";
    }
}

Laravel HTTP Client

La fachada Http de Laravel envuelve Guzzle. Configura el proxy en un proveedor de servicios para que todas las llamadas Http de tu aplicación pasen por Shifter.

<?php
namespace App\Providers;

use Illuminate\Support\Facades\Http;
use Illuminate\Support\ServiceProvider;

class HttpServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        Http::macro('shifter', function (string $sid = '') {
            $sidPart = $sid ? "-sid-$sid" : '';
            $proxy   = "customer-USERNAME-country-uk$sidPart:PASSWORD@p.shifter.io:443";

            return Http::withOptions([
                'proxy'           => $proxy,
                'timeout'         => 30,
                'connect_timeout' => 10,
            ]);
        });
    }
}

// Anywhere in your app:
$response = Http::shifter('789GHI')->get('https://example.co.uk/products');
$products = $response->json();
Preguntas frecuentes

Preguntas frecuentes

Preguntas frecuentes sobre el uso de Shifter con PHP.

Usa curl_setopt con CURLOPT_PROXY establecido en `p.shifter.io:443` y CURLOPT_PROXYUSERPWD establecido en `customer-USERNAME-country-us-sid-123ABC:PASSWORD`. No se necesitan bibliotecas adicionales — la extensión estándar cURL de PHP es suficiente.

Comenzar

Empieza a usar Shifter con PHP

Integra los más de 205M de proxies residenciales y de ISP de Shifter en tu stack de PHP en menos de 5 minutos. Compatible con Laravel, Symfony, WordPress y cURL nativo.

Prueba Shifter gratisConfiguración en minutos. Cancela cuando quieras.