`
sdusjy
  • 浏览: 29008 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

HtmlUnit小应用,Wifi客户端

 
阅读更多

来源:http://sdujq.iteye.com 作者:sdujq

学校里的无线网需要网页验证 = = 开机先开浏览器、登验证页面、输密码、点确定 很烦人有木有…… 而且验证页面不能关,这个页面每4分钟向服务器发一次消息 一旦验证页面关了网就断了 %>_<%~

?

转论坛的时候看到了HtmlUnit,心血来潮做了个客户端。

?

先介绍下HtmlUnit,可以把它理解成一个没有界面的浏览器,内置了javascript引擎,可以模拟javascript的运行(比分析页面然后模拟网页向服务器定时发信息的工作量少了很多)。

?

连接部分很简单,代码如下:

?

package WiFiControl;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import java.util.Iterator;
import javax.swing.JOptionPane;

/**
 * htmlUnit模仿登陆Wifi认证页面
 * 
 * @author sdujq
 * 
 */
public class WifiIndex {

	public static HtmlPage resultPage;
	public static HtmlPage page;
	public static boolean working = false;
	public final static String INDEX = "http://192.168.8.10/portal/";

	/**
	 * 连接Wifi认证页面
	 * 
	 * @throws Exception
	 */
	public static void open() throws Exception {
		WebClient client = new WebClient(BrowserVersion.INTERNET_EXPLORER_8);
		client.waitForBackgroundJavaScript(10000);
		page = client.getPage(INDEX);
		System.gc();
	}

	/**
	 * 登陆Wifi
	 * 
	 * @param uname
	 *            用户名
	 * @param upwd
	 *            密码
	 * @return 是否连接成功
	 * @throws Exception
	 *             囧囧有神
	 */
	public static boolean connect(String uname, String upwd) throws Exception {
		if (page == null) {
			open();
		}
		Iterator<HtmlElement> nodes = page.getHtmlElementDescendants()
				.iterator();
		HtmlInput name = null;
		HtmlInput pwd = null;
		HtmlElement bt = null;
		while (nodes.hasNext()) {
			HtmlElement node = nodes.next();
			String nameArribute = node.getAttribute("name");
			if (nameArribute.equals("username")) {
				name = (HtmlInput) node;
			} else if (nameArribute.equals("password")) {
				pwd = (HtmlInput) node;
			} else if (nameArribute.equals("Submit1")) {
				bt = node;
			}
		}
		name.setValueAttribute(uname);
		pwd.setValueAttribute(upwd);
		resultPage = bt.click();
		Iterator<HtmlElement> eList = resultPage.getHtmlElementDescendants()
				.iterator();
		String res = null;
		while (elist.hasNext()) {
			res = elist.next().getTextContent();
		}
		if (res.contains("You have logged in!")) {
			showMessage("您已经登陆!");
			open();
			return false;
		} else if (res
				.contains("The user does not exist or has not subscribed for this service")) {
			showMessage("用户名或密码错误!");
			open();
			return false;
		}
		working = true;
		return true;
	}
	/**
	 * 显示信息
	 * @param str 信息
	 */
	public static void showMessage(final String str) {
		java.awt.EventQueue.invokeLater(new Runnable() {
			public void run() {
				JOptionPane.showMessageDialog(null, str);
			}
		});
	}
}

分享到:
评论

相关推荐

    htmlunit-2.29.zip

    HTMLUnit是一个强大的自动化测试工具,尤其适用于Web应用程序的测试。它是基于Java的,模拟了一个无图形用户界面的浏览器,能够执行JavaScript,解析HTML,并且支持CSS。这个"htmlunit-2.29.zip"文件包含了HTMLUnit...

    htmlunit基本jar包

    7. **CSS处理器**:解析和应用CSS样式的组件,如CSSParser或Jawr。 8. **其他辅助库**:如异常处理、日志记录、线程管理等通用功能的库。 使用这些JAR文件时,需要注意以下几点: 1. **版本兼容性**:确保所使用的...

    htmlunit依赖jar包

    5. **CSS解析**: 对于CSS的支持,HTMLUnit使用了Cascading Style Sheets (CSS) Object Model (CSOM)来解析和应用CSS规则。 6. **异常处理和模拟**: HTMLUnit还包含了各种模拟浏览器行为的组件,如模拟点击、填写...

    htmlUnit所需jar包

    在实际应用中,一个典型的HTMLUnit程序可能包括以下步骤: 1. 创建`HtmlUnitWebClient`实例。 2. 使用`WebClient`打开指定URL的网页。 3. 通过DOM操作(如`getByXPath`, `getElementById`, `getElementsByClassName`...

    Htmlunit2.23-bin.zip

    HTMLUnit的核心是基于Jakarta HtmlUnit,这是一个高度可配置的Web客户端模拟器,能够执行JavaScript,解析和渲染HTML页面。它提供了对HTTP协议的支持,包括GET和POST请求,并能够处理cookies和其他会话管理功能。这...

    htmlunit-2.3..zip

    HTMLUnit是一款强大的无头Web客户端库,主要用于网页的单元测试。它模拟了一个浏览器,能够执行JavaScript,解析HTML,处理CSS,以及与网页上的各种元素进行交互。这个“htmlunit-2.3.zip”压缩包包含了运行和使用...

    htmlunit-2.19-bin

    HTMLUnit是一个基于Java的无头Web客户端库,它模拟了一个完整的浏览器,但不涉及实际的图形用户界面。这个“htmlunit-2.19-bin”压缩包包含了HTMLUnit的二进制版本,允许开发者在Java应用程序中进行网页自动化测试和...

    htmlunit-2.27-bin

    此外,由于HTMLUnit支持JavaScript,它还能处理那些依赖于客户端脚本的复杂交互。 总之,HTMLUnit-2.27是一个强大的工具,它允许开发者在不依赖真实浏览器的情况下进行Web测试和数据抓取。通过下载这个压缩包,用户...

    htmlunit所需要jar包

    3. **cssparser-0.9.5.jar**:这是一个CSS解析器,用于解析和处理CSS样式表,这对于HTMLUnit理解并应用网页样式至关重要。 4. **apache-mime4j-0.6.jar**:Apache MIME4J是处理MIME消息的Java库,它支持解析、构建...

    htmlunit依赖的所有jar

    在Java应用中使用HTMLUnit,通常需要依赖一系列的JAR(Java Archive)文件,这些文件提供了必要的功能支持,如网络通信、HTML解析、JavaScript引擎等。以下将详细介绍HTMLUnit及其依赖的JAR文件。 1. **HtmlUnit...

    htmlunit参考文档

    1. **自动化测试**:HTMLUnit常用于编写自动化Web应用测试,因为它可以模拟用户交互,如点击按钮、填写表单等。 2. **网页抓取**:在不需要完整浏览器环境的爬虫项目中,HTMLUnit是一个轻量级且高效的工具。 3. **...

    HtmlUnit-2.5(jar  doc)

    HtmlUnit是一个强大的Java库,主要用于模拟浏览器行为,执行无头Web客户端测试。它是一个headless浏览器,意味着它可以在没有图形用户界面的情况下运行,这在自动化测试、数据抓取和性能评估等场景中非常有用。这个...

    htmlunit-2.14

    通过这些框架,可以组织和运行一系列的测试用例,确保应用程序在不同场景下的正确性。 8. **性能优势**:由于HTMLUnit是基于Java的,所以它具有跨平台的特性。同时,由于它不需要启动真实的浏览器,所以运行速度...

    传一个htmlunit依赖的jar包,官网所下

    HTMLUnit是一个Java库,它提供了一个无头浏览器的模拟,允许开发者在没有真实浏览器环境的情况下进行Web客户端测试和自动化。这个“htmlunit-2.25”压缩包包含的就是HTMLUnit库的版本2.25,是进行无头网页交互的关键...

    htmlunit 及其 依赖包

    HTMLUnit是一个功能强大的Java库,它模拟了一个无头Web浏览器,允许开发者进行自动化网页测试和网络爬虫工作。这个库的核心在于它能够解析HTML、执行JavaScript,并与网页上的元素进行交互,而无需真实地打开一个...

    htmlunit-2.1.5源码

    HTMLUnit是一个Java库,它模拟了一个无头Web浏览器,用于自动化网页测试和抓取。它提供了JavaScript支持,能够处理AJAX请求,使开发者能够在没有实际图形界面的情况下与网页交互。这个"htmlunit-2.1.5源码"包包含了...

    htmlunit用到的jar包

    4. **netty**: HTMLUnit可能依赖Netty库来处理网络通信,这是一个高性能的异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。 5. **httpclient** 和 **httpcore**: 这两个jar包是...

    htmlunit-2.36和htmlunit-2.50,包括关联文件

    HTMLUnit是Java编程语言中的一款无头Web浏览器库,它模拟了浏览器的行为,但不涉及图形用户界面。这个工具主要用于自动化测试和网络爬虫,因为它能够解析HTML、执行JavaScript,并与网页上的各种元素进行交互。在...

    htmlunit2.9

    总的来说,HTMLUnit 2.9提供了一种强大的工具,使得开发者能够对Web应用进行深入的测试和数据抓取,而无需依赖于真实的浏览器环境。然而,熟悉其工作原理和API,以及如何处理可能出现的问题,是充分利用这个库的关键...

    最新版HtmlUnit2.22含API文档

    HtmlUnit是Java编程语言中的一款无头浏览器模拟库,它允许开发者在没有真实浏览器环境的情况下进行Web应用程序的测试和自动化。最新版HtmlUnit 2.22提供了对现代Web技术的强大支持,包括JavaScript、Ajax以及各种...

Global site tag (gtag.js) - Google Analytics