2015-11-19 3 views
-4

У меня есть такая форма, и мне нравится входить в систему с curl php, а csrf изменяется каждый раз, когда я запускаю код. пожалуйста, помогите мне сделать это.Войти с помощью токена CURL php и CSRF

мое имя пользователя: arasharash13721372

мой пароль: 123789

Войти URL: http://www.parscoders.com/login

<form action="/login_check" method="post"> 
<input type="hidden" name="_csrf_token" value="NBGeQMmLr09KcrvwTCfDQhZSiLFy3XLODDsErdyBVUg" /> 
        <input type="hidden" name="_target_path" value="account" />     <div class="form-group"> 
         <label for="username">نام کاربری:</label> 
         <input class="form-control ltr monospace" type="text" id="username" name="_username" value="" /> 
        </div> 
        <div class="form-group"> 
         <label for="password">رمز عبور:</label> 
         <input class="form-control ltr" type="password" id="password" name="_password" /> 
        </div> 
        <div class="form-group"> 
         <div class="pull-right"> 
          <div class="checkbox"> 
           <label for="remember_me"> 
            <input type="checkbox" id="remember_me" name="_remember_me" value="on" /> 
            مرا به یاد بسپار</label> 
          </div> 
         </div> 
         <div class="pull-left checkbox"> 
          <a href="/resetting/request"> 
           بازنشانی رمز عبور 
          </a> 
         </div> 
         <div class="clear"></div> 
        </div> 
        <div class="form-group"> 
         <input type="submit" id="_submit" name="_submit" value="ورود" class="btn btn-primary btn-lg" /> 
        </div> 
       </form> 
+0

Вы должны ломом страницу (первый запрос), возьмите CSRF токен и построить свой локон запрос с ним (Seconde запрос). – Calimero

+0

, пожалуйста, дайте мне код. я не понимаю –

+0

noones собираюсь запрограммировать его для вас, если вы не предлагаете нанять кого-то – DevDonkey

ответ

0

Согласно упомянутым выше описанию и предположению, что вы будете размещать данные из указанных выше формы, пожалуйста, попробуйте запустить следующий фрагмент кода для выполнения входа в действие с завитком в PHP.

$ _POST суперглобальный переменная будет содержать данные формы, представленные в виде

$ch=curl_init(); 
$url='http://www.parscoders.com/login'; 
// $_POST=array('_csrf_token'=>'mikq09ufTuaO3aXMV4Xu-wJPnxm6t4DB1GTlnzf_BxA','_target_path'=>'account','_username'=>'arasharash13721372','_password'=>'123789','_submit'=>'&#1608;&#1585;&#1608;&#1583;'); 
$fields_string=http_build_query($_POST); 
curl_setopt($ch,CURLOPT_URL, $url); 
curl_setopt($ch,CURLOPT_POST, 1); 
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 

//execute post 
$result = curl_exec($ch) or exit(curl_error($ch)); 
print_r($result); 

//close connection 
curl_close($ch); 
+0

дать мне ошибку, когда я запустил ее –

+0

Спасибо @arashhonarvar за вашу быструю обратную связь. Попробуйте выполнить скрипт еще раз, поскольку я заполнил массив $ _POST данными из полей формы, а также в приведенном выше ответе я упомянул, что с предположением о том, что вы опубликуете данные из вышеупомянутой формы –

+0

, спасибо, но токен csrf помечается каждый раз, когда я запускаю код и это проблема для меня –

0

Получение маркер был легкий бит ... Я не читаю арабский, так это сложно - вам нужно будет поиграть со скручивающимися вещами и, вероятно, также неясным вашим именем пользователя и паролем.

<?php 
    error_reporting(E_ALL); 

    $url='http://www.parscoders.com/login'; 
    $field='_csrf_token'; 
    $csrftoken=false; 
    /* Grab the html so we can extract the token */ 
    $html=file_get_contents($url); 

    /* Create DOMDocument to parse the html */ 
    libxml_use_internal_errors(true); 
    $dom=new DOMDocument; 
    $dom->validateOnParse=false; 
    $dom->recover=true; 
    $dom->formatOutput=false; 
    $dom->loadHTML($html); 
    libxml_clear_errors(); 

    /* Use an XPath query to find the relevant info */ 
    $xpath=new DOMXPath($dom); 
    $col=$xpath->query('//input[@name="'.$field.'"]'); 
    foreach($col as $node) $csrftoken=$node->getAttribute('value'); 

    /* If you found the token, initialise curl */ 
    if($csrftoken){ 

     $params=array(
      $field   => $csrftoken, 
      '_target_path' => 'account', 
      '_username'  => 'arasharash13721372', 
      '_password'  => '123789', 
      '_remember_me' => 'on', 
      '_submit'  => 'ورود' 
     ); 

     $curl=curl_init($url); 

     curl_setopt($curl, CURLOPT_AUTOREFERER, true); 
     curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
     curl_setopt($curl, CURLOPT_FRESH_CONNECT, true); 
     curl_setopt($curl, CURLOPT_FORBID_REUSE, true); 
     curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); 
     curl_setopt($curl, CURLOPT_CLOSEPOLICY, CURLCLOSEPOLICY_OLDEST); 
     curl_setopt($curl, CURLOPT_MAXCONNECTS, 1); 
     curl_setopt($curl, CURLOPT_FAILONERROR, true); 
     curl_setopt($curl, CURLOPT_HEADER, true); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 15); 
     curl_setopt($curl, CURLOPT_TIMEOUT, 90); 
     curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla - login...'); 
     curl_setopt($curl, CURLINFO_HEADER_OUT, true); 

     curl_setopt($curl, CURLOPT_POST, true); 
     curl_setopt($curl, CURLOPT_POSTFIELDS, $params); 

     $payload=array_filter(array(
       'response' => curl_exec($curl), 
       'info'  => curl_getinfo($curl), 
       'errors' => curl_error($curl) 
      ) 
     ); 
     curl_close($curl); 

     print_r($payload); 
    } 

?> 
+0

спасибо, но он показывает мою регистрационную форму, когда я запускаю этот код –

+0

Как я уже сказал, вам нужно будет поиграть со скручиваемостью - сайт, вероятно, устанавливает файлы cookie, которые вам нужно учитывать. Большинство процессов нужно позаботиться, хотя с кодом выше - мне нужно пойти и сделать некоторые серверные материалы 2012 года - удачи. – RamRaider

+0

спасибо большое. Я пытаюсь –

Смежные вопросы