How to get a form captcha image with Jsoup?

后端 未结 2 1466
南方客
南方客 2020-12-10 08:20

I am developing an application for my school website and I\'m using jsoup for parsing the html.

I\'m facing a problem with captcha image I see this question and I ha

相关标签:
2条回答
  • 2020-12-10 08:55

    You said that you don't get the same image that you see on the website... That's normal because everytime you refresh the page the image is different.

    0 讨论(0)
  • 2020-12-10 09:12

    As stated in SLaks comment, you may be missing some cookies.

    Here is a working example with the provided url:

    // Load the initial page for getting the required cookies
    Connection conn = Jsoup.connect("https://www.saes.upiicsa.ipn.mx/");
    Document d = conn.get();
    
    Element captcha = d.select("#c_default_ctl00_leftcolumn_loginuser_logincaptcha_CaptchaImage").first();
    if (captcha == null) {
        throw new RuntimeException("Unable to find captcha...");
    }
    
    // Fetch the captcha image
    Connection.Response response = Jsoup //
            .connect(captcha.absUrl("src")) // Extract image absolute URL
            .cookies(conn.response().cookies()) // Grab cookies
            .ignoreContentType(true) // Needed for fetching image
            .execute();
    
    // Load image from Jsoup response
    ImageIcon image = new ImageIcon(ImageIO.read(new ByteArrayInputStream(response.bodyAsBytes())));
    
    // Show image
    JOptionPane.showMessageDialog(null, image, "Captcha image", JOptionPane.PLAIN_MESSAGE);
    

    OUTPUT

    Tested on JSoup 1.8.3

    0 讨论(0)
提交回复
热议问题