Xác thực proxy có tùy chọn cURL riêng. Đặt CURLOPT_USERPWD cho đăng nhập trang web không cấu hình tài khoản proxy, và chọn CURLOPT_HTTPAUTH không chọn phương thức xác thực proxy.

<?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;

Thay IP tài liệu và dùng thông tin được cấp cho proxy đó. Basic được chọn có chủ ý trong ví dụ; hãy dùng phương thức dịch vụ hỗ trợ và phê duyệt, đừng cho rằng điểm cuối nào cũng cần nó.

Trường kết hợp có quy tắc mã hóa

libcurl ghi rõ CURLOPT_PROXYUSERPWD giải mã URL cho tên người dùng và mật khẩu. Ví dụ mã hóa từng thành phần trước khi nối bằng dấu phân cách. Điều này quan trọng khi chuỗi phần trăm nguyên dạng hoặc ký tự đặc biệt khác thuộc thông tin xác thực.

Tùy chọn tên người dùng và mật khẩu proxy riêng nhận trực tiếp giá trị tương ứng:

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

Dùng chúng như dạng thông tin thay thế trước khi thực thi yêu cầu. Đừng tự áp dụng quy tắc giải mã của trường proxy kết hợp cho CURLOPT_USERPWD; libcurl ghi rõ sự khác biệt.

Tách các chặng xác thực

CURLOPT_PROXYAUTH chọn xác thực proxy, còn CURLOPT_HTTPAUTH chọn xác thực HTTP với đích. Nếu cả hai cần đăng nhập, cấu hình đúng tùy chọn cho từng bên thay vì sao chép một bộ thông tin vào cả hai nơi.

CURLAUTH_ANY cho phép thương lượng và có thể thêm lượt trao đổi thách thức-phản hồi trước khi chọn phương thức. Nó không chứng minh thông tin xác thực đúng. Thêm thủ công cả tiêu đề Proxy-Authorization có thể can thiệp xử lý xác thực của thư viện.

Thông tin Basic trên kết nối dạng rõ tới proxy không được đường hầm TLS của trang web hình thành sau đó bảo vệ. Kiểm tra chặng truyền đó riêng khi chọn cách dùng dịch vụ có xác thực.

Bài viết liên quan