Войдите на сайт, используя PHP HttpRequest?

#php #httprequest #linkedin

#php #httprequest #LinkedIn

Вопрос:

Я ищу способ поиска business «X» в LinkedIn, для которого требуется действительный сеанс входа в систему. Я делаю Http-запросы с помощью объекта HttpRequest PHP, но я недостаточно знаком с обработкой данных сеанса / файлов cookie, чтобы выяснить, как точно определить мою ошибку.

     $loginURL = "https://www.linkedin.com/uas/login-submit";
    $loginPostData = array("session_key" => "mylogin@mydomain.com",
                           "session_password" => "itsasecret",
                           "source_app" => "",
                           "signin" => "",
                           "session_redirect" => "",
                           "csrfToken" => "",
                           "sourceAlias" => "",
    );

    $httpRequest = new HttpRequest($loginURL, HttpRequest::METH_POST);
    $httpRequest->setContentType("application/x-www-form-urlencoded");
    $httpRequest->addPostFields($loginPostData);
    $httpRequest->setOptions(array("redirect" => 10));
    $httpMessage = $httpRequest->send();
    $responseBody = $httpMessage->getBody());
  

Я записываю $ResponseBody в файл и открываю его в браузере, но он содержит только общую страницу LinkedIn с полями входа. Используя расширение «Данные для несанкционированного доступа» к firefix, я вижу, что следующие заголовки запроса позволяют Firefox загружать веб-страницу, доступную для просмотра в сеансе:

 Host=www.linkedin.com
Content-Type=application/x-www-form-urlencoded
Content-Length=124
POSTDATA=source_app=amp;session_key=mylogin@mydomain.comamp;session_password=itsasecretamp;signin=amp;session_redirect=amp;csrfToken=amp;sourceAlias=
  

В данных, которые я получаю обратно, тоже есть что-то странное: я ожидал бы увидеть что-то вроде «неверное имя пользователя или пароль», но я получаю значение по умолчанию linkedin.com страница.

Комментарии:

1. Вы застряли с HttpRequest? Можете ли вы использовать curl ?

2. Я бы предпочел использовать HttpRequest, поскольку я уже настроен на это, и у меня нет опыта работы с curl в PHP.

3. Я также заменил «@» в своем имени пользователя на «@», но безрезультатно

4. Можно ли использовать API? Company api будет делать именно то, что вы ищете с точки зрения поиска конкретных компаний и т.д.

5. Есть ли способ войти в систему с помощью API? Я взглянул на это, но это было явно сделано с другой целью. Когда я проверял это, я не мог видеть никакого способа войти в систему с учетной записью через API. Если бы вы могли предоставить рабочий пример, это было бы потрясающе!

Ответ №1:

На самом деле, глядя на код linkedin, есть некоторые скрытые входные данные, которые вам нужно отправить в виде данных POST, поскольку в вашем запросе нет одного или нескольких из этих значений, вы получили ту же страницу входа…

Скопируйте и вставьте из linkedin

  <input type="hidden" name="source_app" value="">
 <input type="hidden" name="trk" value="guest_home_login">
 <input type="hidden" name="session_redirect" value="" id="session_redirect-login"><input type="hidden" name="csrfToken" value="ajax:9034582961576232024" id="csrfToken-login"><input type="hidden" name="sourceAlias" value="0_7r5yezRXCiA_H0CRD8sf6DhOjTKUNps5xGTqeX8EEoi" id="sourceAlias-login">
  

Комментарии:

1. Я заметил скрытые поля — я экспериментировал, и я хотел включить эти значения в свой вопрос. Я обновлю вопрос