maddog670
@maddog670

Ошибка The change you wanted was rejected, в чем причина?

Добрый вечер. Мне нужен парсер с авторизацией на сайте. На этапе авторизации я застопорился. Пишет ошибку The change you wanted was rejected. Maybe you tried to change something you didn't have access to.
e60b3c4795e04622b5850432576a518f.png
На странице авторизации 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);
  • Вопрос задан
  • 5281 просмотр
Решения вопроса 1
maddog670
@maddog670 Автор вопроса
Решил сам. Всем спасибо.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы