HTTP proxy ئارقىلىق ئۆتكەن HTTPS تەلەپ CONNECT نى قوبۇل قىلىدىغان بىر جاۋاب ۋە كېيىن شۇ تونېل ئىچىدىكى تور بېكەتتىن كەلگەن يەنە بىر جاۋابنى ئالىدۇ. دەسلەپكى يول تەڭشىكى ئۈچۈن Guzzle نىڭ ھەر تەلەپكە قوشىدىغان proxy تاللانمىسىنى كۆرۈڭ. بىرىنچى جاۋابتىكى باش ئۇچۇرنىڭ ئاخىرقى جاۋاب ئوبيېكتىدا بولۇشى شەرت ئەمەس.

ئۆزىڭىز تاللىغان HTTP ئۇچ نۇقتىسى بىلەن تەكرارلاش ئۈچۈن HTTP proxy تىزىملىكىدىن بىر نامزات ئېلىپ، ئۇنىڭ HTTPS تونېلىنى قوبۇل قىلىدىغانلىقىنى جەزملەڭ. Guzzle 7.10 نىڭ cURL بىر تەرەپ قىلغۇچى يولى ئۈچۈن ھەر بىر header callback نى ئايرىم بۆلەك قىلىپ ساقلاڭ:

$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 نىڭ header callback ىغا يېتىشىگە يول قويىدۇ. Guzzle 7.10 بىر تەرەپ قىلغۇچىسى ھەر بىر تاماملانغان باش ئۇچۇر بۆلىكى ئۈچۈن بىر جاۋاب قۇرىدۇ ۋە شۇ چېگرادا on_headers نى چاقىرىدۇ.

بۆلەكلەرنى تەرتىپىدە ساقلاڭ. دەلىللەش سىناقلىرى، قايتا يۆلەش ۋە ئۇچۇر خاراكتېرلىك جاۋابلار قوشۇمچە بۆلەكلەر پەيدا قىلىشى مۇمكىن؛ بارلىق قىممەتلەرنى بىر array غا تۈزلىمەڭ ۋە پەقەت ھالىتى 200 بولغانلىقى ئۈچۈن جاۋابنى تۈرگە ئايرىماڭ.

قايتۇرۇلغان جاۋاب تاماملانغان تەلەپنىڭ جاۋابىنى ئىپادىلەيدۇ، blocks بولسا callback لار توپلىغان كۆزىتىشلەرنى ساقلايدۇ. تونېل ياكى TLS تەڭشىكى مەغلۇپ بولسا، تاشلانغان transfer exception نى چاقىرغۇچى پروگراممىدا بىر تەرەپ قىلىڭ؛ ئاخىرقى تور بېكەت جاۋابى بولماسلىقى مۇمكىن.

بۇ خىسلات ئېيتىلغان cURL بىر تەرەپ قىلغۇچىغا باغلىق. ئۆزگەرتىلگەن ياكى stream بىر تەرەپ قىلغۇچى ئوخشاش proxy-handshake callback لارنى تەمىنلەشكە مەجبۇر ئەمەس. تۇتۇلغان proxy باش ئۇچۇرلىرىنى دىئاگنوز سانلىق مەلۇماتى دەپ قاراڭ ۋە ھېساباتقا ئائىت قىممەتلەرنى زۆرۈرسىز ساقلىماڭ.

مۇناسىۋەتلىك ماقالىلەر