2011-12-07 19 views
1
  1. Script output (壊れた)
  2. Start page
  3. Frame page
  4. End page

私が欠けているかを把握することはできません。 Firefoxのリクエストヘッダーを模倣しようとしましたが、動作しません。 また、フレームページは、javascript ajaxリクエストを使用して終了ページに到達します。 $post_to_link(下のコードを参照)にデータを投稿し、(私のcurrent resultではなく)に移動し、megauploadリンクが配置されます。PHP:curlまたはfile_get_contentsを使用して正しいAjax応答を取得できません。

予想される出力:/membersonly/components/com_iceplayer/GMorBMlet.php?url=http%3A%2F%2Fwww.megaupload.com%2F%3Fd%3DVNICBFWL&

電流出力:

  • ここでのfile_get_contents出力3つの
  • カール出力エラー403アクセス禁止

が私のコードです:

// call it like so... 
    echo GetHosterLink(1148, 252636, '', '37fn8Oklq', 15, -75); 
    // $s is incremented every second you are 'visiting' the referer page 
    // $m decreases below zero when you move your mouse `down` on the start page 

    function GetHosterLink($id, $link_id, $cap, $sec, $s, $m) 
    { 

     $link_page = str_replace('[ID]', $id, 'http://www.icefilms.info/membersonly/components/com_iceplayer/video.php?vid=[ID]'); 
     $post = "id={$link_id}&s={$s}&iqs=&url=&m={$m}&cap=&sec={$sec}&t={$id}"; 

     $header = implode("\r\n", array(
      "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 
      "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7", 
      "Accept-Encoding: gzip, deflate", 
      "Accept-Language: en-us,en;q=0.5", 
      "Cache-Control: no-cache", 
      "Connection: keep-alive", 
      "Content-Length: " . strlen($post), 
      "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", 
      "Host: www.icefilms.info", 
      "Pragma: no-cache", 
      "Referer: http://www.icefilms.info/membersonly/components/com_iceplayer/video.php?h=374&w=631&vid={$id}&img=", 
      "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0" 
     )); 

     $opts = array('http' => 
      array(
       'method' => 'POST', 
       'header' => implode("\r\n", 
        array(
         'Content-type: application/x-www-form-urlencoded', 
         'Content-length: ' . strlen($post), 
         'Referer: ' . $link_page . '&h=374&w=631', 
         'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0', 
         'Host: www.icefilms.info' 
        ) 
       ), 
       'content' => http_build_query(
        array(
         'id' => $link_id, 
         's' => $s, 
         'sec' => $sec, 
         't' => $id, 
         'm' => $m, 
         'iqs' => '', 
         'url' => '', 
         'cap' => '' 
        ) 
       ) 
      ) 
     ); 

     $context = stream_context_create($opts); 

     $post_to_link = 'http://www.icefilms.info/membersonly/components/com_iceplayer/video.phpAjaxResp.php'; 
     $get_result = file_get_contents($post_to_link, false, $context); 

     $f_result = cURL::DoRequest($post_to_link, $post, '', 
      array(array(CURLOPT_HTTPHEADER, $header))); 

     $f_r = array(
      'result' => $f_result, 
      'get_result' => $get_result, 
      'get_opts' => $opts, 
      'get_response' => $http_response_header, 
      'req_post' => $post, 
      'req_href' => $post_to_link, 
      'req_header' => $header 
     ); 

     return ($f_r); 

    } 
ここ

curl.phpファイルです:

class cURL 
{ 

    public static function DoRequest($url, $post = '', 
     $cookie_file = '', $variables = array()) 
    { 

     $curl = curl_init(); 
     @session_start(); 
     $cookie = ('PHPSESSID=' . session_id() . '; path=/'); 
     @session_write_close(); 

     curl_setopt($curl, CURLOPT_URL, $url); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($curl, CURLOPT_COOKIE, $cookie); 

     if (!empty($cookie_file)) 
     { 

      curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file); 
      curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_file); 

     } 

     if (!empty($post)) 
     { 

      //curl_setopt($curl, CURLOPT_POST, 1); 
      curl_setopt($curl, CURLOPT_POSTFIELDS, $post); 

     } 

     foreach ($variables as $var) 
      curl_setopt($curl, $var[0], $var[1]); 

     $result = curl_exec($curl); 
     curl_close($curl); 

     return ($result); 

    } 

} 
+3

誰もが援助を必要とします。あなたの問題が何であるかをタイトルにまとめてください。 – random

+0

[tag:gimme-codez]? – Neal

+0

タイトルを変更しました。 –

答えて

3

がカールして最初のページ(あなたが$link_pageで持っている1のURL)を訪問してみて、あなたは内にポイントファイルを確認してください。

curl_setopt($curl, CURLOPT_COOKIE, $cookie); 

が存在し、書き込み可能です。

同じcurlリソースで$post_to_link URLをリクエストしてください。

最初のページにアクセスすると、Cookieが取得され、次のリクエストに有効なセッションがあることが確認されます。それはまたヘッダーで提供するリファラーを確保します。 "自動"リクエストを把握する方法はたくさんあります。クッキーのチェックや、実際に "referer"のリンクを訪問したのかどうかは非常に一般的です。

+0

まさに私が考えていたもの: – s3v3n

+0

+1これはセッション/クッキーで保護されたメンバーエリアだと思います。カールを使用してログインし、クッキーを取得し、保存されたクッキーを再利用することは適切なトラックのようです。 – Kaii

関連する問題