2012-09-13 10 views
5

次のコードはyahooにはログインしません。それはどのように書き直されるべきですか? www.yahoo.comに自動的にログインする.NETアプリケーションを作成する適切な方法は何ですか?

(もちろん、「ユーザ名」と「パスワード」は、私の実際のアカウント名&パスワードに置き換えられます。)

static void Main(string[] args) 
    { 
     string input = string.Format("username={0}&passwd={1}", "<username>", "<password>"); 

     WebRequest request = HttpWebRequest.Create("https://login.yahoo.com/config/login"); 
     request.Method = "POST"; 
     request.ContentType = "application/x-www-form-urlencoded"; 

     StreamWriter writer = new StreamWriter(request.GetRequestStream()); 
     writer.Write(input); 
     writer.Close(); 

     StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream()); 

     string x = reader.ReadToEnd(); 

     Console.Read(); 
    } 
+0

私はエンコードを試みました。それはうまくいかなかった。とにかくANSI以外の文字はありません。 –

答えて

5

、ユーザーを保護するために使用されている多くの隠されたフィールド

image showing the hidden fields of the form

CSRF

に対して例えば、あるわかります

あなたが最初にヤフーにリクエストを送って有効な反CSRFトークンを取得し、それをあなたの要求に含めるようにしてもよいでしょう。また、サイトが使用するjavascriptを調べる必要があります。おそらく、クライアントサイトで計算されたものがあり、それからログインデータを送信します。

これらのサイトは頻繁に変更され、明日は実装されていないため注意してください。

1

は、フォーム上のいくつかの隠された入力要素があります。おそらくクッキーと一緒にその存在がサーバー側でチェックされている可能性があります。リクエストがそのログインページから発信されているかどうかを確認することが可能です。 HttpWebRequest経由でリクエストに追加しようとしましたか?ヤフーのページのHTMLソースを見たとき

2

このようにログインするのは難しいでしょうし、本当に可能ではないと思います。 実際にプログラムでログインする必要がある場合は、OpenIDまたはOAuthが必要です。

続きを読む程度

+1

可能でなかった場合、ブラウザはそれを行うことができませんでした... –

0

Yahoo authentication hereは、私はしばらく前に同様のタスクを持っていた - 私は、ウェブサイトにログインし、そこからいくつかのデータを引き出していました。私を助けるウェブサービスはありませんでした。私はVB6を使用していましたが、私がやったことは、Webブラウザを作成し、そのWebページをロードし、そのようにログインしてから、必要なデータを画面でスクレイプしたことです。

このアプローチは粗末で信頼性が低く、ログイン手順にはキャプチャの保護機能が含まれていても機能しませんが、速くてよりエレガントで恒久的な方法を見つけようとするときに役立ちます。

0

私はログインページからいくつかのコードを使ってyahooメールにログインするhtmlページを持っています。それはしばらくの間働いていますので、ログインページのhtmlを "[Login]"ボタンの近くで調べて、httpリクエストにどの値を含める必要があるかを調べることをお勧めします。

yahooメールへのログイン用に書いたhtmlページを見ると、適切なHIDDEN値をサーバーに渡すだけで、明らかにユーザーとパスを渡す必要があります。したがって、HTMLフォーム内のHIDDEN値タグを調べて、httpウェブリクエストで送信する必要があるものを調べることをおすすめします。基本的には.NET Frameworkのスタイル

でのログインページのフォームを再作成私は、これはここ:)

0

を助けワークフローやコードでのOAuthを説明したリンクであると思います。 Yahooのほかに、Twitterは学ぶ良いサイトです。リンクのコードの一部はTwitterを使用しています。 OAuth 2.0は廃止されています。

http://www.codeproject.com/Articles/131978/Demystifying-OAuth

関連する問題