From caf2b1933e18b6dc90386a81b1a737efaaa2fd9a Mon Sep 17 00:00:00 2001 From: DarkCat09 Date: Thu, 28 Apr 2022 09:23:02 +0400 Subject: [PATCH] Cloudflare --- python_aternos/atconnect.py | 16 ++++++++++++++-- python_aternos/aterrors.py | 3 +++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/python_aternos/atconnect.py b/python_aternos/atconnect.py index 2aa8ab1..6b12d67 100644 --- a/python_aternos/atconnect.py +++ b/python_aternos/atconnect.py @@ -7,7 +7,7 @@ from cloudscraper import CloudScraper from typing import Optional, Union from . import atjsparse -from .aterrors import CredentialsError +from .aterrors import CredentialsError, CloudflareError REQUA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Goanna/4.8 Firefox/68.0 PaleMoon/29.4.0.2' @@ -90,7 +90,10 @@ class AternosConnect: self, url:str, method:str, params:Optional[dict]=None, data:Optional[dict]=None, headers:Optional[dict]=None, reqcookies:Optional[dict]=None, - sendtoken:bool=False, redirect:bool=True) -> Response: + sendtoken:bool=False, redirect:bool=True, retry:int=0) -> Response: + + if retry > 2: + raise CloudflareError('Unable to bypass Cloudflare protection') try: self.atsession = self.session.cookies['ATERNOS_SESSION'] @@ -134,6 +137,15 @@ class AternosConnect: allow_redirects=redirect ) + if 'Please Wait... | Cloudflare' in req.text: + logging.info('Retrying to bypass Cloudflare') + self.request_cloudflare( + url, method, + params, data, + headers, reqcookies, + sendtoken, redirect + ) + logging.info( f'{method} completed with {req.status_code} status' ) diff --git a/python_aternos/aterrors.py b/python_aternos/aterrors.py index 070c16a..b1250d3 100644 --- a/python_aternos/aterrors.py +++ b/python_aternos/aterrors.py @@ -1,6 +1,9 @@ class AternosError(Exception): pass +class CloudflareError(AternosError): + pass + class CredentialsError(AternosError): pass