-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
2be7b2e
commit f180527
Showing
11 changed files
with
202 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
Binance | ||
======= | ||
|
||
To import this module: | ||
|
||
.. code-block:: python | ||
from python3_capsolver.binance import Binance | ||
.. autoclass:: python3_capsolver.binance.Binance | ||
:members: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,121 @@ | ||
from typing import Union | ||
|
||
from python3_capsolver.core.base import BaseCaptcha | ||
from python3_capsolver.core.enum import BinanceCaptchaTaskEnm | ||
from python3_capsolver.core.serializer import CaptchaResponseSer, BinanceCaptchaTaskSer | ||
|
||
|
||
class Binance(BaseCaptcha): | ||
""" | ||
The class is used to work with Capsolver Imperva method. | ||
Args: | ||
api_key: Capsolver API key | ||
captcha_type: Captcha type name, like ``AntiImpervaTask`` and etc. | ||
websiteUrl: The website url | ||
userAgent: Browser userAgent | ||
Examples: | ||
>>> Imperva(api_key="CAI-BA9XXXXXXXXXXXXX2702E010", | ||
... captcha_type="AntiImpervaTask", | ||
... websiteUrl="https://www.milanuncios.com/", | ||
... userAgent="Mozilla/5.0 (Windows ....", | ||
... proxy="socks5:98.181.137.83:4145", | ||
... utmvc=True, | ||
... reese84=True, | ||
... reeseScriptUrl="https://www.milanuncios.com/librarym.js", | ||
... ).captcha_handler() | ||
CaptchaResponseSer(errorId=0, | ||
errorCode=None, | ||
errorDescription=None, | ||
taskId='73bdcd28-6c77-4414-8....', | ||
status=<ResponseStatusEnm.Ready: 'ready'>, | ||
solution={'token': '90F9EAF...'} | ||
) | ||
>>> Imperva(api_key="CAI-BA9XXXXXXXXXXXXX2702E010", | ||
... captcha_type=AntiImpervaTaskEnm.AntiImpervaTask, | ||
... websiteUrl="https://www.milanuncios.com/", | ||
... userAgent="Mozilla/5.0 (Windows ....", | ||
... proxy="socks5:98.181.137.83:4145", | ||
... utmvc=True, | ||
... reese84=True, | ||
... reeseScriptUrl="https://www.milanuncios.com/librarym.js", | ||
... ).captcha_handler() | ||
CaptchaResponseSer(errorId=0, | ||
errorCode=None, | ||
errorDescription=None, | ||
taskId='73bdcd28-6c77-4414-8....', | ||
status=<ResponseStatusEnm.Ready: 'ready'>, | ||
solution={'token': '90F9EAF...'} | ||
) | ||
>>> await Imperva(api_key="CAI-BA9650D2B9C2786B21120D512702E010", | ||
... captcha_type=AntiImpervaTaskEnm.AntiImpervaTask, | ||
... websiteUrl="https://www.milanuncios.com/", | ||
... userAgent="Mozilla/5.0 (Windows ....", | ||
... proxy="socks5:98.181.137.83:4145", | ||
... utmvc=True, | ||
... reese84=True, | ||
... reeseScriptUrl="https://www.milanuncios.com/librarym.js", | ||
... ).aio_captcha_handler() | ||
CaptchaResponseSer(errorId=0, | ||
errorCode=None, | ||
errorDescription=None, | ||
taskId='73bdcd28-6c77-4414-8....', | ||
status=<ResponseStatusEnm.Ready: 'ready'>, | ||
solution={'token': '90F9EAF...'} | ||
) | ||
Returns: | ||
CaptchaResponseSer model with full server response | ||
Notes: | ||
https://docs.capsolver.com/guide/antibots/imperva.html | ||
""" | ||
|
||
def __init__( | ||
self, | ||
captcha_type: Union[BinanceCaptchaTaskEnm, str], | ||
websiteURL: str, | ||
validateId: str, | ||
websiteKey: str = "login", | ||
*args, | ||
**kwargs, | ||
): | ||
super().__init__(*args, **kwargs) | ||
|
||
if captcha_type == BinanceCaptchaTaskEnm.BinanceCaptchaTask: | ||
self.task_params = BinanceCaptchaTaskSer(**locals()).dict() | ||
else: | ||
raise ValueError( | ||
f"""Invalid `captcha_type` parameter set for `{self.__class__.__name__}`, | ||
available - {BinanceCaptchaTaskEnm.list_values()}""" | ||
) | ||
|
||
for key in kwargs: | ||
self.task_params.update({key: kwargs[key]}) | ||
|
||
def captcha_handler(self) -> CaptchaResponseSer: | ||
""" | ||
Sync solving method | ||
Returns: | ||
CaptchaResponseSer model with full service response | ||
Notes: | ||
Check class docstring for more info | ||
""" | ||
return self._processing_captcha(create_params=self.task_params) | ||
|
||
async def aio_captcha_handler(self) -> CaptchaResponseSer: | ||
""" | ||
Async method for captcha solving | ||
Returns: | ||
CaptchaResponseSer model with full service response | ||
Notes: | ||
Check class docstring for more info | ||
""" | ||
return await self._aio_processing_captcha(create_params=self.task_params) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
import pytest | ||
|
||
from tests.conftest import BaseTest | ||
from python3_capsolver.binance import Binance | ||
from python3_capsolver.core.enum import BinanceCaptchaTaskEnm | ||
|
||
|
||
class TestBinanceBase(BaseTest): | ||
def test_captcha_handler_exist(self): | ||
assert "captcha_handler" in Binance.__dict__.keys() | ||
|
||
def test_aio_captcha_handler_exist(self): | ||
assert "aio_captcha_handler" in Binance.__dict__.keys() | ||
|
||
def test_wrong_captcha_type(self): | ||
with pytest.raises(ValueError): | ||
Binance( | ||
api_key=self.get_random_string(36), | ||
captcha_type="test", | ||
websiteURL=self.get_random_string(36), | ||
validateId=self.get_random_string(36), | ||
) | ||
|
||
def test_no_captcha_type(self): | ||
with pytest.raises(TypeError): | ||
Binance( | ||
api_key=self.get_random_string(36), | ||
websiteURL=self.get_random_string(36), | ||
validateId=self.get_random_string(36), | ||
) | ||
|
||
def test_no_websiteURL(self): | ||
with pytest.raises(TypeError): | ||
Binance( | ||
api_key=self.get_random_string(36), | ||
captcha_type=BinanceCaptchaTaskEnm.BinanceCaptchaTask, | ||
validateId=self.get_random_string(36), | ||
) | ||
|
||
def test_no_validateId(self): | ||
with pytest.raises(TypeError): | ||
Binance( | ||
api_key=self.get_random_string(36), | ||
captcha_type=BinanceCaptchaTaskEnm.BinanceCaptchaTask, | ||
websiteURL=self.get_random_string(36), | ||
) |