J'utilise le navigateur sans tête HtmlUnit pour parcourir ce webpage (vous pouvez voir la page Web pour avoir une meilleure compréhension du problème).Problème dans l'API HtmlUnit pour Java (navigateur sans tête)?
je fixer la valeur de sélection pour "1"
http://i45.tinypic.com/14m70up.jpg
par les commandes suivantes
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);
puis cliqué sur le bouton ci-dessous
http://i50.tinypic.com/a27uv5.jpg
par le suivant g commandes
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());
mais même après avoir cliqué sur le bouton et attendre 60 secondes par la méthode Thread.sleep(), je reçois le même HtmlPage.
Mais quand je fais la même chose avec un vrai navigateur, je reçois la page contenant CAPTCHA.
Je pense qu'il me manque quelque chose dans le htmlunit.
Q1. Pourquoi ne reçois-je pas la même page (qui contient CAPTCHA) via le navigateur de htmlunit?
donnez le code avec lequel vous créez votre 'webClient' – Bozho
Le paramètre' BROWSER_VERSION' devrait définir l'en-tête User-Agent. Alors peut-être surveiller les en-têtes HTTP envoyés par votre navigateur sur demande, et ceux envoyés par votre application (via un proxy) pour voir la différence. – Bozho
J'ai essayé cela aussi. Tous les en-têtes de requête sont identiques dans les deux cas. –