I am trying to use Java to send captcha to decaptcher.com. Decaptcher doesn't really explain very well how to use their APIs, so I'm trying to figure out how to use an HTTP POST request to send a captcha. Here is an example of the code I received from my site:
<form method="post" action="http://poster.decaptcher.com/" enctype="multipart/form-data"> <input type="hidden" name="function" value="picture2"> <input type="text" name="username" value="client"> <input type="text" name="password" value="qwerty"> <input type="file" name="pict"> <input type="text" name="pict_to" value="0"> <input type="text" name="pict_type" value="0"> <input type="submit" value="Send"> </form>
I have to send such a request to the web server and get the string returned to me. Here is my attempt to implement this in Java.
public String getDecaptcherAnswer(String username, String password){ try{ URL decaptcherPostURL = new URL("http://poster.decaptcher.com/"); WebRequestSettings request = new WebRequestSettings(decaptcherPostURL, HttpMethod.POST); request.setEncodingType(FormEncodingType.MULTIPART); ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new NameValuePair("function", "picture2")); params.add(new NameValuePair("username", username)); params.add(new NameValuePair("password", password)); //I added this block in File file = new File("captcha.png"); params.add(new KeyDataPair("pict", capFile, "png", "utf-8")); //---------------------- params.add(new NameValuePair("pict_to", "0")); params.add(new NameValuePair("pict_type", "0")); request.setRequestParameters(params); request.setUrl(decaptcherPostURL); HtmlPage page = webClient.getPage(request); System.out.println(page.asText()); System.out.println("--------------------------------------"); System.out.println(page.asXml()); return page.asText(); }catch (Exception e){ e.printStackTrace(); return null; } }
Should I set the pict value for the File object instead of a line indicating where captcha is stored? (captcha.png is the name of the image I'm trying to present).
source share