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

The Vincenzo

Green Team
11.08.2019
89
12
BIT
0
Всем привет, в данном статье, будет, как авторизоваться на любом сайте, через кода на PHP.

Конечно можно это сделать на сайте даже так удобнее, но создать такой скрипт, гораздо интереснее.

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

Создадим простой скрипт, который будет все это сделать.
Для этого установим библикотеку GuzzleHttp, которое поможет нам. Без него, не как у вас, не получится.

Код:
 composer require guzzlehttp/guzzle

Потом сам скрипт PHP:
PHP:
<?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();

Удачки скриптом
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!