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

Как авторизоваться на сайте cURL?

Хочу сделать парсинг с авторизацией. Сразу скажу, в скрипте стоит этот форум просто для примера, что бы не ставить дhугие сайты и т.д. Само собой логин и пароль указываю верные.
Суть в чем? вот скрипт, судя по уроку он должен авторизовать и сделать куки, что бы я как бы на вторую страницу заходил уже авторизованным, но вместо этого он дважды выводит страницу авторизации. Помогите исправить ошибку т.к я ее не вижу
header('Content-Type:text/html charset=utf-8');
    require_once('phpQuery-onefile.php');
    
    function get_content($url, $data = []){
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
        curl_setopt($ch, CURLOPT_COOKIEJAR, __DIR__ . '/cookie.txt');
        curl_setopt($ch, CURLOPT_COOKIEFILE, __DIR__ . '/cookie.txt');
        $res = curl_exec($ch);
        curl_close($ch);
        return $res;
    }
    
    $url_auth = 'http://www.cyberforum.ru/log-in.php';
    $url = 'http://www.cyberforum.ru/members/956598.html';
    $auth_data = [
        'vb_login_username' => 'почта',
        'vb_login_password' => 'пасс',
        'cookieuser' => 'on'
    ];
    $data = get_content($url_auth, $auth_data);
    $data1 = get_content($url);

x7P71CGLCSc.jpg
  • Вопрос задан
  • 4863 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
megafax
@megafax
web-программист
1. Попробуйте вручную создать файл кук, если он не создается автоматически, и проверить что в него записалось
2. Добавить User-Agent, например, из своего браузера.
3. Проверить отправляемые заголовки cURL, чтобы было наибольшее соответствие тем, которые Вы можете отправить из своего браузера.
4. И собственно второй запрос у Вас тоже POST, может все таки должен быть GET ?
Ответ написан
Комментировать
@dimontius
POST потому что как правило форма авторизации использует метод POST
Но лучше использовать CURLOPT_HTTPAUTHэта опция сама подберет нужный метод... так как в редких случая может быть и get или еще что-то...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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