利用htmlunit登陸帶驗證碼圖片的網站
阿新 • • 發佈:2019-02-03
以百度統計為例,說明下如何用htmlunit登陸帶驗證碼的網站
//baidu統計登陸程式碼 try { WebClient client = new WebClient(BrowserVersion.INTERNET_EXPLORER_7); client.setJavaScriptEnabled(false); HttpWebConnection httpwebconnection = new HttpWebConnection(client); httpwebconnection.setUseInsecureSSL(true); client.setWebConnection(httpwebconnection); HtmlPage page = client.getPage("http://tongji.baidu.com"); HtmlElement username = page.getElementById("UserName"); HtmlElement password = page.getElementById("Password"); HtmlElement valiCode = page.getElementById("Valicode"); HtmlImage valiCodeImg = (HtmlImage) page.getElementById("cas_code"); ImageReader imageReader = valiCodeImg.getImageReader(); BufferedImage bufferedImage = imageReader.read(0); JFrame f2 = new JFrame(); JLabel l = new JLabel(); l.setIcon(new ImageIcon(bufferedImage)); f2.getContentPane().add(l); f2.setSize(100, 100); f2.setTitle("驗證碼"); f2.setVisible(true); String valicodeStr = JOptionPane.showInputDialog("請輸入驗證碼:"); f2.setVisible(false); HtmlElement submit = page.getElementById("Submit"); HtmlSubmitInput submit2 = (HtmlSubmitInput) submit; username.click(); username.type("gabazi"); password.click(); password.type("******"); valiCode.click(); valiCode.type(valicodeStr); HtmlPage resultPage = submit2.click(); System.out.println(resultPage.asText()); System.exit(0); } catch(Exception e) { e.printStackTrace(); }