Kishika cURL cha Guzzle: Kukamata Vichwa vya CONNECT vya Proksi
Kamata vitalu tofauti vya vichwa vya jibu kwa kutumia kishika cURL cha Guzzle wakati jibu la CONNECT la proksi na jibu la tovuti vyote ni muhimu.
Ombi la HTTPS kupitia proksi ya HTTP linaweza kupokea jibu moja linalokubali CONNECT na jibu la baadaye kutoka kwa tovuti ndani ya handaki hilo. Kwa usanidi wa awali wa njia, angalia chaguo la proksi kwa kila ombi la Guzzle. Kichwa kwenye jibu la kwanza hakihitajiki kuwepo kwenye kitu cha jibu la mwisho.
Kwa kuiga ukitumia kituo cha HTTP unachochagua mwenyewe, chukua mchujo kutoka orodha ya proksi za HTTP na uthibitishe kwamba inakubali handaki la HTTPS. Kwa njia ya kishika cURL cha Guzzle 7.10, hifadhi kila header callback kama kitalu tofauti:
$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(),
];
},
]);Kiendelezi cha cURL kinapaswa kuonyesha CURLOPT_SUPPRESS_CONNECT_HEADERS, chaguo lililoletwa na libcurl 7.54.0. Kukiweka kuwa false huruhusu vichwa vya CONNECT kufika kwenye header callback ya cURL. Kishika cha Guzzle 7.10 huunda jibu kwa kila kitalu cha vichwa kilichokamilika na huita on_headers kwenye mpaka huo.
Weka vitalu kwa mpangilio. Changamoto za uthibitishaji, uelekezaji upya na majibu ya taarifa zinaweza kutoa vitalu vya ziada; usisawazishe thamani zote kwenye safu moja wala usiainishe jibu kwa sababu tu hali yake ni 200.
Jibu lililorudishwa linawakilisha jibu la ombi lililokamilika, huku blocks ikihifadhi maangalizi yaliyokusanywa na callbacks. Ikiwa handaki au usanidi wa TLS utashindikana, shughulikia transfer exception iliyotupwa katika programu inayoiita; jibu la mwisho la tovuti linaweza lisikuwepo.
Tabia hii inahusiana na kishika cURL kilichotajwa. Kishika maalum au stream handler hakilazimiki kuonyesha callbacks zile zile za proxy-handshake. Chukulia vichwa vya proksi vilivyokamatwa kama data ya uchunguzi na epuka kuhifadhi thamani zinazohusiana na akaunti bila sababu.