2016-07-26 5 views
1

私は認可LinkedIn Webブラウザ(PHP)をシミュレートしようとしています。私はGuzzle Http Clientを使用します。Guzzle HttpクライアントとLinkedInでの認証

use GuzzleHttp\Client as LinkedinClient; 
use PHPHtmlParser\Dom as Parser; 

public function authLinkedin() 
{ 
    $client = new LinkedinClient(['base_url' => 'https://www.linkedin.com']); 

    try { 
     $postData = [ 
      'session_key'  => 'My_email', 
      'session_password' => 'My_password', 
      'action' => 'login' 
      ]; 

     $request = $client->createRequest('POST', '/uas/login', ['body' => $postData, 'cookies' => true]); 

     $response = $client->send($request); 

     if ($response->getStatusCode() === 200) { 
      $parser = new Parser(); 
      $parser->load($client->get('https://www.linkedin.com/', ['cookies' => true])->getBody()); 

      return $parser; 
     } else { 
      Log::store("Authorization error", Log::TYPE_ERROR, $request->getStatusCode()); 
      return null; 
     } 
     return $request; 
    } catch (Exception $ex) { 
     Log::store("Failure get followers", Log::TYPE_ERROR, $ex->getMessage()); 

     return null; 
    } 
} 

要求が成功したが、200コードを返しますが、私は許可しませんでした。ここで

は、認証コードの一部です。 似たような仕事に直面したり、コードに何かが恋しかったりします。私は何かアドバイスをいただければ幸いです。

+1

完全なポストデータのデモ:SESSION_KEY =テスト%40gmail.com&session_password = asdasdasdasd&isJsEnabled =偽&loginCsrfParam = 252be5bc-6822-4020-8a80-439a809f8f73 &sourceAlias = 0_7r5yezRXCiA_H0CRD8sf6DhOjTKUNps5xGTqeX8EEoi&あなたはあまりにも多くのものが欠けて.... +サインイン=提出します。 xD –

答えて

1

私はCSRF保護と他の隠されたパラメータが問題だと思います。 LinkedInは、他のサイトと同様に、通常はすべての状況でエラーが発生しても200 OKを返し、結果のHTMLの詳細を記述します。

Goutteのようなウェブスクレーパーを使用する方がよい場合があります。ブラウザでユーザーをエミュレートするので、(CSRF保護やその他の隠しフィールドなど)多くのことを心配する必要はありません。

$crawler = $client->request('GET', 'https://www.linkedin.com'); 
$form = $crawler->selectButton('Sign In')->form(); 
$crawler = $client->submit($form, array(
    'login' => 'My_email', 
    'password' => 'My_password' 
)); 

あなたはドライバーとしてがつがつ食うとそれを使用することができますが、いくつかのサイトではJavaScriptを必要とするかもしれません(私はアマゾンについてはよく分からない):例としては、このような何かをしようと、on the main pagesを見つけることができます。その後、実際のブラウザやPhantomJS(ヘッドレスChromeの一種)に行く必要があります。

+0

ありがとう! すべてが隠されたパラメータを持っていますが、結果は示されません。 通常の飛行までGouttenを試しました)もう一度ありがとうございます。 –

関連する問題