統合

Shifterと一緒に使用する PHP

ShifterのレジデンシャルおよびISP Proxiesをビジネスロジックを一切変更することなく、PHPプロジェクト(cURL、Guzzle、Symfony HttpClient、Laravel、WordPress)に組み込めます。

クイックスタート

インストール

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";

スティッキーセッションを使用した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();
FAQ

よくある質問

Shifter と PHP の併用に関するよくある質問。

`p.shifter.io:443`をCURLOPT_PROXYに、`customer-USERNAME-country-us-sid-123ABC:PASSWORD`をCURLOPT_PROXYUSERPWDに設定して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

Shifter の 205M+ レジデンシャル・ISP プロキシを 5 分以内に PHP スタックに組み込みます。Laravel、Symfony、WordPress、およびシンプルな cURL に対応しています。

Shifterを無料で試す数分でセットアップ完了。いつでもキャンセル可能。