Задайте прокси 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();
Примерът предполага Guzzle 7, инсталиран чрез Composer. Заменете адреса за документация с реално 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. Празен списък е полезен за изолиран тест на прокси. Ако приложението има умишлени правила за заобикаляне, запазете ги явно.