2015-10-03 29 views
10

Aşağıdaki kodlarım var ancak her zaman bir 407 HTTP durum kodu döndürüyor. Ben guzzle 6. ile GOUTTE kullanıyorumGoutte ile proxy kimlik doğrulaması nasıl kullanılır?

$url = 'http://whatismyip.org'; 

$client = new Client(); 

$options = array(
    'proxy' => array(
     'http' => 'tcp://@x.x.x.x:8010', 
    ), 
    'auth' => array('d80fe9ebasab73d21a4', '', 'basic') 
); 

$crawler = $client->request('GET', $url, $options); 

$status = $client->getResponse()->getStatus(); 

echo $status; // 407 

Ben setDefaultOption ile proxy ayarlamak için çalışıyor başladı ancak bu yöntem kullanımdan kaldırıldı.

Kullanıcı adım ve boş şifre komut satırında curl ile çalışır olarak kesinlikle doğrudur: Bu konuda birkaç saat geçirdim ve herhangi bir yardım bekleriz

curl -U d80fe9ebasab73d21a4: -vx x.x.x.x:8010 http://whatismyip.org/ 

!

+0

Bir istemci HTTP1.1 yerine HTTP1 kullanmaya çalıştığında gerçekleşebilir - curl_setopt ($ curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); İstemcinin içeride nasıl çalıştığından emin değil .. Curl sürümünüzü kontrol edin – DannyZB

+0

Söylemek zor. Ağ katmanı üzerindeki isteği incelemek için Wireshark'ı kullanın. Ayrıca PHP'nizde cURL uzantısını etkinleştirdiğinizi ve Guzzle'un CurlHandler'ı kullandığını kontrol edin. Neden proxy IP'den önce '' 'char'ınız var? Aynı zamanda http: //[email protected]: 8010' gibi bir şey gibi proxy adresini de deneyebilir ve “auth” seçeneğini kullanabilirsiniz. – kba

+0

@Abs: Proxy sorununu nasıl çözdünüz? bana haber verir misin – 06011991

cevap

1

İstemcinizi doğrudan proxy seçenekleriyle eşleştirmeye çalıştınız mı? Bunun gibi

:

$url = 'http://whatismyip.org'; 

$client = new Client($url, array(
    'version'  => 'v1.1', 
    'request.options' => array(
     'auth' => array('d80fe9ebasab73d21a4', '', 'Basic'), 
     'proxy' => 'tcp://@x.x.x.x:8010' 
    ) 
)); 


$crawler = $client->request('GET', $url); 

$status = $client->getResponse()->getStatus(); 

echo $status; // 407 
+0

Stucken: Bu çözüm benim için çalışmıyor. kendi proxy IP yerine yerel sistem ipimi döndürüyor. Bunun için bir çözüm önerebilir misin? – 06011991

1
$config = [ 
    'proxy' => [ 
     'http' => 'xx.xx.xx.xx:8080' 
    ] 
]; 

$client = new Client($config); 
$client->setAuth('username', 'password', 'basic'); 

$crawler = $client->request('GET', $url); 
$status = $client->getResponse()->getStatus(); 

echo $status; 

Ben bir istemci yapılandırma, bir rica değil parametre herhalde.

İlgili konular