“Lấy proxy” trong một ứng dụng PHP cURL có thể mang ba nghĩa khác nhau. Hãy quyết định bạn cần quan sát nào trước khi thêm một yêu cầu khác.

Câu hỏiXem ở đâu
Ứng dụng đã cấu hình điểm cuối nào?Cấu hình được truyền cho handle
Có dùng proxy cho lần truyền này không?Thông tin truyền, nơi được hỗ trợ
Trang web đã thấy địa chỉ công khai nào?Một quan sát tại đích đó

Giữ điểm cuối đã chọn bên cạnh handle hoặc đối tượng yêu cầu. curl_getinfo là giao diện thông tin truyền, không phải hàm lấy tổng quát cho mọi giá trị CURLOPT đã gán trước đó. Giữ lại cấu hình của ứng dụng đơn giản hơn là cố chặn các lời gọi curl_setopt.

Kiểm tra lần truyền đã hoàn tất

Sau khi truyền, peer đã kết nối có thể lấy qua CURLINFO_PRIMARY_IP. Khi kết nối đầu tiên đi tới proxy, peer đó có thể là địa chỉ của proxy thay vì địa chỉ của trang web.

$peer = curl_getinfo($ch, CURLINFO_PRIMARY_IP);
$usedProxy = defined('CURLINFO_USED_PROXY')
    ? curl_getinfo($ch, constant('CURLINFO_USED_PROXY'))
    : null;

CURLINFO_USED_PROXY được thêm vào libcurl ở phiên bản 8.7.0 và được các bản dựng PHP tương thích cung cấp. Kết quả của nó báo việc dùng proxy, không phải URL đầy đủ của proxy đã chọn. Nếu hằng số không có sẵn, null ở trên nghĩa là không có quan sát, không phải yêu cầu đã đi trực tiếp.

Đọc các giá trị này khi handle vẫn còn mô tả thao tác đang xét. Một kết nối thất bại có thể không cho địa chỉ peer hữu ích, và proxy tường minh vẫn có thể bị bỏ qua bởi một ngoại lệ áp dụng được.

Một điểm cuối kiểm tra IP trả lời câu hỏi thứ ba. Câu trả lời có thể mô tả đầu ra phía sau proxy, trong khi tên máy chủ đã cấu hình phân giải tới một lối vào khác. Không nên thay địa chỉ này bằng địa chỉ kia trong phần cài đặt của ứng dụng.

Bài viết liên quan