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 ਹੈਂਡਲਰ ਨਾਲ ਜੁੜਿਆ ਹੈ। ਕਸਟਮ ਜਾਂ ਸਟ੍ਰੀਮ ਹੈਂਡਲਰ ਨੂੰ ਉਹੀ ਪ੍ਰੌਕਸੀ-ਹੈਂਡਸ਼ੇਕ ਕਾਲਬੈਕ ਦੇਣ ਦੀ ਲੋੜ ਨਹੀਂ। ਕੈਪਚਰ ਕੀਤੇ ਪ੍ਰੌਕਸੀ ਹੈਡਰਾਂ ਨੂੰ ਨਿਦਾਨ ਡੇਟਾ ਮੰਨੋ ਅਤੇ ਖਾਤੇ ਨਾਲ ਜੁੜੇ ਮੁੱਲਾਂ ਨੂੰ ਬਿਨਾਂ ਲੋੜ ਤੋਂ ਰੱਖਣ ਤੋਂ ਬਚੋ।