Хочу авторизоваться cURL'ом на странице и получить с нее данные. Заметил что при авторизации, точнее при переходе на сайт, генерируется каждый раз новое значение _csrf-backend , и когда ввести логин/пароль и нажать Войти - POST'ом передается этот самый сгенерированный _csrf-backend.
В форме он так выглядит:
<input type="hidden" name="_csrf-backend" value="m_C6kJjl6jmbREgSHpCAwIs8JkfekqhTtN7Lt1a-ftOqwdj2_4O6Ya4AL3dSovWC_nJ8IJfDmxHlkqXYD_Mc5Q==">
Еще я заметил что он есть в шапке сайта
<meta name="csrf-param" content="_csrf-backend"><meta name="csrf-token" content="m_C6kJjl6jmbREgSHpCAwIs8JkfekqhTtN7Lt1a-ftOqwdj2_4O6Ya4AL3dSovWC_nJ8IJfDmxHlkqXYD_Mc5Q==">
Как мне его получить до того как cURL будет авторизовываться на сайте (ну и подставить для авторизации).
Вот моя функция:
function login($url, $login, $pass){
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,"LoginForm[email]=".$login."&LoginForm[password]=".$pass."&_csrf-backend=".$csrf."&login-button=");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (Windows; U; Windows NT 5.0; En; rv:1.8.0.2) Gecko/20070306 Firefox/1.0.0.4");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
$result=curl_exec($ch);
curl_close($ch);
return $result;
}
Буду благодарен за помощь.
Попробуйте так вывести. Если вернет то это yii2
function login($url, $login, $pass){
$csrf = Yii::$app->request->getCsrfToken();
echo $csrf; die;
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,"LoginForm[email]=".$login."&LoginForm[password]=".$pass."&_csrf-backend=".$csrf."&login-button=");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (Windows; U; Windows NT 5.0; En; rv:1.8.0.2) Gecko/20070306 Firefox/1.0.0.4");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
$result=curl_exec($ch);
curl_close($ch);
return $result;
}
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
При переходе на страницу есть скрытое поле ввода, в котором уже есть какое-то значениеВопрос - как его получить до отправки формы? может быть...