2017-05-15 5 views
-1

私はcURLを使用してウェブサイトを取得しています。私はログインページを取得し、cURLを使用してPOSTフォーム上の認証情報の詳細を正常に送信するためにログインすることができます。 GETを使用して次のページを取得しようとすると(WebブラウザがデバッグユーティリティのNetworkセクションに報告するので、Webブラウザは通常表示されるページを表示しますが、cURLは別のページ(ログインページ)を表示します。 。。?私は私のcURLのスクリプトで有効になって、それはクッキーで遊んでいた場合には、私はJavascriptを無効にしようとしたが、それはまだそれなしでブラウザで働いていた私は他に何が足りないのですなぜcURLはウェブブラウザと同じように動作しません

ここのクッキーは私のカールスクリプトですしている:

function HttpGet($url) 
{ 
    $header = array(); 
    $header[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; 
    $header[] = 'Cache-Control: max-age=0'; 
    $header[] = 'Connection: keep-alive'; 
    $header[] = 'Keep-Alive: 300'; 
    $header[] = 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7'; 
    $header[] = 'Accept-Language: en-us,en;q=0.5'; 
    $header[] = 'Pragma: '; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 

    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)'); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
    curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_ENCODING, ''); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    //curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
    curl_setopt($ch, CURLOPT_COOKIESESSION, true); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 

    if (! $html_content = curl_exec($ch)) 
    { 
     trigger_error(curl_error($ch)); 
    } 

    echo "CURLINFO_EFFECTIVE_URL: " . curl_getinfo($ch, CURLINFO_EFFECTIVE_URL) . "\n"; 
    echo "CURLINFO_HTTP_CODE: " . curl_getinfo($ch, CURLINFO_HTTP_CODE) . "\n"; 

    curl_close ($ch); 
    return $html_content; 
} 

function HttpPost($address, $fields, $outputFilename, $currentUrl) 
{ 
    $header = array(); 
    $header[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; 
    $header[] = 'Cache-Control: max-age=0'; 
    $header[] = 'Connection: keep-alive'; 
    $header[] = 'Keep-Alive: 300'; 
    $header[] = 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7'; 
    $header[] = 'Accept-Language: en-us,en;q=0.5'; 
    $header[] = 'Pragma: '; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $address); 
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)'); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
    curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_ENCODING, ''); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_COOKIESESSION, true); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 

    foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } 
    $fields_string = rtrim($fields_string, '&'); 

    curl_setopt($ch,CURLOPT_POST, count($fields)); 
    curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); 

    if (! $html_content = curl_exec($ch)) 
    { 
     trigger_error(curl_error($ch)); 
    } 

    $currentUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 
    echo "CURLINFO_EFFECTIVE_URL: " . curl_getinfo($ch, CURLINFO_EFFECTIVE_URL) . "\n"; 
    echo "CURLINFO_HTTP_CODE: " . curl_getinfo($ch, CURLINFO_HTTP_CODE) . "\n"; 

    curl_close ($ch); 
    return $html_content; 
} 
+0

なぜ-1ですか?私は最後の2日間これを検索しています。 私は質問を改善できるように、いくつかの有益なコメントを送ってください。 – Pat

答えて

0

は理由がわかりました。私が使ったソースコードにはエラーがありました。

curl_setopt($ch, CURLOPT_COOKIESESSION, true); 

は、スクリプトが実行されるたびにCookieファイルをリセットするために使用されます。 これを削除すると、クッキーが残り、すべて正常に動作しています。

関連する問題