Η επιλογή proxy του Guzzle δέχεται πλήρες URL τελικού σημείου. Ορίστε την στο αίτημα όταν μόνο αυτή η λειτουργία πρέπει να χρησιμοποιεί την επιλεγμένη IP.

<?php
require __DIR__ . '/vendor/autoload.php';

$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://example.com/', [
    'proxy' => 'http://203.0.113.10:8080',
    'connect_timeout' => 5,
    'timeout' => 15,
    'http_errors' => false,
]);

echo $response->getStatusCode(), PHP_EOL;
echo (string) $response->getBody();

Το παράδειγμα προϋποθέτει Guzzle 7 εγκατεστημένο μέσω Composer. Αντικαταστήστε τη διεύθυνση τεκμηρίωσης με πραγματικό HTTP proxy από τον πάροχο ή τη λίστα HTTP proxy. Κρατήστε τον προορισμό στο URL του αιτήματος: το proxy είναι ενδιάμεσος, όχι ο πόρος που κατεβαίνει.

Εδώ το http_errors είναι false ώστε μια απάντηση σφάλματος HTTP να παραμένει διαθέσιμη για εξέταση. Αποτυχίες σύνδεσης εξακολουθούν να εγείρουν εξαιρέσεις μεταφοράς. Ένα τούνελ HTTPS που απορρίπτεται κατά τη δημιουργία μπορεί έτσι να αποτύχει πριν λάβετε συνηθισμένο αντικείμενο απάντησης ιστοτόπου.

Ελέγξτε τον χειριστή αν τα όρια σύνδεσης συμπεριφέρονται διαφορετικά

Το Guzzle μπορεί να χρησιμοποιεί διαφορετικούς χειριστές HTTP. Η τεκμηρίωση λέει ότι ο ενσωματωμένος χειριστής cURL υποστηρίζει το connect_timeout. Προσαρμοσμένος χειριστής ή περιβάλλον χωρίς PHP cURL δεν είναι απαραίτητα ισοδύναμο. Ελέγξτε τον χειριστή της εφαρμογής πριν υποθέσετε ότι μια αντιγραμμένη επιλογή χρονικού ορίου λειτουργεί.

Αξίζει να ορίσετε και το συνολικό timeout. Εγγραφές δωρεάν λιστών μπορεί να σταματήσουν να απαντούν μεταξύ ελέγχων και η προεπιλογή δεν είναι χρήσιμη προθεσμία για αίτημα που πρέπει να τελειώσει γρήγορα.

Χρήση χάρτη proxy

Ένας χάρτης επιτρέπει επιλογή διαδρομών ανά σχήμα προορισμού και ρητή παροχή κεντρικών υπολογιστών που παρακάμπτουν το proxy:

'proxy' => [
    'http' => 'http://203.0.113.10:8080',
    'https' => 'http://203.0.113.10:8080',
    'no' => [],
],

Χρησιμοποιήστε αυτόν τον πίνακα αντί της συμβολοσειράς. Το κλειδί HTTPS επιλέγει προορισμούς HTTPS· η τιμή HTTP περιγράφει ακόμη τον ακροατή του proxy. Διαφορετικό πρωτόκολλο ακρόασης απαιτεί διαφορετική ρύθμιση τελικού σημείου.

Όταν δίνετε μόνοι σας την επιλογή proxy του αιτήματος, το Guzzle περιμένει και τις επιθυμητές τιμές no από εσάς, αντί να τις αντιγράφει αυτόματα από το NO_PROXY. Κενή λίστα είναι χρήσιμη για απομονωμένη δοκιμή proxy. Αν η εφαρμογή έχει σκόπιμους κανόνες παράκαμψης, διατηρήστε τους ρητά.

Σχετικά άρθρα