2009-09-09 190 views
4

我已经尝试了几种通过java登录网站的方法。我已经使用watij,HTMLunit等,但由于不熟悉这些,我无法成功登录。如何通过java登录到网站?

谁能告诉我详细介绍一下如何通过Java

登录到更具体,我想登录到orkut并想在登录后到来页面pagesource。

回答

3

你最有可能做这样的事情&在现实世界中生存的网站是Selenium-RC。

基本上,你要做的是远程控制你的浏览器做任何你可以手动执行的操作(文件上传除外)。

很多次,我已经使用这个模式:

  1. 登录硒
  2. 拿饼干
  3. 继续与我最喜欢的HTTP库。
+0

是什么阻止你从浏览器中获取cookie? – Geo

0

你为什么试图通过Java登录,为什么不使用cURL?有什么具体的你想完成?

+0

我想在登录后处理各种页面的页面源代码。是否可以通过cURL登录并获取java程序中的pagesource,以便我可以处理该文档,然后将下一个URL传递给cURL以获取nextpage的页面源。 –

+0

是的,这是可能的。 – Homework

0

Orkut使用Google身份验证登录。我的建议是使用像Fiddler这样的HTTP调试器在登录过程中观察流量。可能存在您需要复制的Cookie和重定向。

一般来说,

  1. 看看登录表单,获取用户名和密码字段的名称和形式职位,以
  2. 创建一个POST请求的动作URL的行动,并通过在名和密码正确(如姓名=用户名&密码= PWD)
  3. 了这HTTPS(确保做到这一点正确)
  4. 如果响应在头一个Set-Cookie,确保对发送的cookie所有后续请求
  5. 如果响应有重定向,然后做了重定向GET,发送的cookie如果合适
  6. (不断循环的#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

看起来像谷歌代码与他们的服务认证。

5

答案取决于网站如何试图验证您的身份:

  • 你必须设置在HTTP标头的用户名和密码(基本身份验证)?
  • 或者您是否需要填写并提交包含用户名和密码的表单?

对于我会推荐commons-httpclient,虽然后者的屏​​幕抓取方法总是杂乱的做编程。

对于基本认证,看看httpclient的Authentication Guide

Forms身份验证,则需要检查网页的HTML源代码来了解

  • 的形式提交给
  • 的网址是什么参数的名称提交是

有关如何在httpclient中提交表单的帮助,请参阅the documentation on the POST method

httpclient站点还包含一个basic tutorial