来源: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所需工具包,htmlUnit,htmlUnit,htmlUnit,htmlUnit,htmlUnit
htmlunit jar zip 2.23 用于html爬虫
htmlunit 模拟cookie 存取 cookie值登录 如: wsyyuser.xywy.com Cookie c = new Cookie("wsyyuser.xywy.com", "PHPSESSID", Common.getValue("session_id") );
htmlunit2.8.jar
htmlunit-2.1.5的源码,可以提高我们对htmlunit的理解
java 开发 htmlunit官方jar包和api文档
htmlunit-2.19-bin
htmlunit用到的jar包htmlunit用到的jar包htmlunit用到的jar包
赠送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 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。 项目可以模拟浏览器运行,被誉为java浏览器的开源实现。是一个没有界面的...
htmlunit爬虫工具,Java所需的依赖jar包,凑够50个字符
htmlunit包
赠送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.9all full jar
htmlunit所需要的所有的jar,亲测可用,包含htmlunit,htmlunit-core-js等等
赠送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;...
赠送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文档:...
赠送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包
Htmlunit2.8开发详细文档,还有一些例子源码