`
sdusjy
  • 浏览: 27947 次
  • 性别: 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所需jar包

    htmlUnit所需工具包,htmlUnit,htmlUnit,htmlUnit,htmlUnit,htmlUnit

    Htmlunit2.23-bin.zip

    htmlunit jar zip 2.23 用于html爬虫

    htmlunit模拟cookie登录

    htmlunit 模拟cookie 存取 cookie值登录 如: wsyyuser.xywy.com Cookie c = new Cookie("wsyyuser.xywy.com", "PHPSESSID", Common.getValue("session_id") );

    htmlunit2.8.jar

    htmlunit2.8.jar

    htmlunit-2.1.5源码

    htmlunit-2.1.5的源码,可以提高我们对htmlunit的理解

    htmlunit-2.14

    java 开发 htmlunit官方jar包和api文档

    htmlunit-2.19-bin

    htmlunit-2.19-bin

    htmlunit用到的jar包

    htmlunit用到的jar包htmlunit用到的jar包htmlunit用到的jar包

    htmlunit-2.33-API文档-中英对照版.zip

    赠送jar包:htmlunit-2.33.jar; 赠送原API文档:htmlunit-2.33-javadoc.jar; 赠送源代码:htmlunit-2.33-sources.jar; 赠送Maven依赖信息文件:htmlunit-2.33.pom; 包含翻译后的API文档:htmlunit-2.33-javadoc-...

    htmlunit下载资源示例

    通过htmlunit 下载网站资源的简单示例 htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。 项目可以模拟浏览器运行,被誉为java浏览器的开源实现。是一个没有界面的...

    htmlunit依赖jar包

    htmlunit爬虫工具,Java所需的依赖jar包,凑够50个字符

    htmlunit包

    htmlunit包

    htmlunit-2.49.1-API文档-中文版.zip

    赠送jar包:htmlunit-2.49.1.jar; 赠送原API文档:htmlunit-2.49.1-javadoc.jar; 赠送源代码:htmlunit-2.49.1-sources.jar; 赠送Maven依赖信息文件:htmlunit-2.49.1.pom; 包含翻译后的API文档:htmlunit-2.49....

    htmlunit2.9

    htmlunit2.9all full jar

    htmlunit所需要jar包

    htmlunit所需要的所有的jar,亲测可用,包含htmlunit,htmlunit-core-js等等

    htmlunit-cssparser-1.2.0-API文档-中文版.zip

    赠送jar包:htmlunit-cssparser-1.2.0.jar; 赠送原API文档:htmlunit-cssparser-1.2.0-javadoc.jar; 赠送源代码:htmlunit-cssparser-1.2.0-sources.jar; 赠送Maven依赖信息文件:htmlunit-cssparser-1.2.0.pom;...

    neko-htmlunit-2.27-API文档-中文版.zip

    赠送jar包:neko-htmlunit-2.27.jar; 赠送原API文档:neko-htmlunit-2.27-javadoc.jar; 赠送源代码:neko-htmlunit-2.27-sources.jar; 赠送Maven依赖信息文件:neko-htmlunit-2.27.pom; 包含翻译后的API文档:...

    htmlunit-core-js-2.27-API文档-中文版.zip

    赠送jar包:htmlunit-core-js-2.27.jar; 赠送原API文档:htmlunit-core-js-2.27-javadoc.jar; 赠送源代码:htmlunit-core-js-2.27-sources.jar; 赠送Maven依赖信息文件:htmlunit-core-js-2.27.pom; 包含翻译后...

    htmlunit网络爬虫jar包

    htmlunit网络爬虫jar包

    Htmlunit2.8开发文档

    Htmlunit2.8开发详细文档,还有一些例子源码

Global site tag (gtag.js) - Google Analytics