我正在嘗試登錄https://www.amzreviewtrader.com/(感謝https://www.amzreviewtrader.com/account.php頁面)。 我注意到總會有一個令牌會隨着每次刷新而改變。所以第一次捲曲我得到它。 之後,我嘗試使用post方法傳遞令牌,電子郵件和密碼。但我無法登錄,我不知道爲什麼。用令牌登錄php curl
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");
}
它可能是反CSRF令牌,這將改變你每次加載網址的時間。 –
朋友,令牌基於phpidsession。 – Joseph