htmlunit 模拟指定浏览器

htmlunit 模拟指定浏览器

前面的测试代码是直接请求的,有些网站服务器防火墙会直接拒绝访问。

htmlunit 模拟指定浏览器

这个是用火狐调试工具看到的请求头信息里的属性,当然上面还有返回的头消息;


现在用htmlunit来模拟下浏览器请求;主要是加了一些头消息;

我们用htmlunit可以模拟浏览器执行,内置的可以模拟IE,火狐,谷歌;

WebClient构造方法里有个重载方法,可以加一个指定版本属性;

htmlunit 模拟指定浏览器


完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.open1111;
 
import java.io.IOException;
import java.net.MalformedURLException;
 
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
 
public class HtmlUnitTest {
 
    public static void main(String[] args) {
        WebClient webClient=new WebClient(BrowserVersion.FIREFOX_52); // 实例化Web客户端 
        try {
            HtmlPage page=webClient.getPage("http://www.java1234.com"); // 解析获取页面
            System.out.println("网页html:"+page.asXml()); // 获取Html
            System.out.println("====================");
            System.out.println("网页文本:"+page.asText()); // 获取文本
        catch (FailingHttpStatusCodeException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            webClient.close(); // 关闭客户端,释放内存
        }
    }
}

运行效果和前面的一样;