אפשרויות אימות פרוקסי ב-PHP cURL
הגדירו פרטי פרוקסי באפשרויות cURL הנכונות וטפלו בפענוח URL של השדה המשולב בלי לשנות אימות מול היעד.
לאימות פרוקסי יש אפשרויות 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 המאוחרת של האתר. בדקו את התעבורה הזאת בנפרד כשאתם בוחרים כיצד להשתמש בשירות מאומת.