2014-10-02 3 views
0

Я использовал, чтобы получить некоторую информацию на веб-сайте, используя curl для входа и отображения информации, но теперь на веб-сайте используется cloudflare. Проблема в том, что я не могу выполнить перенаправление, потому что на сайте используется javascript.PHP Curl wrong redirect

Я думаю, что это может быть довольно просто решить, потому что я использую PHP локон на локальном хосте, и через 5 секунд сообщения «Проверка браузера перед обращением к примеру.» Перенаправляет меня: www.localhost/LINKOFTHEREDIRECT вместо перехода на www.example.com/LINKOFTHEREDIRECT и показывая мне правильную веб-страницу.

Вот мой код:

<?php 

$url0 = "http://example.com/login.php"; 
$url = "http://example.com/pageIwant.php"; 

    $user_agent='Mozilla/5.0 (Windows NT 6.3; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0'; 

    $options = array(
     CURLOPT_USERAGENT  => $user_agent, //set user agent 
     CURLOPT_COOKIESESSION => true,  // enable cookies 
     CURLOPT_COOKIEFILE  =>"C:/Program Files/XAMPP/htdocs/cp/cookies.txt", //set cookie file 
     CURLOPT_COOKIEJAR  =>"C:/Program Files/XAMPP/htdocs/cp/cookies.txt", //set cookie jar 
     CURLOPT_CUSTOMREQUEST =>"GET",  //set request type post or get 
     CURLOPT_POST   =>false,  //set to GET 
     CURLOPT_RETURNTRANSFER => true,  // return web page 
     CURLOPT_HEADER   => false, // don't return headers 
     CURLOPT_FOLLOWLOCATION => true,  // follow redirects 
     CURLOPT_ENCODING  => "",  // handle all encodings 
     CURLOPT_AUTOREFERER => true,  // set referer on redirect 
     CURLOPT_CONNECTTIMEOUT => 20,  // timeout on connect 
     CURLOPT_TIMEOUT  => 20,  // timeout on response 
     CURLOPT_MAXREDIRS  => 10,  // stop after 10 redirects 
    ); 

    $ch0  = curl_init($url0); 
    curl_setopt_array($ch0, $options); 
    $content0 = curl_exec($ch0); 
    curl_close($ch0); 

    $ch  = curl_init($url); 
    curl_setopt_array($ch, $options); 
    $content = curl_exec($ch); 
    $err  = curl_errno($ch); 
    $errmsg = curl_error($ch); 
    $header = curl_getinfo($ch); 
    curl_close($ch); 

    $header['errno'] = $err; 
    $header['errmsg'] = $errmsg; 
    $header['content'] = $content; 

    echo $content; ?> 

А вот JavaScript:.

<script type="text/javascript"> 
    //<![CDATA[ 
    (function() { 
    var a = function() { 
     try { 
      return !!window.addEventListener 
     } catch (e) { 
      return !1 
     } 
     }, 
     b = function(b, c) { 
     a() ? document.addEventListener("DOMContentLoaded", b, c) : document.attachEvent("onreadystatechange", b) 
     }; 
    b(function() { 
     var a = document.getElementById('cf-content'); 
     a.style.display = 'block'; 
     setTimeout(function() { 
     var t, r, a, f, YvDgwfU = { 
      "uxTkX": +((+!![] + []) + (!+[] + !![])) 
     }; 
     t = document.createElement('div'); 
     t.innerHTML = "<a href='/'>x</a>"; 
     t = t.firstChild.href; 
     r = t.match(/https?:\/\//)[0]; 
     t = t.substr(r.length); 
     t = t.substr(0, t.length - 1); 
     a = document.getElementById('jschl-answer'); 
     f = document.getElementById('challenge-form');; 
     YvDgwfU.uxTkX *= +((!+[] + !![] + !![] + !![] + []) + (!+[] + !![] + !![] + !![])); 
     YvDgwfU.uxTkX -= +((+!![] + []) + (!+[] + !![] + !![] + !![] + !![] + !![] + !![])); 
     YvDgwfU.uxTkX -= +((!+[] + !![] + !![] + !![] + !![] + []) + (+[])); 
     a.value = parseInt(YvDgwfU.uxTkX, 10) + t.length; 
     f.submit(); 
     }, 5850); 
    }, false); 
    })(); 
    //]]> 
</script> 
+0

Вы никогда не будете получать cURL, чтобы следить за переадресацией javascript в любом из мода. Вам нужно будет проанализировать документ для javascript и попытаться получить оттуда (если возможно), куда будет отправлен перенаправление. –

ответ

0

"сообщение "Проверка браузера перед обращением к примеру" перенаправляет меня"

Независимо от вас «Выполнение - это запуск правила DDoS на сайте и/или владелец сайта решил включить эту функцию.

Если веб-сайт одобрен, когда вы делаете то, что делаете, вы должны попросить владельца сайта ввести белый список IP-адресов, с которых вы это делаете.