2016-05-04 31 views
0

私たちはクライアントのページから重要な情報を引き出すためにPHPで構築されたクローラを持っています。問題は、ほとんどのお客様が302を使用して最終的な目的地に行くカスタム短縮リンクを投稿することです。私たちのクローラは、この最新クライアントまで、これらのコードを実行するのに成功しています(下記のコードを参照)。ブラウザでそこに行く場合は、標準の302の行動を見ることができますPHP cURLリクエストがリダイレクトされない

http://www.dose.com/lists/26235/s

ていますが、クローラーとそれを訪問した場合、それは単に200を返し、リダイレクトされません。ここではサンプルのリンクです。これにより、私は要求をできるだけ自然なものに見せなければならないと信じていましたが、まだ成功していませんでした。最後に、コードのcURLセクションを次に示します。

function sendRequest($url) 
{ 
    global $ch; 
    $user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5)". 
       " Gecko/20041107 Firefox/1.0"; 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
     'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 
     'Accept-Language: en-US,en;q=0.8', 
     'Connection: keep-alive' 
    )); 
    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); 
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_ENCODING, ''); 

    $contents = curl_exec($ch); 
    //curl_close($ch); 

    return $contents; 
} 

編集しても問題は解決しません。

+1

http://www.dose.com/lists/26235/s - リターンあなたが正しい –

+0

'301は永久に移動'。その訂正をありがとう。まだcURLがそれに苦労している理由はまだ分かりません。 –

答えて

1

あなたはまだなっていない場合は、手動でgzdecodeを使用して、その機能の応答を膨らませる必要があります()

にも良い方法ではなく、圧縮自体を処理するためにカールを伝えるためにあるかもしれません手動で指定します。 Accept-Encodingヘッダー行を削除して追加してみてください:

curl_setopt($ch, CURLOPT_ENCODING, ''); 
+0

このチップをありがとう。ヘッダーはこの問題を修正するための新しい追加項目なので、私はこれを考慮しませんでした。残念ながら、この問題は依然として続きます。 –

関連する問題