一、前言
基于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@@b@