Авторизация с помощью cURL в PHP – Блог о веб-разработке

Основной синтаксис команды curl

Итак, давайте узнаем, как пользоваться утилитой. Основной синтаксис Curl выглядит следующим образом:

curl [OPTIONS] [URL]

Проверяем доступность определённого веб сайта

Как узнать, доступен ли определённый веб сайт? cURL поможет ответить на данный вопрос. Данный скрипт можно использовать совместно с планировщиком для мониторинга сайта.

Замените URL в строке 3 на тот, который вам нужен.  Скопируйте код на свою страницу, и станет известно, доступен ли указанный сайт.

Замена cURL для функции file_get_contents()

Функция file_get_contents() очень полезная, но на многих хостингах она отключена. С помощью cURL можно написать функцию, которая будет работать в точности как file_get_contents().

function file_get_contents_curl($url) {$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Устанавливаем параметр, чтобы curl возвращал данные, вместо того, чтобы выводить их в браузер.curl_setopt($ch, CURLOPT_URL, $url);

$data = curl_exec($ch);curl_close($ch);

return $data;}

Загружаем и сохраняем изображения со страницы с помощью cURL

Данная функция может быть очень полезна: задаем ей URL страницы и она сохраняет все изображения с нее на вашем сервере.

Конвертируем валюту с помощью cURl и Google

Пересчет валюты достаточно простое дело, но курсы достаточно часто изменяются, поэтому приходится использовать сервисы, подобные Google, для получения текущих значений курса пересчета. Функция currency() получает 3 параметра: исходная валюта, целевая валюта и сумма.

Получаем информацию о размере файла с помощью cURL

Как определить размер определенного файла, расположенного на другом сервере? Поможет следующая функция. Она получает 3 параметра: URL файла, и (если требуется) имя пользователя и пароль.

Загрузка через FTP с помощью cURL

PHP имеет библиотеку FTP library, но также можно использовать cURL для загрузки файлов на FTP сервер. Вот рабочий пример:

// Открываем файл$file = fopen(«/path/to/file», «r»);

Curl и ftp

Утилита поддерживает FTP! Вы можете использовать её для загрузки файлов с удалённого сервера.

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

Всем привет!

Пытаюсь произвести авторизацию на сайте https://monitor.masterfolio.ru/auth/login в два шага: 1) получение исходного кода, 2) Вход на сайт :

$url = "https://monitor.masterfolio.ru/auth/login";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
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_CONNECTTIMEOUT, 10);
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); 
$c = curl_exec($ch);

$c = mb_substr($c, mb_strpos($c,'login_csrf'), 70);
$c = mb_substr($c, mb_strpos($c,"=") 2);
$c = mb_substr($c, 0, mb_strpos($c,'"'));

curl_setopt($ch, CURLOPT_COOKIEJAR,  'http://site.loc/wordpress/cookie.txt'); // сохранять куки в файл 
curl_setopt($ch, CURLOPT_COOKIEFILE, 'http://site.loc/wordpress/cookie.txt');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "email=ctac4ever@gmail.com&password=test123&remember=1&login_csrf=".$c."&submit=1&formid=login");

$c = curl_exec($ch);
curl_close($ch);
echo $c;

Проблема вся в том, что в форме отправки запроса присутствует некое скрытое поле с динамическим хэшем, которое и мешает произвести отправку формы… Помогите мне, пожалуйста)

:/>  8 способов сделать скриншот в Windows 10 | Softmonster

Авторизация с помощью curl в php – блог о веб-разработке

php-authНемало полезных возможностей дает расширение cURL, которые можно использовать для реализации различных сетевых инструментов и не только. Сегодня cURL используют все по разному, для добрых и не очень дел. Всё дело в его удобстве, и возможности использования его в различных ситуациях, где нужно каким-либо образом отправлять и получать данные удаленно, без ручного участия пользователя. Рассмотрим простой пример, как можно сделать авторизацию на сайте.

Изначально, перед тем как что-то программировать нам нужно кое-что уточнить.
1. Узнать ссылку к скрипту авторизации, который будет отвечать на запросы.
2. Узнать имена полей, отправляемые скрипту, традиционно это поля логина и пароля.
3. Ваш рабочий логин, и пароль.

Затем приступаем к примеру:

// URL скрипта авторизации
$login_url = 'http://exampe.com/login.php';
 
// параметры для отправки запроса - логин и пароль
$post_data = 'login=ваш_логин&password=ваш_пароль';
 
// создание объекта curl
$ch = curl_init();
 
// используем User Agent браузера
$agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
 
// задаем URL
curl_setopt($ch, CURLOPT_URL, $login_url );
 
// указываем что это POST запрос
curl_setopt($ch, CURLOPT_POST, 1 );
 
// задаем параметры запроса
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
 
// указываем, чтобы нам вернулось содержимое после запроса
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 
// в случае необходимости, следовать по перенаправлени¤м
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 
/*
	Задаем параметры сохранени¤ cookie
	как правило Cookie необходимы для дальнейшей работы с авторизацией
*/
 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
 
// выполняем запрос для авторизации
$postResult = curl_exec($ch);

После выполнения функции curl_exec будет выполнен запрос с параметрами авторизации, содержимое страницы ответа будет находиться в переменной $postResult.
Опция CURLOPT_COOKIEFILE указывает файл, в котором будут храниться данные cookies полученные после успешного выполнения запроса авторизации. Так же следует убедиться в наличии прав PHP для создания и записи файла.

:/>  Как исправить ошибку 0x80070490 при установке Windows?

Все последующие запросы после успешной авторизации могут выполняться с помощью этих функций:

curl_setopt($ch, CURLOPT_URL, $url);
curl_exec($ch);

Кстати, для отладки удобно использовать консоль браузера, в Firefox и Chrome для открытия служит клавиша F12. Открыв вкладку «сеть» можно просмотреть параметры, отправляемые на заданный URL и ответ сервера.

Запуск команд curl из консоли windows

люди, которые буквально не нуждаются в curl исполняемый файл, но вместо этого просто нужно, например, видеть или сохранять результаты запроса GET время от времени, можно использовать powershell напрямую. В обычной командной строке введите:

powershell -Command "(new-object net.webclient).DownloadString('http://example.com')"

что, хотя немного многословно, похоже на ввод

curl http://example.com/

в более Unix-иш среде.

подробнее о net.webclient здесь: WebClient Методы (System.Net).

обновление: мне нравится как Имранхафиз сделал еще один шаг в ответ. Однако я бы предпочел более простой cmd-скрипт, возможно, создающий следующего содержания:

@powershell -Command "(new-object net.webclient).DownloadString('%1')"

который можно было бы назвать так же, как пример Unix-ish выше:

curl http://example.com/

Использование прокси

Если вам нужно использовать прокси сервер для загрузки файлов, то это тоже очень просто. Достаточно задать адрес прокси сервера в опции -x:

Как пользоваться curl?

Мы рассмотрели все, что касается теории работы с утилитой curl, теперь пришло время перейти к практике, и рассмотреть примеры команды curl.

Команда curl

Перед тем как перейти к описанию того как может использоваться команда curl linux, давайте разберем саму утилиту и ее основные опции, которые нам понадобятся. Синтаксис утилиты очень прост:

$ curlопции ссылка

Теперь рассмотрим основные опции:

Это далеко не все параметры curl linux, но здесь перечислено все основное, что вам придется использовать.

Команда curl для работы с файлами

Команды Curl могут загружать файлы из удалённой локации. Есть два способа это сделать:

  • -O сохранит файл в текущем рабочем каталоге с тем же именем, что и у удалённого;
  • -o позволяет указать другое имя файла или местоположение.

Вот пример:

Ограничение скорости

Вы можете ограничить скорость загрузки до необходимого предела, чтобы не перегружать сеть с помощью опции -Y:

:/>  CIFS over SSH штатными средствами Windows 10 / Хабр

Ограничение скорости скачивания

Скачивая или загружая данные с помощью Curl, вы не можете знать, насколько большим будет вывод. Вы можете ограничить скорость скачивания, чтобы убедиться, что Curl не ограничивает пропускную способность канала. 

Команда ниже ограничивает скорость скачивания до 100К:

Отправка данных post

Вы можете отправлять не только файлы, но и любые данные методом POST. Напомню, что этот метод используется для отправки данных различных форм. Для отправки такого запроса используйте опцию -d. Для тестирования будем пользоваться тем же сервисом:

Отправка файлов на другой сервер

Отправка файлов осуществляется методом POST:

Передача и анализ заголовков

Не всегда нам обязательно нужно содержимое страницы. Иногда могут быть интересны только заголовки. Чтобы вывести только их есть опция -I:

Передача и прием куки

Куки или Cookie используются сайтами для хранения некой информации на стороне пользователя. Это может быть необходимо, например, для аутентификации. Вы можете принимать и передавать Cookie с помощью curl. Чтобы сохранить полученные Cookie в файл используйте опцию -c:

Передача файлов

Загрузка файлов, это достаточно просто, но утилита позволяет выполнять и другие действия, например, отправку файлов на ftp сервер. Для этого существует опция -T:

curl -T login.txt ftp://speedtest.tele2.net/upload/

Подборка php песочниц

Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

Скачивание файлов

Curl позволяет сохранить результат сразу в файл, указав указатель на открытый файл в параметре CURLOPT_FILE.

$file_name = __DIR__ . ‘/file.html’;$file = @fopen($file_name, ‘w’);

Совет: отправка информации в google analytics через api

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

Оставьте комментарий

Adblock
detector