diff --git a/queue_message/appointmentrequestsender.py b/queue_message/appointmentrequestsender.py index bc873bf..10533c1 100644 --- a/queue_message/appointmentrequestsender.py +++ b/queue_message/appointmentrequestsender.py @@ -127,9 +127,15 @@ class AppointmentRequestSender(threading.Thread): for con in self.contact_list: self.logger.info(con.mail) if self.valid_csrf is None: - self.valid_csrf = captchaResultGetter.get_csrf( + csrf_result = captchaResultGetter.get_csrf( proxy_to_use=_proxy_to_use, js_data=js_data, cookie=_received_cookies) + if isinstance(csrf_result, str): + self.valid_csrf = csrf_result + else: + self.logger.info("csrf is {}".format(csrf_result)) + if csrf_result == RequestResult.BLOCKED: + break _new_cookies = captchaResultGetter.get_valid_ch_cookie(sender.proxy_to_use, js_data, old_valid_cookie=_received_cookies) if _new_cookies is not None: @@ -181,7 +187,7 @@ class AppointmentRequestSender(threading.Thread): else: can_continue = RequestResult.COOKIES_ERROR if can_continue == RequestResult.BLOCKED: - self.logger.info("cannot continue, valid_csrf is " + str(self.valid_csrf)) + self.logger.info("BLOCKED, valid_csrf is " + str(self.valid_csrf)) break elif can_continue == RequestResult.PROXY_ERROR: self.logger.info("PROXY_ERROR, will not reset valid_csrf") diff --git a/workers/captcha_result_getter.py b/workers/captcha_result_getter.py index bdf9243..5eefa95 100644 --- a/workers/captcha_result_getter.py +++ b/workers/captcha_result_getter.py @@ -6,6 +6,7 @@ import requests from models.jsdata_le_pojo import JsDataLeTypePojo from models.jsdata_pojo import JsDataPojo +from models.result_pojo import RequestResult from utils.get_only_datadome_cookies import get_datadome_cookies, get_app_cookies, get_lang_cookies, \ retain_only_dataome_cookies from workers.proxies_constants import PROXY_LIST_FR @@ -24,7 +25,7 @@ class CaptchaResultGetter: self.cookie_str = 'datadome=5Nq~NEP_qQSHC0g_lZNnZmEv36J8gVV~rpZ329xmCkTq2~H3meIoXr4h_b988qB2XW5Te7iEGsvq8BzA5KeFupyrZFh4kgrDyl8hT2UymSByKHzAcDaNIBPDsRu2g_KG; Max-Age=31536000; Domain=.hermes.com; Path=/; Secure; SameSite=None' pass - def get_csrf(self, proxy_to_use, js_data: JsDataPojo, cookie: str = None) -> Union[str, None]: + def get_csrf(self, proxy_to_use, js_data: JsDataPojo, cookie: str = None) -> Union[str, RequestResult]: if cookie is not None: headers = {'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': js_data.ua, @@ -49,13 +50,16 @@ class CaptchaResultGetter: timeout=15) print(response.status_code) if response.status_code == 200: - # print(response.text) - print(response.url) + print(response.text) return self.extract_csrf_from_html(response.text) + elif response.status_code == 403: + return RequestResult.BLOCKED else: - return None + print(response.text) + return RequestResult.UNKNOWN except Exception as error: print(error) + return RequestResult.PROXY_ERROR def extract_csrf_from_html(self, html: str) -> Union[str, None]: result = re.findall(r'_csrf" value="[A-Za-z0-9-_]+', html)