From 5fadc8c981bfdb8e4434217cbd787bf8da8be577 Mon Sep 17 00:00:00 2001 From: dmitry pervushin Date: Sat, 4 Mar 2023 19:54:57 +0100 Subject: [PATCH] Two attempts to get csrf token --- pysuez/client.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/pysuez/client.py b/pysuez/client.py index 9273e69..aeedd4d 100644 --- a/pysuez/client.py +++ b/pysuez/client.py @@ -31,6 +31,20 @@ def __init__(self, username, password, counter_id, provider, session=None, timeo self._timeout = timeout self.state = 0 + def _get_token_1(self, content): + phrase = re.compile('csrf_token(.*)') + result = phrase.search(content) + if result is None: + return None + return result.group(1) + + def _get_token_2(self, content): + phrase = re.compile('csrfToken\\\\u0022\\\\u003A\\\\u0022(.*)\\\\u0022,\\\\u0022') + result = phrase.search(content) + if result is None: + return None + return result.group(1).encode().decode('unicode_escape') + def _get_token(self): """Get the token""" headers = { @@ -55,10 +69,11 @@ def _get_token(self): headers['Cookie'] += "; " headers['Cookie'] += key + "=" + response.cookies[key] - phrase = re.compile('_csrf_token" value="(.*)"/>') - result = phrase.search(response.content.decode('utf-8')) - self._token = result.group(1) self._headers = headers + decoded_content = response.content.decode('utf-8') + self._token = self._get_token_1(decoded_content) or self._get_token_2(decoded_content) + if self._token is None: + raise PySuezError("Can't get token.") def _get_cookie(self): """Connect and get the cookie"""