Задать вопрос
@Nagga

Как нажать на кнопку после авторизации на сайте через PHP cURL?

Добрый вечер. Не могу понять как нажать на кнопку после авторизации на сайте и получить после этого же нажатия информацию с сайта.
Суть: авторизация на сайте, переход на закрытый url, нажатие на закрытом url кнопку, получение информации с закрытого url.
$idacc = $_SESSION['idacc'];
$url = 'xxx/login.php';
$url2 = 'xxx/id=' . $idacc . '&info';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_REFERER, $url2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/my_cookies.txt'); 
curl_setopt($ch, CURLOPT_COOKIEFILE, '/my_cookies.txt');
curl_setopt($ch, CURLOPT_POST, 1); // использовать данные в post
$login = array(
  'mail' => 'xxx@mail.ru',
  'pass' => 'xxx',
);
$update_info = array(
  'upd' => "Обновить данные"
);
curl_setopt(($ch), CURLOPT_POSTFIELDS, $login);
$result1 = curl_exec($ch);
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_REFERER, $url2);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt(($ch), CURLOPT_POSTFIELDS, $update_info);
curl_setopt($ch, CURLOPT_COOKIEFILE, '/my_cookies.txt');
$result2 = curl_exec($ch);
if (curl_errno($ch))
{
   require "../errors.php";
   exit();
}
curl_close($ch);


После этого не получаю данные со страницы в $result2, но при этом кнопка нажимается.
  • Вопрос задан
  • 387 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
1. а с чего ты взял что он должен возвращать страницу? ответ сервера вообще может не содержать тела, возможно нужен 3ий запрос
2.
CURLOPT_COOKIEJAR Имя файла, в котором будут сохранены все внутренние cookies текущей передачи после закрытия дескриптора, например, после вызова curl_close.

в первом запросе можно добавить CURLOPT_COOKIESESSION
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, __DIR__.'/cookies'); 
$result = curl_exec($ch);
curl_close($ch);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_COOKIEJAR, __DIR__.'/cookies'); 
curl_setopt($ch, CURLOPT_COOKIEFILE, __DIR__.'/cookies'); 
$result = curl_exec($ch);


3. вместо CURLOPT_REFERER можно просто указать CURLOPT_AUTOREFERER
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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