From 8ab8b195ef9626c05007b4fa384ed955b0c5a557 Mon Sep 17 00:00:00 2001 From: Maxim S Date: Fri, 3 May 2024 16:03:49 +0200 Subject: [PATCH] - Added tencent method to solver.py - Added captcha solution examples tencent.py and tencent_options.py - Added test test_tencent.py Signed-off-by: Maxim S --- examples/tencent.py | 28 +++++++++++++++++++++++++ examples/tencent_options.py | 42 +++++++++++++++++++++++++++++++++++++ tests/test_tencent.py | 29 +++++++++++++++++++++++++ twocaptcha/solver.py | 26 +++++++++++++++++++++++ 4 files changed, 125 insertions(+) create mode 100644 examples/tencent.py create mode 100644 examples/tencent_options.py create mode 100644 tests/test_tencent.py diff --git a/examples/tencent.py b/examples/tencent.py new file mode 100644 index 0000000..3ba7a3a --- /dev/null +++ b/examples/tencent.py @@ -0,0 +1,28 @@ +import sys +import os + +sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) + +from twocaptcha import TwoCaptcha + +# in this example we store the API key inside environment variables that can be set like: +# export APIKEY_2CAPTCHA=1abc234de56fab7c89012d34e56fa7b8 on Linux or macOS +# set APIKEY_2CAPTCHA=1abc234de56fab7c89012d34e56fa7b8 on Windows +# you can just set the API key directly to it's value like: +# api_key="1abc234de56fab7c89012d34e56fa7b8" + +api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY') + +solver = TwoCaptcha(api_key) + +try: + result = solver.tencent( + app_id="197322596", + url="https://www.holla.world/random-video-chat#app" + ) + +except Exception as e: + sys.exit(e) + +else: + sys.exit('result: ' + str(result)) \ No newline at end of file diff --git a/examples/tencent_options.py b/examples/tencent_options.py new file mode 100644 index 0000000..da33ca9 --- /dev/null +++ b/examples/tencent_options.py @@ -0,0 +1,42 @@ +import sys +import os + +sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) + +from twocaptcha import TwoCaptcha + +# in this example we store the API key inside environment variables that can be set like: +# export APIKEY_2CAPTCHA=1abc234de56fab7c89012d34e56fa7b8 on Linux or macOS +# set APIKEY_2CAPTCHA=1abc234de56fab7c89012d34e56fa7b8 on Windows +# you can just set the API key directly to it's value like: +# api_key="1abc234de56fab7c89012d34e56fa7b8" + +api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY') + + +config = { + 'server': '2captcha.com', # can be also set to 'rucaptcha.com' + 'apiKey': api_key, + 'softId': 123, + # 'callback': 'https://your.site/result-receiver', # if set, sovler with just return captchaId, not polling API for the answer + 'defaultTimeout': 120, + 'recaptchaTimeout': 600, + 'pollingInterval': 10, + } + +solver = TwoCaptcha(**config) + +try: + result = solver.tencent(app_id="197325555", + url="https://your.site/result-receiver", + # proxy={ + # 'type': 'HTTPS', + # 'uri': 'ub6900fef552505bc-zone-custom-session-JcIHpmDKv-sessTime-1:ub6900fef552505bc@43.152.113.55:2333' + # } + ) + +except Exception as e: + sys.exit(e) + +else: + sys.exit('result: ' + str(result)) diff --git a/tests/test_tencent.py b/tests/test_tencent.py new file mode 100644 index 0000000..1ed0a54 --- /dev/null +++ b/tests/test_tencent.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 + +import unittest + +try: + from .abstract import AbstractTest +except ImportError: + from abstract import AbstractTest + + +class TencentTest(AbstractTest): + + def test_all_params(self): + params = { + "app_id": "197322596", + "url": "https://www.holla.world/random-video-chat#app" + } + + sends = { + "method": "tencent", + "app_id": "197322596", + "pageurl": "https://www.holla.world/random-video-chat#app", + } + + return self.send_return(sends, self.solver.tencent, **params) + + +if __name__ == '__main__': + unittest.main() diff --git a/twocaptcha/solver.py b/twocaptcha/solver.py index 2d829a8..8b960db 100755 --- a/twocaptcha/solver.py +++ b/twocaptcha/solver.py @@ -563,6 +563,32 @@ def friendly_captcha(self, sitekey, url, **kwargs): **kwargs) return result + def tencent(self, app_id, url, **kwargs): + '''Wrapper for solving Tencent captcha. + + Parameters + __________ + app_id : str + The value of appId parameter in the website source code. + url : str + The full URL of target web page where the captcha is loaded. We do not open the page, not a problem if it is + available only for authenticated users. + softId : int, optional + ID of software developer. Developers who integrated their software with 2Captcha get reward: 10% of + spendings of their software users. + callback : str, optional + URL for pingback (callback) response that will be sent when captcha is solved. URL should be registered on + the server. More info here https://2captcha.com/2captcha-api#pingback. + proxy : dict, optional + {'type': 'HTTPS', 'uri': 'login:password@IP_address:PORT'}. + ''' + + result = self.solve(app_id=app_id, + url=url, + method="tencent", + **kwargs) + return result + def cutcaptcha(self, misery_key, apikey, url, **kwargs): ''' Wrapper for solving Friendly Captcha