2016-10-23 9 views
0

CURLとリダイレクトCURLとリダイレクト

こんにちは。

私はいくつかのサイトを確認するためにCURLを使用しています。私は一部のリダイレクトに問題があります。毎回ではなく、ほんの数例です。

この場合、302コードがありますが、リダイレクトURLは元のURLと同じです。 CURL変数の

ダンプ:

array(23) { 
["url"]=> string(33) "http://www.apostasurpresa.gov.br/" 
["content_type"]=> string(24) "text/html; charset=UTF-8" 
["http_code"]=> int(302) 
["header_size"]=> int(180) 
["request_size"]=> int(92) 
["filetime"]=> int(-1) 
["ssl_verify_result"]=> int(0) 
["redirect_count"]=> int(0) 
["total_time"]=> float(0.037685) 
["namelookup_time"]=> float(0.000171) 
["connect_time"]=> float(0.018808) 
["pretransfer_time"]=> float(0.01882) 
["size_upload"]=> float(0) 
["size_download"]=> float(0) 
["speed_download"]=> float(0) 
["speed_upload"]=> float(0) 
["download_content_length"]=> float(0) 
["upload_content_length"]=> float(0) 
["starttransfer_time"]=> float(0.037521) 
["redirect_time"]=> float(0) 
["redirect_url"]=> string(33) "http://www.apostasurpresa.gov.br/" 
["primary_ip"]=> string(15) "200.201.166.106" 
["certinfo"]=> array(0) { } } 

カールページ:

$ch = curl_init();  
curl_setopt($ch, CURLOPT_AUTOREFERER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,60); 
curl_setopt($ch, CURLOPT_COOKIESESSION , 1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt'); 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt'); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST ,'GET'); 
//  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
//  curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_HEADER, 1); // true 
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); 
curl_setopt($ch, CURLOPT_POST, 0); 
curl_setopt($ch, CURLOPT_POSTREDIR, 6);// 3 => 6 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // false 
curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0"); 
$txt_pagina = curl_exec($ch); 
$info=curl_getinfo($ch); 
curl_close($ch); 

おかげ

+0

私はcurl_setopt($ ch、CURLOPT_FOLLOWLOCATION、0)を試しました。 と同じ結果を持つcurl_setopt($ ch、CURLOPT_FOLLOWLOCATION、1)。 – RSLyra

+0

ブラウザのページにアクセスするとどうなりますか?サーバーがあなたのユーザーエージェントに満足していない可能性があり、したがってループでリダイレクトしている可能性がありますか? 「本当の」ブラウザのユーザーエージェント文字列を使用してみてください... – ivanivan

+0

http://loterias.caixa.gov.br/wps/portal/loterias/にリダイレクトしてください。 – RSLyra

答えて

0

OK、コメントの後に答えを次:)

私はこれをチェックしますwgetを使用すると実際にポータルページのURLに着く前にいくつかの場所にリダイレクトされますあなたは上記のとおりです。

元のURLは302をスローし、301に戻り、次に301にリダイレクトします。リダイレクトされたURLは多くのjavascriptを返し、javascriptはリダイレクトします。 ... JavaScriptをリダイレクトするために

ので...解決策を解析されていないため、

だからあなたのコードは動作しません。なぜ複数のリダイレクトを扱うのではなく、単にポータルページを指すのではないでしょうか? URLが/で終わらない場合は、URLとしてhttp://loterias.caixa.gov.br/wps/portal/loterias/を使用してください。

+0

これは解決策です。 しかし... 私は政府の登録ドメインの公式のリストを持っており、これは私のスターポイントです。 www.apostasurpresa.gov.brからloterias.caixa.gov.br/wps/portal/loteriasに変更して明日このリダイレクトを変更した場合、間違ったドメインを確認します。 私がチェックしていることは、同じページに行くリダイレ​​クトです。 問題にもっと光を当てていただきありがとうございます。 – RSLyra

関連する問題