質問
Javaを介してWebサイトにログインする方法をいくつか試しました。 watij、HTMLunitなどを使用しましたが、これらのいずれにもあまり詳しくないため、正常にログインできません。
誰でもjavaを介してログインする方法を詳細に教えてもらえますか
具体的には、ORKUTにログインし、ログイン後に表示されるページのページソースが必要です。
解決
そのようなことをするあなたの最高のチャンス&現実世界のウェブで生き残るには、Selenium-RCが必要です。
基本的には、ブラウザーをリモート制御して、手動で行えることをすべて実行します(ファイルのアップロードを除く)。
何度も、私はこのパターンを使用しました:
- セレンでログイン
- Cookieを取得する
- 私のお気に入りのHTTPライブラリを続けます。
他のヒント
答えは、ウェブサイトがあなたを認証しようとする方法によって異なります:
- HTTPヘッダーにユーザー名とパスワードを設定する必要がありますか(基本認証)
- または、ユーザー名とパスワードを含むフォームに記入して送信する必要がありますか?
どちらの場合もcommons-httpclientをお勧めしますが、後者のスクリーンスクレイピングアプローチは常にプログラム的に行うのが面倒です。
基本認証については、httpclientの認証ガイドをご覧ください。
フォーム認証では、ページのHTMLソースを確認して理解する必要があります
- フォームが送信されるURL
- 送信するパラメータの名前は何ですか
httpclientでフォームを送信する方法については、 POSTメソッドのドキュメント。
httpclientサイトには、基本チュートリアルも含まれています。
>なぜJava経由でログインしようとしているのですか、cURLを使用しないのはなぜですか?あなたが達成しようとしている具体的な何かがありますか?
OrkutはGoogle認証を使用してログインします。私の提案は、FiddlerなどのHTTPデバッガーを使用して、ログイン中のトラフィックを監視することです。おそらく、複製する必要があるCookieとリダイレクトがあります。
一般的に、
- ログインフォームを見て、名前とパスワードフィールドの名前と、フォームが投稿するアクションを取得します
- アクションURLにPOSTリクエストを作成し、名前とパスワードを正しく渡します(例:name = username& password = pwd)
- このHTTPSを使用しました(必ず正しく実行してください)
- 応答のヘッダーにSET-COOKIEが含まれている場合は、以降のすべてのリクエストで必ずそのCookieを送信してください
- 応答にリダイレクトがある場合は、リダイレクトに対してGETを実行し、必要に応じてCookieを送信します
- (リダイレクトが取得されなくなるまで、#5でループを続けます)
この最後に返される応答はページのソースです。
これを見てください:
http:// code .google.com / apis / gdata / javadoc / com / google / gdata / client / http / AuthSubUtil.html http:// code.google.com/p/apex-google-data/source/browse/trunk/google_data_toolkit/src/classes/AuthSubUtil.cls
サービスで認証するためのGoogleコードのように見えます。