一、前言
基于gargoylesoftware的htmlunit开源模拟浏览器运行器,模拟登录腾达路由器Tenda爬虫,从而实现获取公网动态IP地址,这样可以定时刷新获取到公网地址,从而可以实现了域名和动态IP的绑定。
二、示例代码
1. WebClientDemo分别模拟用户登录、点击查看系统状态
package com.xwood.craw.crawler.processor.tenda;@b@@b@import com.gargoylesoftware.htmlunit.BrowserVersion;@b@import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;@b@import com.gargoylesoftware.htmlunit.WebClient;@b@import com.gargoylesoftware.htmlunit.html.HtmlPage;@b@@b@public class WebClientDemo {@b@ @b@ public static WebClient webClient=getWebClientInstance();@b@ @b@ private static WebClient getWebClientInstance() {@b@ WebClient webClient = new WebClient(BrowserVersion.CHROME);@b@ webClient.getOptions().setJavaScriptEnabled(true);@b@ webClient.getOptions().setActiveXNative(false);@b@ webClient.getOptions().setCssEnabled(false);@b@ webClient.getOptions().setThrowExceptionOnScriptError(false);@b@ webClient.waitForBackgroundJavaScript(8 * 1000);@b@ webClient.setAjaxController(new NicelyResynchronizingAjaxController());@b@ return webClient;@b@ }@b@@b@ public static void main(String[] args) throws Exception {@b@ //1.获取授权认证 -- 通过用户名密码模拟登录@b@ HtmlPage loginAuthPage1 = webClient.getPage("http://192.168.1.1/login/Auth?username=admin&password=MTU5NDE4NTkzODc=");@b@ //2.获取路由系统状态@b@ HtmlPage sysInfoPage2 =webClient.getPage("http://192.168.1.1/goform/getSysInfo?0.9524443088282748&_=1521554986074");@b@ //3.打印路由器系统信息@b@ System.out.println(sysInfoPage2.asXml());@b@ }@b@@b@}
运行控台台输出结果如下
<?xml version="1.0" encoding="ISO-8859-1"?>@b@<html>@b@ <head/>@b@ <body>@b@ {"portLink":"1,1,1,1,0","sysInfo":{"sysInfoDevName":"ä¼ä¸çº§æ 线路ç±å¨","sysInfoRunTime":"119d4h5m34s",@b@ "sysInfoSysTime":"2018-03-20 23:49:49","sysInfoSoftVersion":"V15.11.0.6(752_816)",@b@ "cpuUsePercent":2,"memoryUsePercent":75},"lanInfo":{"lanIp":"192.168.1.1",@b@ "lanMac":"CC:2D:21:2A:1B:30"},"wanInfo":[{"wanStatus":"wired",@b@ "wanError":"authPass","wanType":"pppoe","wanIP":"125.174.212.148",@b@ "wanMask":"255.255.255.255","wanGateway":"125.174.212.1",@b@ "wanDns1":"10.64.0.200","wanDns2":"10.64.0.100","wanUpFlux":"0.40KB/s","wanDownFlux":"0.46KB/s"}]}@b@ </body>@b@</html>