#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. Я заметил скрытые поля — я экспериментировал, и я хотел включить эти значения в свой вопрос. Я обновлю вопрос