Guzzle cURL иштетүүчүсү: проксинин CONNECT аталыштарын кармоо
Проксинин CONNECT жообу да, веб-сайттын жообу да маанилүү болгондо, Guzzle cURL иштетүүчүсү менен жооп аталыштарынын өзүнчө блокторун кармаңыз.
HTTP прокси аркылуу өткөн HTTPS суроо CONNECT кабыл алган бир жоопту, анан ошол туннелдин ичиндеги веб-сайттан келген кийинки жоопту ала алат. Баштапкы маршрутту жөндөө үчүн Guzzle'дун ар бир суроо үчүн прокси параметрин караңыз. Биринчи жооптогу аталыш акыркы жооп объектисинде болушу милдеттүү эмес.
Өзүңүз тандаган HTTP акыркы чекити менен кайталоо үчүн HTTP проксилердин тизмесинен талапкер алып, анын HTTPS туннелин кабыл аларын текшериңиз. Guzzle 7.10 cURL иштетүүчү жолунда ар бир аталыш кайтарым чакырыгын өзүнчө блок катары сактаңыз:
$blocks = [];
$client = new \GuzzleHttp\Client([
'handler' => \GuzzleHttp\HandlerStack::create(
new \GuzzleHttp\Handler\CurlHandler()
),
]);
$response = $client->get('https://www.example.com/', [
'proxy' => 'http://proxy.example:8080',
'curl' => [CURLOPT_SUPPRESS_CONNECT_HEADERS => false],
'on_headers' => function (
\Psr\Http\Message\ResponseInterface $part
) use (&$blocks) {
$blocks[] = [
'status' => $part->getStatusCode(),
'reason' => $part->getReasonPhrase(),
'headers' => $part->getHeaders(),
];
},
]);
cURL кеңейтүүсү CURLOPT_SUPPRESS_CONNECT_HEADERS параметрин сунуштоосу керек; бул libcurl 7.54.0 киргизген параметр. Аны false кылып коюу CONNECT аталыштарынын cURL аталыш кайтарым чакырыгына жетүүсүнө мүмкүндүк берет. Guzzle 7.10 иштетүүчүсү ар бир бүткөн аталыш блогу үчүн жооп курат жана ошол чекте on_headers чакырат.
Блокторду тартибинде кармаңыз. Аутентификация сыноолору, кайра багыттоолор жана маалыматтык жооптор кошумча блокторду жаратышы мүмкүн; бардык маанилерди бир массивге тегиздебеңиз жана жоопту статусу 200 болгондуктан гана классификациялабаңыз.
Кайтарылган жооп бүткөн суроонун жообун билдирет, blocks кайтарым чакырыктар чогулткан байкоолорду сактайт. Туннел же TLS жөндөөсү ийгиликсиз болсо, чакырган колдонмодо ыргытылган өткөрүү искэ алуусун иштетиңиз; акыркы веб-сайт жообу болбошу мүмкүн.
Бул жүрүм-турум көрсөтүлгөн cURL иштетүүчүсүнө байланыштуу. Ыңгайлаштырылган же агым иштетүүчүсү ошол эле прокси-кол алышуу кайтарым чакырыктарын сунуштоого милдеттүү эмес. Кармалган прокси аталыштарын диагностикалык маалымат катары карап, эсепке байланыштуу маанилерди ашыкча сактоодон качыңыз.