2015-10-03 19 views
10

次のコードがありますが、常に407 HTTPステータスコードが返されます。私はがつがつ食う6とグットを使用していますGoutteでプロキシ認証を使用するには?

$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 

私はsetDefaultOptionでプロキシを設定しようとして始めましたが、この方法が推奨されていません。それは、コマンドラインでcurlで動作するよう

私のユーザ名と空のパスワードは間違いなく正しいです:

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

私はこの上でいくつかの時間を費やしていると私は任意の助けをいただければ幸いです!

+0

クライアントがHTTP1.1の代わりにHTTP1を使用しようとしたときに発生する可能性があります。 - curl_setopt($ curl、CURLOPT_HTTP_VERSION、CURL_HTTP_VERSION_1_1);クライアントが内部でどのように動作しているかわからない。あなたのカールバージョンを確認してください。 – DannyZB

+0

難しいです。 Wiresharkを使用して、ネットワーク層で要求を検査します。また、PHPとGuzzleでCurlHandlerを使用してcURL拡張機能を有効にしていることを確認してください。プロキシIPの前に '@' charがあるのはなぜですか?また、 'http://[email protected]:8010'のようなプロキシアドレスを試して、' auth'オプションを省略することもできます。 – kba

+0

@Abs:どのようにしてプロキシの問題を解決しましたか?私に知らせることができますか? – 06011991

答えて

1

プロキシオプションを使用してクライアントを直接インスタンス化しようとしましたか?このよう

$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:この解決法は私のためには機能しません。プロキシIPではなく私のローカルシステムのIPを返します。あなたはこれのためのいくつかの解決策を提案できますか? – 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; 

私はそれがクライアント構成ではなく、リクエストパラメータだと仮定します。

関連する問題