Guzzle-ի cURL մշակիչը՝ պրոքսիի CONNECT վերնագրերի որսում
Որսացեք պատասխանի վերնագրերի առանձին բլոկներ Guzzle-ի cURL մշակիչով, երբ կարևոր են և՛ պրոքսիի CONNECT պատասխանը, և՛ կայքի պատասխանը։
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 մշակիչի հետ։ Հատուկ կամ հոսքային մշակիչը պարտավոր չէ տրամադրել նույն պրոքսի-ձեռքսեղմման հետկանչերը։ Վերաբերվե՛ք որսված պրոքսի վերնագրերին որպես ախտորոշիչ տվյալներ և խուսափե՛ք հաշվին կապված արժեքների ավելորդ պահպանումից։