@semechki
Я не фрилансер, просто пишу код для себя.

Как авторизироваться на сайте при помощи curl?

Добрый вечер!
Возникла одна проблема, на сайте на котором я пытаюсь авторизироваться изначально стоит прелоадер и я не понимаю происходит ли сама авторизация, ибо же мой curl запрос парсит в итоге текст с прелоадера, можно ли это как-то поправить или обойти?
Код парсера:
<?php
header('Content-type: text/html; charset=utf-8');

function get_content($url, $data = []){
   $ch = curl_init($url);
   // curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
   // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($ch, CURLOPT_POST, true);
   curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

   curl_setopt($ch, CURLOPT_COOKIEJAR, __DIR__.'coockie.txt');
   curl_setopt($ch, CURLOPT_COOKIEFILE, __DIR__.'coockie.txt');

   curl_setopt($ch, CURLOPT_TIMEOUT, 9);
   curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 6);

   $res = curl_exec($ch);
   return $res;
}

$url_auth = 'https://mail.protonmail.com/login';
$url = 'https://mail.protonmail.com/inbox';
$auth_data = [
 'username'=> 'log',
 'password'=> 'pass',
];

// $data = get_content($url_auth, $auth_data);
$data = get_content($url);
var_dump($data);

var_dump возвращает как раз таки страницу лоадера и значение bool(true), вроде как, это отчёт об авторизации - авторизация успешна
Проверила, после авторизации и входа в систему на самой почте так же есть прилоадер при перезагрузке страницы, код парсит его скорее всего...
Как это можно будет обойти и возможно ли это?
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
вообще надо понимать как работают формы и данная форма в частности. Запрос с https://mail.protonmail.com/login уходит на https://mail.protonmail.com/api/auth/info аяксом (причем не все данные сразу), а уже дальше еще куча яваскрипта и прочих фишек. То есть у вас там ничего работать не будет, еще и учитывая что вы ничего и никуда из авторизационных данных не отправляете, просто пытаетесь открыть https://mail.protonmail.com/inbox, еще и методом POST зачем то.
Ответ написан
zkrvndm
@zkrvndm
Архитектор решений
Вы зря изобретайте велосипед.
https://github.com/justinkalland/protonmail-api
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы