ตัวเลือกยืนยันตัวตนพร็อกซีใน 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 ของเว็บไซต์ที่เกิดภายหลัง ให้ตรวจช่วงการส่งนั้นแยกเมื่อเลือกวิธีใช้บริการที่ต้องยืนยันตัวตน