2011-11-04 59 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