የ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 አስተናጋጅ ጋር የተያያዘ ነው። ብጁ ወይም የፍሰት አስተናጋጅ ተመሳሳይ የፕሮክሲ እጅ መጨበጫ መልሶ-ጥሪዎችን ማጋለጥ አይጠበቅበትም። የተያዙ የፕሮክሲ ራስጌዎችን እንደ ምርመራ መረጃ ይያዙ እና የመለያ ዋጋዎችን አላስፈላጊ ሆኖ ከማቆየት ይቆጠቡ።