php Авторизация с помощью curl

Авторизация с помощью curl

php

Рассмотрим случай, когда форма содержит скрытоe поле для защиты от CSRF-атаки. Поэтому необходимо получить страницу с формой, забрать скрытые данные, затем отправить post-запрос для авторизации и затем перейти на страницу личного кабинета (если нет редиректа после авторизации).

При этом будем сохранять cookies в файл $cookiefile.

Так как часто требуется точно моделировать браузер, то есть указывать нужные заголовки (иначе запрос отклоняется), то установим программу Burp Suite (бесплатную версию) и добавим через браузер прокси 127.0.0.1:8080. Браузер надо будет перезагрузить. При этом выключим intercept (это возможность останавливать запрос, корректировать и отправлять после этого по назначению).

Еще придется добавить сертификат cacert.der (выгрузить файл из Burp Suite).

Далее отправляем запросы с браузера и с curl и сравниваем в Proxy/HTTP History: все отличия добавляем в curl.

На время работы с proxy добавляем строки:

Возможна проблема с кодировкой. То есть с proxy все правильно, без - не работает (например, ошибка Malformed UTF-8 characters, possibly incorrectly encoded). Кроме преобразования кодировки можно еще попробовать изменить или удалить строку 'Accept-Encoding: gzip, deflate'.

Фрагмент кода:

Обратите внимание на функцию http_build_query, чтобы заменить символы +, : и др. на %2B и т.п.

Если https, то добавляем

все вопросы по php

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *