2015-05-31 2 views
1

Я пытаюсь использовать PHP cURL для входа на веб-сайт и перейти к определенному URL-адресу, чтобы получить его содержимое.cURL follow redirects for Login form

Это страница Пытаюсь зрения: https://dev-portal.getpebble.com/developer

Однако эта страница требует, чтобы пользователь вошел в систему, страница Войти на: https://auth.getpebble.com/users/sign_in

нечетная часть является то, что на странице входа в систему , имеет скрытое значение «authenticity_token», которое должно быть отправлено с формой. Таким образом, мой текущий процесс:

  1. cURL чтобы получить содержание страницы входа. (Вызов завитка на URL аутентификации)
  2. Fetch «Подлинность маркер» со страницы (получить маркер для почтовых данных)
  3. Curl представить на странице входа с подлинностью маркерами + учетными данными (вызов завитка на URL аутентификации с данными записей)

, который работает, как видно на этом снимке (скриншот завитка контента из EXEC): http://i.gyazo.com/4eccb78bf18f72f1da65bc9d8967541e.png

Однако этот процесс приносит мне: https://auth.getpebble.com/me и теперь мне нужно Curl, чтобы привести меня к https://dev-portal.getpebble.com/developer с использованием проверенного сеанса у меня есть. Я попытался сохранить файлы cookie, но он не работает.

После того, как шаг 3 выше, я попытался позвонить cURL на странице https://dev-portal.getpebble.com/developer, но я просто переадресовываюсь на «localhost/users/auth/pebble» (чего даже не существует? Предполагаю, что cURL вызывает страницу перенаправить?), и если я отменит перенаправление до его появления, я получу страницу без проверки: http://i.gyazo.com/218e00c262651017df4dcc1927def87f.png

Вот мой код для создания запросов cURL.

private function cURL($url, $postData = false) 
{ 

    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
    curl_setopt($ch, CURLOPT_FORBID_REUSE, TRUE); 
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, FALSE); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookie); 
    curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE); 
    if ($postData) 
    { 
     curl_setopt($ch, CURLOPT_POST, TRUE); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData)); 
    } 

    $content = $this->content = curl_exec($ch); 

    echo $content; 

    curl_close($ch); 
    return $content; 
} 
+0

Вы пытались подключить прокси-сервер отладки для просмотра данных? –

+0

Я пробую это сейчас @NeilSmithline –

ответ

1

Оказывается, печенье было генерируется на другую странице, а не https://dev-portal.getpebble.com/developer поэтому эта страница будет создавать недопустимые сессии.

Мне удалось исправить это, используя https://dev-portal.getpebble.com/users/auth/pebble вместо https://dev-portal.getpebble.com/developer, и хотя последующие переадресации приведут меня на страницу с подтверждением/разработчиком.