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 өңдеушісіне байланысты. Тапсырыс немесе ағын өңдеушісі бірдей прокси-қол алысу кері шақыруларын ұсынуға міндетті емес. Ұсталған прокси тақырыптарын диагностикалық деректер ретінде қарастырыңыз және тіркелгіге қатысты мәндерді қажетсіз сақтаудан аулақ болыңыз.

Қатысты мақалалар