വെബ്‌സൈറ്റ് curl_init()ൽ നിലനിർത്തി ഇടനിലക്കാരനെ ആ ഹാൻഡിലിൽ ക്രമീകരിക്കുക. PHPക്ക് cURL എക്സ്റ്റൻഷൻ വേണം; ടെർമിനലിൽ curl പ്രോഗ്രാം പ്രവർത്തിക്കുന്നത് എക്സ്റ്റൻഷൻ ലഭ്യമാണെന്ന് തെളിയിക്കില്ല.

<?php
$ch = curl_init('https://example.com/');
curl_setopt_array($ch, [
    CURLOPT_PROXY => 'http://203.0.113.10:8080',
    CURLOPT_PROXYTYPE => CURLPROXY_HTTP,
    CURLOPT_NOPROXY => '',
    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;
echo $body;

രേഖയിലെ IPയും പോർട്ടും സ്വന്തം HTTP പ്രോക്സിയോ HTTP പ്രോക്സികളുടെ പട്ടികയിലെ ഇനമോ ഉപയോഗിച്ച് മാറ്റുക. CURLOPT_NOPROXY ഈ പരിശോധനയ്ക്ക് ബൈപാസ് നിയമങ്ങൾ മായ്ക്കുന്നു; CURLOPT_RETURNTRANSFER ബോഡി ബ്രൗസറിലേക്ക് അയയ്ക്കാതെ മടക്കിനൽകുന്നു. കണക്ഷൻ പരിധി സ്ഥാപിക്കലിനെയും ആകെ സമയപരിധി cURL പ്രവർത്തനത്തെയും നിയന്ത്രിക്കുന്നു.

SOCKS5 എൻഡ്പോയിന്റിനായി HTTP പ്രോക്സി ഓപ്ഷനുകൾ curl_exec()ന് മുമ്പ് മാറ്റുക:

curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);

CURLPROXY_SOCKS5_HOSTNAME ലക്ഷ്യസ്ഥാന DNS SOCKS സെർവറിനെ ഏൽപ്പിക്കുന്നു. പറഞ്ഞ പ്രോട്ടോകോൾ ഉപയോഗിക്കുക; പോർട്ട് 1080 മാത്രം അതിനെ തിരിച്ചറിയില്ല. ഏതൊരു പ്രോക്സി തിരഞ്ഞെടുപ്പിനും സൈറ്റിന്റെ സർട്ടിഫിക്കറ്റ് പരിശോധന നിർത്തേണ്ടതില്ല.

$body === false കർശനമായി പരിശോധിക്കുക. ശൂന്യ ബോഡി വിജയിച്ച കൈമാറ്റമാകാം; സൈറ്റിൽനിന്ന് ഒരു മറുപടിയും ഉണ്ടാകുംമുമ്പ് ടണൽ പരാജയപ്പെടാം. മറുവശത്ത്, ശൂന്യമല്ലാത്ത ബോഡിക്കൊപ്പം 403, 404 അല്ലെങ്കിൽ 429 വരാം. പൂർത്തിയായ അഭ്യർഥന ആവശ്യത്തിനു പറ്റുമോ എന്ന് തീരുമാനിക്കാൻ CURLINFO_RESPONSE_CODE cURL പിശകുഫലത്തോടൊപ്പം വായിക്കുക.

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