<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

Данный курс научит Вас создавать крупные проекты на Java грамотно и быстро. В курсе Вы увидите создание большой и сложной программы на Java абсолютно с нуля.

В начале курса у нас будет только идея, а в конце готовый продукт, который можно использовать в практических целях.

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

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

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Авторизация на сайте с помощью GuzzleHttp

Авторизация на сайте с помощью GuzzleHttp

Автоматическая авторизация на сайте может потребоваться в разных случаях. Например, вам необходимо собрать информацию о товарах с сайта, который доступен только авторизованным пользователям. В такой ситуации автоматизация поможет ускорить сбор необходимой информации.

Войти на сайт автоматически можно с помощью различных инструментов, одним из таких инструментов является библиотека GuzzleHttp. С помощью этой библиотеки можно осуществить авторизацию на сайте, загрузить файлы и много чего еще сделать.

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

Сначала устанавливаем саму библиотеку GuzzleHttp:

composer require guzzlehttp/guzzle

Далее пишем скрипт следующего содержания, в котором описывается как войти на сайт, который для доступа, например, к специальным предложениям, использует авторизацию.

<?php
  require 'vendor/autoload.php'; // автозагрузчик
  
  use GuzzleHttp\Client; // подключаем библиотеку

  // создаем нового клиента
  $client = new Client([
    'base_uri' => 'https://какой-то-сайт.ru/', // базовый uri, от него и будем двигаться дальше
    'verify'  => false,                        // если сайт использует SSL, откючаем для предотвращения ошибок
        'allow_redirects' => false,            // запрещаем редиректы 
        'headers' => [                         // устанавливаем различные заголовки
            'User-Agent'   => 'Mozilla/5.0 (Linux 3.4; rv:64.0) Gecko/20100101 Firefox/15.0',
            'Accept'       => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'Content-Type' => 'application/x-www-form-urlencoded' // кодирование данных формы, в такой кодировке
            браузер отсылает данные на сервер
        ]
  ]);

  
  /**
  * В метод request передается три параметра: 
  *
  *
  * 1. Методы GET, POST
  * 2. URL на который отправляются данные формы
  * 3. forms_params - значения логина и пароля
  */
  $login = $client -> request('POST','/login.html',[
    'form_params' => [
      'login'    => 'VasyaPupkin',
      'password' => 'SuperPuperParol'
    ]
  ]);


  print($login -> getStatusCode());                   // статус код, если 200 или 302, то все норм, хотя не всегда)))  
  $cookie   = $login  -> getHeaderLine('Set-Cookie'); // обязательно вытаскиваем cookies из запроса, без них ничего не сработает
  

  $discounts = $client -> request('GET','secret/discounts.html',[
    'headers' => [
        'Cookie' => $cookie
    ],
    /*'debug' => true*/ // если захотите посмотреть что-же отправляет ваш скрипт, расскоментируйте
  ]);

  //print $articles -> getStatusCode();

  // html код страницы со скидками, например
  $body = $articles -> getBody() -> getContents();

Скрипт выше хорошо комментирован, но я отмечу пару важных моментов. После авторизации на сайте, вы можете выполнять любые запросы, используя метод request, главное передать в него правильные заголовки через массив headers. Если что-то пойдет не так, то используйте параметр debug для отображения того, что отправляется в данный момент.

Таким образом, с помощью библиотеки GuzzleHttp можно выполнять как простые так и весьма сложные Http запросы.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.