Χρήση IP proxy με PHP cURL
Ρυθμίστε HTTP ή SOCKS proxy σε χειριστή PHP cURL, κρατήστε χωριστό το URL του ιστοτόπου και διακρίνετε σφάλματα μεταφοράς από αποκρίσεις HTTP.
Κρατήστε τον ιστότοπο στο curl_init() και ρυθμίστε τον ενδιάμεσο σε εκείνον τον χειριστή. Η PHP χρειάζεται την επέκταση cURL· ένα λειτουργικό εκτελέσιμο curl στο τερματικό δεν αποδεικνύει ότι η επέκταση είναι διαθέσιμη.
<?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 proxy σας ή καταχώριση από τη λίστα HTTP proxy. Το CURLOPT_NOPROXY καθαρίζει κανόνες παράκαμψης για αυτή τη δοκιμή· το CURLOPT_RETURNTRANSFER επιστρέφει το σώμα αντί να το στέλνει στον περιηγητή. Το όριο σύνδεσης περιορίζει την εγκατάσταση και το συνολικό χρονικό όριο την εργασία cURL.
Για τελικό σημείο SOCKS5, αντικαταστήστε τις επιλογές HTTP proxy πριν από το 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 μόνη της δεν το ταυτοποιεί. Καμία επιλογή proxy δεν απαιτεί απενεργοποίηση της επαλήθευσης πιστοποιητικού του ιστοτόπου.
Ελέγξτε το $body === false με αυστηρή σύγκριση. Κενό σώμα μπορεί να σημαίνει επιτυχή μεταφορά, ενώ η σήραγγα μπορεί να αποτύχει πριν υπάρξει οποιαδήποτε απόκριση του ιστοτόπου. Αντίστροφα, μη κενό σώμα μπορεί να συνοδεύει 403, 404 ή 429. Διαβάστε το CURLINFO_RESPONSE_CODE μαζί με το αποτέλεσμα σφάλματος cURL για να κρίνετε αν το ολοκληρωμένο αίτημα εξυπηρετεί την εργασία σας.