How to get a form captcha image with Jsoup?

后端 未结 2 1472
南方客
南方客 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 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

提交回复
热议问题