പ്രോക്സി പ്രാമാണീകരണത്തിന് സ്വന്തം cURL ഓപ്ഷനുകളുണ്ട്. സൈറ്റ് ലോഗിനായി CURLOPT_USERPWD സജ്ജമാക്കുന്നത് പ്രോക്സി അക്കൗണ്ട് സജ്ജമാക്കുന്നില്ല; CURLOPT_HTTPAUTH പ്രോക്സി പ്രാമാണീകരണ രീതിയും തിരഞ്ഞെടുക്കുന്നില്ല.

<?php
$user = 'proxy-user';
$password = getenv('PROXY_PASSWORD');
if ($password === false) {
    throw new RuntimeException('Set PROXY_PASSWORD');
}

$ch = curl_init('https://example.com/');
curl_setopt_array($ch, [
    CURLOPT_PROXY => 'http://203.0.113.10:8080',
    CURLOPT_NOPROXY => '',
    CURLOPT_PROXYUSERPWD =>
        rawurlencode($user) . ':' . rawurlencode($password),
    CURLOPT_PROXYAUTH => CURLAUTH_BASIC,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 5,
    CURLOPT_TIMEOUT => 15,
]);

$body = curl_exec($ch);
if ($body === false) {
    throw new RuntimeException(curl_error($ch), curl_errno($ch));
}
echo curl_getinfo($ch, CURLINFO_RESPONSE_CODE), PHP_EOL;

രേഖയിലെ IP മാറ്റി ആ പ്രോക്സിക്ക് നൽകിയ പ്രവേശനവിവരം ഉപയോഗിക്കുക. ഉദാഹരണത്തിൽ Basic ഉദ്ദേശപൂർവമാണ്; എല്ലാ എൻഡ്‌പോയിന്റിനും അതുവേണമെന്ന് കരുതാതെ സേവനം പിന്തുണയ്ക്കുകയും അംഗീകരിക്കുകയും ചെയ്യുന്ന രീതി ഉപയോഗിക്കുക.

സംയുക്ത ഫീൽഡിന് എൻകോഡിങ് നിയമമുണ്ട്

libcurl പ്രകാരം CURLOPT_PROXYUSERPWD ഉപയോക്തൃനാമവും പാസ്‌വേഡും URL-ഡീകോഡ് ചെയ്യുന്നു. ഉദാഹരണം ഓരോ ഭാഗവും വേർതിരിവുചിഹ്നം ഉപയോഗിച്ച് ചേർക്കുന്നതിന് മുമ്പ് എൻകോഡ് ചെയ്യുന്നു. അക്ഷരാർത്ഥത്തിലുള്ള ശതമാനക്രമമോ മറ്റൊരു പ്രത്യേക ചിഹ്നമോ വിവരത്തിലുണ്ടെങ്കിൽ ഇത് പ്രധാനമാണ്.

പ്രത്യേക പ്രോക്സി ഉപയോക്തൃനാമ, പാസ്‌വേഡ് ഓപ്ഷനുകൾ അവയുടെ മൂല്യങ്ങൾ നേരിട്ട് സ്വീകരിക്കുന്നു:

curl_setopt($ch, CURLOPT_PROXYUSERNAME, $user);
curl_setopt($ch, CURLOPT_PROXYPASSWORD, $password);

അഭ്യർത്ഥന നടത്തും മുമ്പ് അവ പ്രവേശനവിവരത്തിന്റെ പകരംരൂപമായി ഉപയോഗിക്കുക. സംയുക്ത പ്രോക്സി ഫീൽഡിന്റെ ഡീകോഡിങ് നിയമം തനിയെ CURLOPT_USERPWD-ന് നൽകരുത്; libcurl വ്യത്യാസം രേഖപ്പെടുത്തുന്നു.

പ്രാമാണീകരണ ഘട്ടങ്ങൾ വേർതിരിക്കുക

CURLOPT_PROXYAUTH പ്രോക്സി പ്രാമാണീകരണവും CURLOPT_HTTPAUTH ലക്ഷ്യവുമായുള്ള HTTP പ്രാമാണീകരണവും തിരഞ്ഞെടുക്കുന്നു. രണ്ടുപേരും ലോഗിൻ ചോദിച്ചാൽ ഓരോന്നിനും ശരിയായ ഓപ്ഷൻ നൽകുക, ഒരേ വിവരം രണ്ടിടത്തും പകർത്തരുത്.

CURLAUTH_ANY ചർച്ച അനുവദിക്കുകയും രീതി തിരഞ്ഞെടുക്കുന്നതിന് മുമ്പ് വെല്ലുവിളി-മറുപടി വിനിമയം കൂട്ടിച്ചേർക്കുകയും ചെയ്യാം. വിവരം ശരിയെന്ന് അത് തെളിയിക്കുന്നില്ല. അധിക Proxy-Authorization ഹെഡർ കൈകൊണ്ട് ചേർക്കുന്നത് ലൈബ്രറിയുടെ പ്രാമാണീകരണ കൈകാര്യത്തിൽ ഇടപെടാം.

പ്രോക്സിയിലേക്കുള്ള വ്യക്തമായ ടെക്സ്റ്റ് കണക്ഷനിലെ Basic വിവരം സൈറ്റിന്റെ പിന്നീടുള്ള TLS ടണൽ സംരക്ഷിക്കുന്നില്ല. പ്രാമാണീകരണ സേവനം ഉപയോഗിക്കുന്ന രീതി തിരഞ്ഞെടുക്കുമ്പോൾ ആ കൈമാറ്റം പ്രത്യേകം പരിശോധിക്കുക.

അനുബന്ധ ലേഖനങ്ങൾ