diff --git a/README.md b/README.md index 7fa2058..124803a 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,8 @@ Examples of API requests for different captcha types are available on the [Java - [atbCAPTCHA](#atbcaptcha) - [CyberSiARA](#cybersiara) - [DataDome](#datadome) + - [CaptchaFox](#captchafox) + - [Temu](#temu) - [Other methods](#other-methods) - [send / getResult](#send--getresult) - [balance](#balance) @@ -496,6 +498,34 @@ captcha.setUserAgent("Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHT captcha.setProxy("HTTPS", "login:password@IP_address:PORT"); ``` +### CaptchaFox + +[API method description.](https://2captcha.com/2captcha-api#captchafox) + +This method can be used to solve CaptchaFox using a token. Returns a token. + +```java +Captchafox captcha = new Captchafox(); +captcha.setSiteKey("sk_ILKWNruBBVKDOM7dZs59KHnDLEWiH"); +captcha.setUrl("https://mysite.com/page/with/captchafox"); +captcha.setProxy("HTTPS", "login:password@IP_address:PORT"); +captcha.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36"); +``` + +### Temu + +[API method description.](https://2captcha.com/2captcha-api#temucaptcha) + +This method can be used to solve Temucaptch. Returns a coordinates. + +```java +Temu captcha = new Temu(); +captcha.setBody(body); +captcha.setPart1(part1); +captcha.setPart2(part2); +captcha.setPart3(part3); +``` + ## Other methods ### send / getResult diff --git a/src/main/java/com/twocaptcha/captcha/Captcha.java b/src/main/java/com/twocaptcha/captcha/Captcha.java index 523d481..f9fa73f 100644 --- a/src/main/java/com/twocaptcha/captcha/Captcha.java +++ b/src/main/java/com/twocaptcha/captcha/Captcha.java @@ -64,4 +64,7 @@ public Map getFiles() { return new HashMap<>(files); } + public void setUserAgent(String userAgent) { + params.put("userAgent", userAgent); + } } diff --git a/src/main/java/com/twocaptcha/captcha/Captchafox.java b/src/main/java/com/twocaptcha/captcha/Captchafox.java new file mode 100644 index 0000000..0ad654d --- /dev/null +++ b/src/main/java/com/twocaptcha/captcha/Captchafox.java @@ -0,0 +1,18 @@ +package com.twocaptcha.captcha; + +public class Captchafox extends Captcha { + + public Captchafox() { + super(); + params.put("method", "captchafox"); + } + + public void setSiteKey(String siteKey) { + params.put("sitekey", siteKey); + } + + public void setUrl(String url) { + params.put("pageurl", url); + } + +} diff --git a/src/main/java/com/twocaptcha/captcha/Temu.java b/src/main/java/com/twocaptcha/captcha/Temu.java new file mode 100644 index 0000000..6a5703d --- /dev/null +++ b/src/main/java/com/twocaptcha/captcha/Temu.java @@ -0,0 +1,22 @@ +package com.twocaptcha.captcha; + +public class Temu extends Captcha { + + public Temu() { + super(); + params.put("method", "temuimage"); + } + + public void setBody(String body) { + params.put("body", body); + } + public void setPart1(String part1) { + params.put("part1", part1); + } + public void setPart2(String part2) { + params.put("part2", part2); + } + public void setPart3(String part3) { + params.put("part3", part3); + } +} diff --git a/src/main/java/examples/CaptchafoxExample.java b/src/main/java/examples/CaptchafoxExample.java new file mode 100644 index 0000000..59dee0e --- /dev/null +++ b/src/main/java/examples/CaptchafoxExample.java @@ -0,0 +1,26 @@ +package examples; + +import com.twocaptcha.TwoCaptcha; +import com.twocaptcha.captcha.Captchafox; +import com.twocaptcha.captcha.Turnstile; + +public class CaptchafoxExample { + + public static void main(String[] args) { + TwoCaptcha solver = new TwoCaptcha(args[0]); + + Captchafox captcha = new Captchafox(); + captcha.setSiteKey("sk_ILKWNruBBVKDOM7dZs59KHnDLEWiH"); + captcha.setUrl("https://mysite.com/page/with/captchafox"); + captcha.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36"); + captcha.setProxy("HTTPS", "login:password@IP_address:PORT"); + + try { + solver.solve(captcha); + System.out.println("Captcha solved: " + captcha.getCode()); + } catch (Exception e) { + System.out.println("Error occurred: " + e.getMessage()); + } + } + +} diff --git a/src/main/java/examples/TemuExample.java b/src/main/java/examples/TemuExample.java new file mode 100644 index 0000000..9856628 --- /dev/null +++ b/src/main/java/examples/TemuExample.java @@ -0,0 +1,38 @@ +package examples; + +import com.twocaptcha.TwoCaptcha; +import com.twocaptcha.captcha.Temu; + +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Base64; + +public class TemuExample { + + public static void main(String[] args) throws Exception { + TwoCaptcha solver = new TwoCaptcha(args[0]); + + byte[] bodyBytes = Files.readAllBytes(Paths.get("src/main/resources/temu/body.png")); + String body = Base64.getEncoder().encodeToString(bodyBytes); + byte[] part1Bytes = Files.readAllBytes(Paths.get("src/main/resources/temu/part1.png")); + String part1 = Base64.getEncoder().encodeToString(part1Bytes); + byte[] part2Bytes = Files.readAllBytes(Paths.get("src/main/resources/temu/part2.png")); + String part2 = Base64.getEncoder().encodeToString(part2Bytes); + byte[] part3Bytes = Files.readAllBytes(Paths.get("src/main/resources/temu/part3.png")); + String part3 = Base64.getEncoder().encodeToString(part3Bytes); + + Temu captcha = new Temu(); + captcha.setBody(body); + captcha.setPart1(part1); + captcha.setPart2(part2); + captcha.setPart3(part3); + + try { + solver.solve(captcha); + System.out.println("Captcha solved: " + captcha.getCode()); + } catch (Exception e) { + System.out.println("Error occurred: " + e.getMessage()); + } + } + +} diff --git a/src/main/resources/temu/body.png b/src/main/resources/temu/body.png new file mode 100644 index 0000000..e45ed92 Binary files /dev/null and b/src/main/resources/temu/body.png differ diff --git a/src/main/resources/temu/part1.png b/src/main/resources/temu/part1.png new file mode 100644 index 0000000..792f6de Binary files /dev/null and b/src/main/resources/temu/part1.png differ diff --git a/src/main/resources/temu/part2.png b/src/main/resources/temu/part2.png new file mode 100644 index 0000000..de5a603 Binary files /dev/null and b/src/main/resources/temu/part2.png differ diff --git a/src/main/resources/temu/part3.png b/src/main/resources/temu/part3.png new file mode 100644 index 0000000..be84dba Binary files /dev/null and b/src/main/resources/temu/part3.png differ diff --git a/src/test/java/com/twocaptcha/CaptchafoxTest.java b/src/test/java/com/twocaptcha/CaptchafoxTest.java new file mode 100644 index 0000000..869be8a --- /dev/null +++ b/src/test/java/com/twocaptcha/CaptchafoxTest.java @@ -0,0 +1,28 @@ +package com.twocaptcha; + +import com.twocaptcha.captcha.Captchafox; +import com.twocaptcha.captcha.Turnstile; + +import java.util.HashMap; +import java.util.Map; + +public class CaptchafoxTest extends AbstractWrapperTestCase { + + public void testAllOptions() throws Exception { + Captchafox captcha = new Captchafox(); + captcha.setSiteKey("sk_ILKWNruBBVKDOM7dZs59KHnDLEWiH"); + captcha.setUrl("https://mysite.com/page/with/captchafox"); + captcha.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36"); + + Map params = new HashMap<>(); + params.put("method", "captchafox"); + params.put("sitekey", "sk_ILKWNruBBVKDOM7dZs59KHnDLEWiH"); + params.put("pageurl", "https://mysite.com/page/with/captchafox"); + params.put("userAgent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36"); + params.put("soft_id", "4581"); + params.put("json", "0"); + + checkIfCorrectParamsSendAndResultReturned(captcha, params); + } + +} \ No newline at end of file diff --git a/src/test/java/com/twocaptcha/TemuTest.java b/src/test/java/com/twocaptcha/TemuTest.java new file mode 100644 index 0000000..fe937f3 --- /dev/null +++ b/src/test/java/com/twocaptcha/TemuTest.java @@ -0,0 +1,29 @@ +package com.twocaptcha; + +import com.twocaptcha.captcha.Temu; + +import java.util.HashMap; +import java.util.Map; + +public class TemuTest extends AbstractWrapperTestCase { + + public void testAllOptions() throws Exception { + Temu captcha = new Temu(); + captcha.setBody("body"); + captcha.setPart1("part1"); + captcha.setPart2("part2"); + captcha.setPart3("part3"); + + Map params = new HashMap<>(); + params.put("method", "temuimage"); + params.put("body", "body"); + params.put("part1", "part1"); + params.put("part2", "part2"); + params.put("part3", "part3"); + params.put("soft_id", "4581"); + params.put("json", "0"); + + checkIfCorrectParamsSendAndResultReturned(captcha, params); + } + +} \ No newline at end of file