통합

Shifter와 함께 사용 PHP

Shifter의 레지덴셜 및 ISP 프록시를 cURL, Guzzle, Symfony HttpClient, Laravel 또는 WordPress 등 모든 PHP 프로젝트에 비즈니스 로직 한 줄도 변경하지 않고 연결하세요.

빠른 시작

설치

composer require guzzlehttp/guzzle

기본 사용법

<?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", ...]

기능

cURL, Guzzle, Symfony HttpClient, Laravel Http, WordPress wp_remote_get과 별도 설정 없이 바로 함께 작동합니다
기본값은 요청별 로테이션이며, 스티키 세션에는 `sid`를, N초 동안의 시간제 고정에는 `ttl-N`을 사용합니다
PHP 7.4 및 8.3을 포함한 모든 PHP 8.x 릴리스와 호환
동일한 게이트웨이 엔드포인트에서 지원되는 HTTP, HTTPS, SOCKS5 프로토콜
사용자 이름 매개변수를 통한 195개국 이상 Geo 타겟팅 - 추가 패키지 불필요
Laravel, Symfony, WordPress 및 모든 커스텀 PHP 프레임워크에 그대로 적용 — SDK 종속 없음

예시

순수 cURL

의존성 제로, 표준 PHP cURL 확장만 필요합니다. 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";

Sticky Session을 사용하는 Guzzle

사용자 이름에 `sid`를 추가하여 다단계 워크플로우 전반에 동일한 레지덴셜 IP를 재사용하세요. 지역 타겟팅을 위해 `country-de`, `city-berlin`, 또는 `asn-7922`를 추가하세요.

<?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

Symfony의 HttpClient 컴포넌트는 HTTP/2를 지원하며 Symfony 6+ 및 7에 기본 탑재되어 있습니다. 프록시를 전역 또는 요청별로 설정할 수 있습니다.

<?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

Laravel의 Http 파사드는 Guzzle을 감쌉니다. 서비스 프로바이더에서 프록시를 설정하면 앱이 만드는 모든 Http 호출이 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();
자주 묻는 질문

자주 묻는 질문

PHP와 Shifter 사용에 관한 일반적인 질문.

CURLOPT_PROXY를 `p.shifter.io:443`으로 설정하고 CURLOPT_PROXYUSERPWD를 `customer-USERNAME-country-us-sid-123ABC:PASSWORD`로 설정하여 curl_setopt를 사용하세요. 추가 라이브러리는 필요하지 않습니다. 표준 PHP cURL 확장 기능만으로 충분합니다.

Guzzle 클라이언트를 생성할 때(또는 요청별로) `proxy` 옵션을 전달하세요. 형식은 `http://USER:PASS@p.shifter.io:443`입니다. Guzzle 6과 7 모두 지원됩니다. 동일한 클라이언트 인스턴스를 여러 요청에서 재사용할 수 있습니다.

Yes. Laravel's Http facade wraps Guzzle, so you can pass `withOptions(['proxy' => '...'])` on any call. For convenience, register an Http::macro in a service provider so every part of your app uses Shifter without repeating configuration.

프록시 사용자 이름에 세션 ID를 추가하세요(예: `customer-USERNAME-country-uk-sid-456DEF`). 동일한 sid를 공유하는 모든 요청은 동일한 레지덴셜 IP를 재사용합니다. `ttl-N`을 추가하면 해당 IP를 최대 N초 동안 고정할 수 있습니다.

예. WordPress의 wp_remote_get과 wp_remote_post는 cURL을 감싸고 있습니다. `http_request_args` 필터에 후킹하여 `proxy` 인자를 삽입하거나 cURL을 직접 호출할 수 있습니다. 동일한 프록시 URL 형식이 모든 WordPress 플러그인에서 작동합니다.

패키지가 필요하지 않습니다. Shifter는 표준 HTTP / SOCKS5를 사용합니다. 기존 HTTP 클라이언트를 `p.shifter.io:443`으로 지정하면 끝입니다. 이렇게 하면 의존성 종속을 피하고 composer.json을 깔끔하게 유지할 수 있습니다.

시작하기

Shifter 사용을 함께 시작하기 PHP

5분 이내에 Shifter의 2억 500만+ 레지덴셜 및 ISP 프록시를 PHP 스택에 연결하세요. Laravel, Symfony, WordPress, 순수 cURL과 호환됩니다.

Shifter 무료로 체험하기몇 분 만에 설정. 언제든지 취소 가능.