2011-11-04 60 views
0

我正在尋找在LinkedIn上搜索業務「X」的方法,這需要有效的登錄會話。我使用PHP的HttpRequest對象發出Http請求,但我不熟悉處理會話數據/ cookie以找出如何查明我的錯誤。使用PHP的HttpRequest登錄網站?

$loginURL = "https://www.linkedin.com/uas/login-submit"; 
    $loginPostData = array("session_key" => "[email protected]", 
          "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=&[email protected]&session_password=itsasecret&signin=&session_redirect=&csrfToken=&sourceAlias= 

有一些奇怪的有關數據,我回去過:我期望看到類似「無效的用戶名或密碼」,但我得到默認linkedin.com頁面。

+1

您是否堅持使用HttpRequest?你可以使用'curl'嗎? –

+0

我寧願使用HttpRequest,因爲我已經爲它設置了,並且我沒有在PHP中使用curl的經驗。 – JoBu1324

+0

我也用我的用戶名中的「@」替換了「%40」,不起作用 – JoBu1324

回答

0

其實看着LinkedIn的代碼有您需要發送POST作爲DATAS一些隱藏的輸入,因爲你的要求有這些值,你得到了相同的登錄頁面而不是一個或更多...

複製&從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"> 
+0

我注意到隱藏的字段 - 我一直在試驗,我的意思是在我的問題中包含這些值。我會更新Q. – JoBu1324