如何通过java登录网站?

时间:2009-09-09 18:21:34

标签: java httpclient

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

任何人都可以详细告诉我如何通过java登录

更具体地说,我想登录ORKUT并想要登录后出现的页面的页面源。

4 个答案:

答案 0 :(得分:5)

答案取决于网站如何尝试对您进行身份验证:

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

要么我会推荐commons-httpclient,虽然后一种屏幕抓取方法总是以编程方式来处理。

对于基本身份验证,请查看httpclient的Authentication Guide

对于表单身份验证,您需要检查页面的HTML源代码以了解

  • 表单提交的网址
  • 要提交的参数名称是

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

httpclient网站还包含basic tutorial

答案 1 :(得分:3)

你最好的机会做这些事情&在现实世界中生存下来的是Selenium-RC。

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

很多时候,我使用过这种模式:

  1. 使用selenium登录
  2. 拿饼干
  3. 继续我最喜欢的HTTP库。

答案 2 :(得分:0)

为什么要尝试通过Java登录,为什么不使用cURL?你有什么具体的想法吗?

答案 3 :(得分:0)

Orkut使用Google身份验证登录。我的建议是使用像Fiddler这样的HTTP调试器在登录时观察流量。可能有你需要复制的cookie和重定向。

通常,

  1. 查看登录表单,获取名称和密码字段的名称以及表单发布到的操作
  2. 为操作网址创建POST请求并正确传递名称和密码(例如name = username& password = pwd)
  3. 这是HTTPS(请确保正确执行此操作)
  4. 如果回复标题中有SET-COOKIE,请确保在所有后续请求中发送该Cookie
  5. 如果响应具有重定向,则为重定向执行GET,并在适当时发送cookie
  6. (继续循环#5直到你没有得到重定向)
  7. 您在此结尾处得到的回复是页面来源。

    看看这个:

    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代码,可以使用他们的服务进行身份验证。