Добрый вечер. Мне нужен парсер с авторизацией на сайте. На этапе авторизации я застопорился. Пишет ошибку
The change you wanted was rejected. Maybe you tried to change something you didn't have access to.
На странице авторизации
https://www.allbestbets.ru/users/sign_in в исходнике имеется meta тэг
csrf-token и в самой форме
authenticity_token. Кто может объяснить, в чем моя ошибка. Код прикладываю.
Class Parse {
public function token($url){
$html = file_get_contents($url);
preg_match('/<meta name=\"csrf-token\" content=\"(.*)\"/iu', $html, $authCode);
if(!empty($authCode)) return urlencode($authCode[1]);
}
public function authSite($cfg){
$userAgent = explode("\n", $cfg['useragents']);
$random = mt_rand(0, $cfg['count_ua']);
//$headers = explode("\n", $cfg['headers']);
$ch = curl_init($cfg['sign_in']);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent[$random]);
curl_setopt($ch, CURLOPT_COOKIEJAR, ENGINE_DIR.'/data/'.$cfg['cookie']);
curl_setopt($ch, CURLOPT_COOKIEFILE, ENGINE_DIR.'/data/'.$cfg['cookie']);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Content-Type:application/x-www-form-urlencoded',
'Origin:https://www.allbestbets.ru',
'Referer:https://www.allbestbets.ru/users/sign_in'
));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$postData = "utf8=%E2%9C%93&authenticity_token=".$this->token($cfg['sign_in'])."&abb_user%5Bemail%5D=".$cfg['email']."&abb_user%5Bpassword%5D=".$cfg['password']."&abb_user%5Bremember_me%5D=1";
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
$data = curl_exec($ch);
echo $data;
curl_close($ch);
}
}
$pr = new Parse();
$pr->authSite($parserCfg);