HtmlUnit 헤드리스 브라우저를 사용하여이 webpage을 탐색합니다 (이 웹 페이지에서 문제를 더 잘 이해할 수 있음).HtmlUnit API for Java (헤드리스 브라우저)에 문제가 있습니까?
나는 다음과 같은 명령
final WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_7);
try {
// Configuring the webClient
webClient.setJavaScriptEnabled(true);
webClient.setThrowExceptionOnScriptError(false);
webClient.setCssEnabled(true);
webClient.setUseInsecureSSL(true);
webClient.setRedirectEnabled(true);
webClient.setActiveXNative(true);
webClient.setAppletEnabled(true);
webClient.setPrintContentOnFailingStatusCode(true);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
// Adding listeners
webClient.addWebWindowListener(new com.gargoylesoftware.htmlunit.WebWindowListener() {
public void webWindowOpened(WebWindowEvent event) {
numberOfWebWindowOpened++;
System.out.println("Number of opened WebWindow: " + numberOfWebWindowOpened);
}
public void webWindowContentChanged(WebWindowEvent event) {
}
public void webWindowClosed(WebWindowEvent event) {
numberOfWebWindowClosed++;
System.out.println("Number of closed WebWindow: " + numberOfWebWindowClosed);
}
});
webClient.setWebConnection(new HttpWebConnection(webClient) {
public WebResponse getResponse(WebRequestSettings settings) throws IOException {
System.out.println(settings.getUrl());
return super.getResponse(settings);
}
});
CookieManager cm = new CookieManager();
webClient.setCookieManager(cm);
HtmlPage page = webClient.getPage("http://www.ticketmaster.com/event/0B004354D90759FD?artistid=1073053&majorcatid=10002&minorcatid=207");
HtmlSelect select = (HtmlSelect) page.getElementById("quantity_select");
select.setSelectedAttribute("1", true);
로의 선택 값을 "1"
http://i45.tinypic.com/14m70up.jpg
을 설정 한 후 다음 버튼을
http://i50.tinypic.com/a27uv5.jpg
에 클릭 한 팔로 잉에 의해 g는
HtmlButtonInput button = (HtmlButtonInput) page.getElementById("find_tickets_button");
HtmlPage captchaPage = button.click();
Thread.sleep(60*1000);
System.out.println("======captcha page=======");
System.out.println(captchaPage.asXml());
하지만 심지어 버튼을 클릭하고 Thread.sleep를() 메소드를 통해 60 초 동안 기다린 후, 나는 같은 HtmlPage을 얻고있다
명령.하지만 실제 브라우저에서 동일한 작업을 수행 할 때 보안 문자가 포함 된 페이지가 표시됩니다.
나는 htmlunit에서 뭔가를 놓치고 있다고 생각합니다.
Q1. htmlunit의 브라우저를 통해 동일한 페이지 (CAPTCHA 포함)가 표시되지 않는 이유는 무엇입니까?
'webClient'를 작성하는 코드에 – Bozho
으로'BROWSER_VERSION'을 설정하면 User-Agent 헤더를 설정해야합니다. 따라서 요청에 따라 브라우저가 보낸 HTTP 헤더와 응용 프로그램에서 (프록시를 통해) 보낸 메시지를 비교하여 차이점을 확인하십시오. – Bozho
나는 그것을 또한 시도했다. 두 요청 모두 모든 요청 헤더가 동일합니다. –