2016-07-14 2 views
0

Я пытаюсь войти в https://www.amzreviewtrader.com/ (спасибо https://www.amzreviewtrader.com/account.php страница). Я заметил, что всегда есть токен, который изменит каждое обновление. Так что с первым завитком я получу его. После этого я пытаюсь передать токен, адрес электронной почты и пароль с помощью метода post. но я не могу войти, я не знаю почему.Войти с php curl with token

function grab_page($site){ 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
     curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
     curl_setopt($ch, CURLOPT_TIMEOUT, 40); 
     curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); 
     curl_setopt($ch, CURLOPT_URL, $site); 
     ob_start(); 
     return curl_exec ($ch); 
     ob_end_clean(); 
     curl_close ($ch); 
    } 

    function login($url){ 

    $get_token = curl_init($url); 
     curl_setopt($get_token, CURLOPT_COOKIEJAR, "cookie.txt"); 
     curl_setopt($get_token, CURLOPT_COOKIEFILE, "cookie.txt"); 
     curl_setopt($get_token, CURLOPT_TIMEOUT, 40000); 
     curl_setopt($get_token, CURLOPT_RETURNTRANSFER, TRUE); 
     curl_setopt($get_token, CURLOPT_URL, $url); 
     curl_setopt($get_token, CURLOPT_FOLLOWLOCATION, TRUE); 
     $response = curl_exec($get_token); 
     $html = str_get_html($response); 
     $token = $html->find('div.col-xs-12 form.form-horizontal input')[0]->value; 
     echo $token; 

     $login = curl_init($url); 
     curl_setopt($login, CURLOPT_COOKIEJAR, "cookie.txt"); 
     curl_setopt($login, CURLOPT_COOKIEFILE, "cookie.txt"); 
     curl_setopt($login, CURLOPT_TIMEOUT, 40000); 
     curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE); 
     curl_setopt($login, CURLOPT_URL, $url); 
     curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE); 
     curl_setopt($login, CURLOPT_POST, TRUE); 
     curl_setopt($login, CURLOPT_POSTFIELDS, "account_token=".$token."&[email protected]&password=xxxxxxx"); 
     return curl_exec(); 
     curl_close(); 

     grab_page("https://www.amzreviewtrader.com/product-list.php"); 
    } 
+0

это, вероятно, анти-CSRF токен, который будет меняться каждый раз при загрузке URL-адрес. –

+0

Друг, токен основан на phpidsession. – Joseph

ответ

1

Вы можете сделать что-то вроде этого, чтобы получить маркер:

function getStr($string,$start,$end){ 
$str = explode($start,$string); 
$str = explode($end,$str[1]); 
return $str[0]; 
    } 

    $token = getStr($url, 'var token = "','"'); 
+0

Я просто получаю токен. Проблема заключается в входе в систему. – Joseph

+1

Попробуйте кодировать токен с помощью: '. .rawurlencode ($ token).". – Vinny

+0

Ничего моего друга. Я попытался поставить эхо после curl_setopt ($ login, CURLOPT_POSTFIELDS, "account_token =". $ token. "& [email protected]&password=xxxxxxx"); return curl_exec(); но он не печатает мою строку! – Joseph