Задаць IP проксі для запыту Guzzle
Выкарыстоўвайце параметр proxy асобнага запыту Guzzle і ўлічвайце залежнасць тайм-аўту злучэння ад апрацоўшчыка і яўны спіс абыходу.
Параметр proxy у Guzzle прымае поўны URL канцавага пункта. Задайце яго ў запыце, калі толькі гэтая аперацыя мусіць выкарыстоўваць абраны IP.
<?php
require __DIR__ . '/vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://example.com/', [
'proxy' => 'http://203.0.113.10:8080',
'connect_timeout' => 5,
'timeout' => 15,
'http_errors' => false,
]);
echo $response->getStatusCode(), PHP_EOL;
echo (string) $response->getBody();
Прыклад мяркуе ўсталяваны праз Composer Guzzle 7. Замяніце адрас для дакументацыі сапраўдным HTTP-проксі пастаўшчыка або са спіса HTTP-проксі. Адрас прызначэння пакіньце ў URL запыту: проксі — пасрэднік, а не рэсурс, які спампоўваецца.
Тут http_errors роўны false, каб HTTP-адказ з памылкай заставаўся даступным для вывучэння. Памылкі злучэння па-ранейшаму выклікаюць выключэнні перадачы. Таму HTTPS-тунэль, адхілены пры стварэнні, можа скончыцца памылкай да атрымання звычайнага аб’екта адказу сайта.
Праверце апрацоўшчык, калі межы злучэння дзейнічаюць інакш
Guzzle можа выкарыстоўваць розныя HTTP-апрацоўшчыкі. Дакументацыя кажа, што ўбудаваны апрацоўшчык cURL падтрымлівае connect_timeout. Уласны апрацоўшчык ці асяроддзе без PHP cURL не абавязкова раўназначныя. Перад меркаваннем, што скапіяваны тайм-аўт дзейнічае, праверце апрацоўшчык праграмы.
Агульны timeout таксама варта задаць. Запісы бясплатнага спіса могуць перастаць адказваць паміж праверкамі, а стандартнае значэнне не дае карыснага тэрміну для запыту, які мусіць скончыцца хутка.
Выкарыстанне карты проксі
Карта дазваляе выбіраць маршруты паводле схемы адраса прызначэння і яўна задаваць вузлы абыходу проксі:
'proxy' => [
'http' => 'http://203.0.113.10:8080',
'https' => 'http://203.0.113.10:8080',
'no' => [],
],
Выкарыстоўвайце гэты масіў замест радковага значэння. Ключ HTTPS выбірае HTTPS-адрасаты; яго значэнне HTTP па-ранейшаму апісвае слухач проксі. Іншы пратакол слухача патрабуе іншай налады канцавага пункта.
Калі вы самі задаяце параметр proxy запыту, Guzzle чакае ад вас патрэбныя значэнні no, а не капіюе іх аўтаматычна з NO_PROXY. Пусты спіс зручны для ізаляванага тэсту проксі. Калі праграма мае наўмысныя правілы абыходу, захоўвайце іх яўна.