将Shifter与以下工具配合使用 PHP
将 Shifter 的住宅和 ISP 代理接入任何 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
零依赖,仅使用标准 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 客户端
Laravel 的 Http facade 封装了 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(); 常见问题
关于将 Shifter 与 PHP 搭配使用的常见问题。
使用 curl_setopt,将 CURLOPT_PROXY 设置为 `p.shifter.io:443`,将 CURLOPT_PROXYUSERPWD 设置为 `customer-USERNAME-country-us-sid-123ABC:PASSWORD`。无需额外库,标准 PHP cURL 扩展即可满足需求。
在构建 Guzzle 客户端时(或针对每个请求)传入 `proxy` 选项。格式为 `http://USER:PASS@p.shifter.io:443`。Guzzle 6 和 7 均受支持。同一客户端实例可在多个请求中复用。
是的。Laravel 的 Http facade 封装了 Guzzle,因此您可以在任何调用上传递 `withOptions(['proxy' => '...'])`。为方便起见,可在服务提供者中注册一个 Http::macro,使应用的每个部分都使用 Shifter,而无需重复配置。
在代理用户名中添加会话 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 的 205M+ 住宅及 ISP 代理接入您的 PHP 技术栈。兼容 Laravel、Symfony、WordPress 及原生 cURL。