Setați un IP de proxy pentru o cerere Guzzle
Folosiți opțiunea proxy per cerere din Guzzle și înțelegeți timpul de conectare dependent de handler și lista explicită de ocolire.
Opțiunea proxy din Guzzle acceptă un URL complet de punct de conexiune. Setați-o pe cerere când doar acea operație trebuie să folosească IP-ul ales.
<?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();
Exemplul presupune Guzzle 7 instalat prin Composer. Înlocuiți adresa documentară cu un proxy HTTP real de la furnizor sau din lista de proxy-uri HTTP. Păstrați destinația în URL-ul cererii: proxy-ul este intermediarul, nu resursa descărcată.
Aici http_errors este false pentru ca răspunsul de eroare HTTP să rămână disponibil pentru examinare. Eșecurile de conectare încă aruncă excepții de transfer. Un tunel HTTPS refuzat la stabilire poate deci eșua înainte să primiți un obiect obișnuit de răspuns al site-ului.
Verificați handlerul când limitele de conectare se comportă diferit
Guzzle poate folosi mai multe handlere HTTP. Documentația spune că handlerul cURL inclus acceptă connect_timeout. Un handler propriu sau un mediu fără PHP cURL nu este neapărat echivalent. Verificați handlerul aplicației înainte să presupuneți că o opțiune de timp copiată are efect.
Merită setat și timeout general. Intrările listelor gratuite pot înceta să răspundă între verificări, iar valoarea implicită nu este un termen util pentru o cerere care trebuie să se încheie repede.
Utilizarea unei hărți de proxy-uri
Harta permite alegerea rutelor după schema destinației și furnizarea explicită a gazdelor care ocolesc proxy-ul:
'proxy' => [
'http' => 'http://203.0.113.10:8080',
'https' => 'http://203.0.113.10:8080',
'no' => [],
],
Folosiți acest tablou în locul opțiunii șir. Cheia HTTPS selectează destinații HTTPS; valoarea sa HTTP descrie în continuare listenerul proxy-ului. Alt protocol de ascultare cere altă configurare a punctului de conexiune.
Când furnizați singur opțiunea proxy a cererii, Guzzle așteaptă și valorile no dorite, în loc să le copieze automat din NO_PROXY. O listă goală este utilă pentru un test proxy izolat. Într-o aplicație cu reguli deliberate de ocolire, păstrați-le explicit.