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);
  • Вопрос задан
  • 5051 просмотр
Решения вопроса 1
maddog670
@maddog670 Автор вопроса
Решил сам. Всем спасибо.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽