ໃຊ້ IP ພຣັອກຊີກັບ PHP cURL
ຕັ້ງ HTTP ຫຼື SOCKS ພຣັອກຊີໃນ PHP cURL handle, ແຍກ URL ເວັບໄຊ ແລະ ຈຳແນກຂໍ້ຜິດພາດການຂົນສົ່ງຈາກຄຳຕອບ HTTP.
ຮັກສາເວັບໄຊໄວ້ໃນ curl_init() ແລະ ຕັ້ງຕົວກາງໃນ handle ນັ້ນ. PHP ຕ້ອງການສ່ວນຂະຫຍາຍ cURL; ໂປຣແກຣມ curl ທີ່ໃຊ້ໄດ້ໃນ terminal ບໍ່ໄດ້ພິສູດວ່າມີສ່ວນຂະຫຍາຍນັ້ນ.
<?php
$ch = curl_init('https://example.com/');
curl_setopt_array($ch, [
CURLOPT_PROXY => 'http://203.0.113.10:8080',
CURLOPT_PROXYTYPE => CURLPROXY_HTTP,
CURLOPT_NOPROXY => '',
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;
echo $body;ແທນ IP ແລະ ພອດເອກະສານດ້ວຍ HTTP ພຣັອກຊີຂອງທ່ານ ຫຼື ລາຍການຈາກລາຍການພຣັອກຊີ HTTP. CURLOPT_NOPROXY ລ້າງກົດຂ້າມພຣັອກຊີສຳລັບການທົດສອບນີ້; CURLOPT_RETURNTRANSFER ສົ່ງຄືນເນື້ອຫາແທນທີ່ຈະສົ່ງໄປບຣາວເຊີ. ຂີດຈຳກັດການເຊື່ອມຕໍ່ຄວບຄຸມການສ້າງ ແລະ ເວລາສູງສຸດລວມຄວບຄຸມວຽກ cURL.
ສຳລັບຈຸດປາຍ SOCKS5, ແທນຕົວເລືອກ HTTP ພຣັອກຊີກ່ອນ curl_exec():
curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);CURLPROXY_SOCKS5_HOSTNAME ມອບDNS ປາຍທາງໃຫ້ເຊີບເວີ SOCKS. ໃຊ້ໂປຣໂຕຄອນທີ່ລະບຸ; ພອດ 1080 ຢ່າງດຽວລະບຸມັນບໍ່ໄດ້. ບໍ່ມີຕົວເລືອກໃດຕ້ອງປິດການຢັ້ງຢືນໃບຮັບຮອງເວັບໄຊ.
ທົດສອບ $body === false ຢ່າງເຂັ້ມງວດ. ເນື້ອຫາວ່າງອາດເປັນການໂອນທີ່ສຳເລັດ ແຕ່ອຸໂມງອາດລົ້ມເຫຼວກ່ອນມີຄຳຕອບໃດຈາກເວັບໄຊ. ກົງກັນຂ້າມ ເນື້ອຫາບໍ່ວ່າງອາດມາພ້ອມ 403, 404 ຫຼື 429. ອ່ານ CURLINFO_RESPONSE_CODE ຄູ່ກັບຜົນຂໍ້ຜິດພາດ cURL ເພື່ອຕັດສິນວ່າຄຳຂໍທີ່ຈົບແລ້ວຕອບໂຈດວຽກຫຼືບໍ່.