4

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

谁能详细告诉我如何通过java登录

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

4

4 回答 4

5

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

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

对于任何一个,我都会推荐 commons-httpclient,尽管后一种屏幕抓取方法在编程上总是很麻烦。

对于基本身份验证,请查看 httpclient 的身份验证指南

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

  • 表单提交到的 URL
  • 要提交的参数名称是什么

有关如何在 httpclient 中提交表单的帮助,请查看有关 POST 方法的文档

httpclient 站点还包含一个基本教程

于 2009-09-09T18:55:02.407 回答
3

Selenium-RC 是您做这些事情并在现实世界网络中生存的最佳机会。

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

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

  1. 使用硒登录
  2. 拿饼干
  3. 继续我最喜欢的 HTTP 库。
于 2009-09-09T18:58:01.717 回答
0

您为什么尝试通过 Java 登录,为什么不直接使用 cURL?你有什么具体的事情想要完成吗?

于 2009-09-09T18:22:50.173 回答
0

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

一般来说,

  1. 查看登录表单,获取名称和密码字段的名称以及表单发布到的操作
  2. 创建对操作 URL 的 POST 请求并正确传递名称和密码(例如 name=username&password=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

看起来像谷歌代码,用于对其服务进行身份验证。

于 2009-09-09T18:52:42.477 回答