Guzzle இன் cURL ஹேண்ட்லர்: ப்ராக்ஸி CONNECT தலைப்புகளைப் பதிவு செய்தல்
ப்ராக்ஸியின் CONNECT பதிலும் இணையதளத்தின் பதிலும் முக்கியமானபோது Guzzle இன் cURL ஹேண்ட்லர் மூலம் தனித்தனி பதில் தலைப்புத் தொகுதிகளைப் பதிவு செய்யுங்கள்.
HTTP ப்ராக்ஸி வழியாகச் செல்லும் HTTPS கோரிக்கை, CONNECT ஐ ஏற்கும் ஒரு பதிலையும், அந்தச் சுரங்கப்பாதைக்குள் இணையதளத்திலிருந்து பின்னர் வரும் ஒரு பதிலையும் பெறலாம். ஆரம்ப வழி அமைப்புக்கு, Guzzle இன் ஒரு-கோரிக்கை-க்கான ப்ராக்ஸி விருப்பம் பார்க்கவும். முதல் பதிலில் உள்ள தலைப்பு இறுதிப் பதில் பொருளில் இருக்க வேண்டியதில்லை.
நீங்களே தேர்ந்தெடுக்கும் HTTP முடிவுப்புள்ளியைப் பயன்படுத்திச் சோதிக்க, HTTP ப்ராக்ஸி பட்டியலில் இருந்து ஒரு வேட்பாளரை எடுத்து அது 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 களை வெளிப்படுத்த வேண்டிய கட்டாயமில்லை. பதிவு செய்யப்பட்ட ப்ராக்ஸி தலைப்புகளை பரிசோதனைத் தரவாகக் கருதி, கணக்கு சார்ந்த மதிப்புகளைத் தேவையின்றி வைத்திராமல் இருங்கள்.