【问题标题】:How can I extract data from a Java applet (inside the browser)如何从 Java 小程序中提取数据(在浏览器内)
【发布时间】:2011-08-04 21:34:08
【问题描述】:

好吧,好吧,我们开始......

我们有一个在常规浏览器(ff4+ 或 ie5+)上运行的 java 小程序。

我无权访问 java 代码/servlet。甚至连服务器也没有。

我需要从这个小程序发送/检索数据。这意味着我必须通过单击按钮和填写表单的文本框来模拟用户,并返回数据(在服务器响应之后),这些数据将在文本框中。

所以可用的技术是 C、VB、.NET(主要是 webbrowser 对象)、PHP(cUrl 可用)、JavaScript、使用 Fiddler 嗅探浏览器/服务器通信。

我们真的需要这个。但如果那是不可能的,那么我们可能也必须知道。 数据归我公司所有,因此不会造成版权。

我也对非传统解决方案持开放态度,例如将 html 保存为图像,然后使用某些 OCR 软件检索数据...

那么任何建议或指点将不胜感激。

谢谢

保罗·布埃诺。

【问题讨论】:

  • 如果它是一个 Windows 应用程序,我会告诉你使用 Accessibility api(想想视障人士的屏幕阅读器)(可用于自动化控制)。看看这样的事情是否有帮助:java.sun.com/javase/technologies/accessibility/index.jsp
  • 您好,小程序是通过 http 还是 https 连接?
  • 嗨 tomdemuyt,仅在特定端口上使用 http(如果有任何区别),因此 url 以 http://corp.site.com:7777/sx/jsp/login.jsp?var=45345&var2&asdf 开头。
  • 您需要applet 在普通浏览器中运行,还是可以将applet 嵌入到另一个程序中(即模拟applet 环境的程序)?小程序是否必须与用户通信?
  • 它可能不在普通浏览器上,但我可以访问收到的数据,也可以设置要发送的数据。在这些操作之间,我必须能够将这些数据保存到本地数据库中以备将来使用。不需要用户沟通,因为“自动化工具”可以控制所有过程。

标签: applet sniffing


【解决方案1】:

必须模拟用户浏览会带来问题,如果可行,我会建议替代路线。这些是我将采取的步骤:

  1. 从我的缓存中获取小程序类或 jar(访问页面/小程序的任何人都可以这样做)。
  2. 将代码反编译成 Java 源代码(使用 jad 或其他首选工具)
  3. 查看小程序与服务通信的过程
  4. 编写一个应用程序,将我的数据提交给小程序连接的服务,并像小程序一样处理任何响应。

【讨论】:

    【解决方案2】:

    您可以使用 JRE 中附带的“appletviewer”在没有浏览器的情况下运行任何小程序。通过这种方式,使用http://code.google.com/p/windowlicker/ 读取和发送虚假输入以控制 SWING GUI 是可能的,但不切实际。

    但在可以访问代码的常规浏览器环境中,您更愿意这样做:

    在您的对象标签中使用“scriptable”和“mayscript”属性/元素。标准浏览器 JRE 包含一个“plugin.jar”,其中包含完成这项工作所需的功能。该接口允许 Java-Applet 代码与 Javascript 进行反向通信,从那里你可以做任何你想做的事情(即 ajax 请求)

    这个话题相当复杂,所以看看谷歌告诉我们的:

    http://www.htmlcodetutorial.com/applets/_APPLET_MAYSCRIPT.html http://www.raditha.com/java/javascript.php

    使用这个接口真的很痛苦,所以我建议在你的小程序中实现 HTTPRequests 来告诉 PHP 服务器你想告诉它什么。

    问候, 迈克尔

    【讨论】:

    • 这似乎是一个非常好的开始。但正如我所说,我无法访问 java 代码。我正在等待一个 autorizathion 来启动这个项目,所以现在没有办法尝试这个。我一拿到它就会告诉结果。
    • 如果无法访问代码或使用修改(被黑)VM JRE 或其他不寻常的执行环境,您将无法从 java 脚本控制小程序。
    【解决方案3】:

    我无权访问 java 代码/servlet。甚至对 服务器。

    Emm...这是很不寻常的情况。如果你有小程序,当然,你应该可以访问它的 src 文件来修改:)

    我需要从这个小程序发送/检索数据。这意味着我必须 通过单击按钮并填写表单来模拟用户 文本框并返回数据(在服务器响应之后) 在文本框内。

    无论如何,要“模拟”用户,您可以使用Robot 对象,但它仍然会要求您修改小程序代码以使其支持一些附加功能...我记得,JS 等无法控制 Java Applet来自外部命令,除非小程序确实包含 JS 支持的网页交互功能...但是您仍然说您 没有任何访问小程序 src的权限,因此小程序不支持任何信息netscape.javascript 与否,以及它是如何支持它的,所以还不清楚......所以我必须问你有这个小程序的任何文档吗?

    围绕问题文本并回到问题标题本身,它说

    “如何从 Java 小程序(在浏览器中)提取数据”

    我可能会这么说 要从 Java Applet 中提取数据,您可以使用支持 Java Applet 和 JS 交互的 netscape lib exampledocs。在这种情况下,这是最优化的方式

    祝你好运

    【讨论】:

      【解决方案4】:

      除非被混淆,否则反编译/更改/再次编译小程序可能不会太难。 我使用 JAD。 https://stackoverflow.com/questions/31353/is-jad-the-best-java-decompiler

      【讨论】:

        【解决方案5】:

        如果您必须通过与 Java 小程序交互而不是对其进行逆向工程来获取数据,请查看 FEST (Fixtures for Easy Software Testing)。 FEST 旨在通过模拟用户交互来测试 Java Swing GUI,但您也可以轻松地使用它来自动化您的小程序。

        查看testing applets 上的文档页面以开始使用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-23
          • 2014-06-16
          • 2018-02-16
          • 1970-01-01
          • 2010-10-28
          • 1970-01-01
          • 2010-09-17
          • 1970-01-01
          相关资源
          最近更新 更多