“Ambil proxy” bisa berarti tiga hal berbeda dalam aplikasi PHP cURL. Putuskan pengamatan mana yang Anda butuhkan sebelum menambah permintaan lain.

PertanyaanDi mana melihatnya
Endpoint mana yang dikonfigurasi aplikasi?Konfigurasi yang diberikan ke handle
Apakah proxy dipakai untuk transfer ini?Informasi transfer, bila didukung
Alamat publik mana yang dilihat situs web?Pengamatan di tujuan tersebut

Simpan endpoint terpilih bersama handle atau objek permintaan. curl_getinfo adalah antarmuka informasi transfer, bukan getter umum untuk setiap nilai CURLOPT yang diberikan sebelumnya. Menyimpan konfigurasi aplikasi lebih sederhana daripada mencoba mencegat panggilan curl_setopt.

Periksa transfer yang selesai

Setelah transfer, peer yang terhubung tersedia melalui CURLINFO_PRIMARY_IP. Saat koneksi pertama menuju proxy, peer itu bisa berupa alamat proxy, bukan alamat situs web.

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

CURLINFO_USED_PROXY ditambahkan ke libcurl pada 8.7.0 dan disediakan oleh build PHP yang kompatibel. Hasilnya melaporkan penggunaan proxy, bukan URL lengkap proxy yang dipilih. Jika konstanta tidak tersedia, null di atas berarti pengamatan tidak tersedia, bukan bahwa permintaan berjalan langsung.

Baca nilai-nilai ini selama handle masih menjelaskan operasi yang dimaksud. Koneksi yang gagal mungkin tidak memberi alamat peer yang berguna, dan proxy eksplisit masih bisa dilewati oleh pengecualian yang berlaku.

Endpoint pemeriksa IP menjawab pertanyaan ketiga. Balasannya bisa menjelaskan keluar di balik proxy, sementara nama host yang dikonfigurasi menuju ke pintu masuk yang berbeda. Tak satu pun dari kedua alamat itu boleh diganti dengan yang lain di pengaturan aplikasi.

Artikel terkait