From cecd7f4452f70d7065c38abe0fe2cf38bf7d5e99 Mon Sep 17 00:00:00 2001 From: PAN Lei Date: Tue, 24 May 2022 18:06:49 +0200 Subject: [PATCH] handle some errors --- workers/SolveCaptch.py | 1 + workers/commandor_page.py | 44 ++++++++++++++++++++++++++------------- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/workers/SolveCaptch.py b/workers/SolveCaptch.py index 9f0a470..a26644d 100644 --- a/workers/SolveCaptch.py +++ b/workers/SolveCaptch.py @@ -36,6 +36,7 @@ class SolveCaptcha: url_get = "http://2captcha.com/in.php?key=e7e3cd0977aba2dab49e0ea052ca58b1&method=userrecaptcha&googlekey={}&pageurl={}".format( google_key, self.page.url) res = requests.get(url_get) + print(res.text) results = res.text.split("|") self.captcha_id = results[-1] diff --git a/workers/commandor_page.py b/workers/commandor_page.py index 8109136..3a9eaa9 100644 --- a/workers/commandor_page.py +++ b/workers/commandor_page.py @@ -30,7 +30,7 @@ TOO_MANY_REQUEST_ERROR_MESSAGE = "Due to a large number of requests" CAPTCHA_ERROR_MESSAGE = "Error verifying captcha, please try again" TIME_OUT = 400000 OTP_TIMEOUT = 240 -PAGE_TIMEOUT = 30000 +PAGE_TIMEOUT = 40000 def get_random_wait_time() -> float: @@ -52,6 +52,7 @@ class CommandorPage: self.is_finished = False self.contact = contact self.proxy_type = proxy_type + self.is_evnet_sent = False # 0: random # 1: faubourg # 2: George @@ -65,8 +66,11 @@ class CommandorPage: def on_success(self, result: ReserveResultPojo): self.logger.info("on_success called.") - self.logger.info(result) - params.oracle_log_sender.send_appoint_result(result) + if not self.is_evnet_sent: + self.logger.info("will send successful event") + self.logger.info(result) + params.oracle_log_sender.send_appoint_result(result) + self.is_evnet_sent = True self.is_finished = True def timeout_occurred(self): @@ -92,7 +96,6 @@ class CommandorPage: "password": params.PROXY_PASSWORD } # self.fill_fields() - # wait the captha element # wait for sms_code field # self.clickOnValidBtn() self.thread_event = e @@ -171,11 +174,14 @@ class CommandorPage: self.logger.info("url is " + self.page.url) if self.page.url == RDV_URL: self.fill_fields() - message = self.page.content() - if CONFIRMED_MESSAGE in message: - # publish the successful message - self.publish_message_to_queue(self.contact, PublishType.SUCCESS, self.page.url) - self.get_errors() + try: + message = self.page.content() + if CONFIRMED_MESSAGE in message: + # publish the successful message + self.publish_message_to_queue(self.contact, PublishType.SUCCESS, self.page.url) + self.get_errors() + except Exception as error: + print(error) def on_document_loaded(self): self.logger.info("on_document_loaded called") @@ -234,7 +240,6 @@ class CommandorPage: if DOUBLE_REQUEST_ERROR_MESSAGE in erro_content: # this email has been already used params.oracle_log_sender.send_double_data_error(self.contact) - # close browser time.sleep(2) self.browser.close() elif TOO_MANY_REQUEST_ERROR_MESSAGE in erro_content: @@ -246,7 +251,8 @@ class CommandorPage: elif CAPTCHA_ERROR_MESSAGE in erro_content: # this email has been already used params.oracle_log_sender.send_captcha_error(self.contact) - self.page.reload(timeout=PAGE_TIMEOUT) + # self.page.reload(timeout=PAGE_TIMEOUT) + self.resolve_captcha() def _set_email(self, email): time.sleep(get_random_wait_time()) @@ -319,10 +325,18 @@ class CommandorPage: def fill_captcha_solution(self, solution): self.logger.info("will input solution: " + solution) - self.page.evaluate("""(solution)=>{ - document.getElementById("g-recaptcha-response").innerHTML=solution;}""", solution) - self.logger.info("will click on valid btn") - self.clickOnValidBtn() + try: + self.page.evaluate("""(solution)=>{ + document.getElementById("g-recaptcha-response").innerHTML=solution;}""", solution) + self.logger.info("will click on valid btn") + self.clickOnValidBtn() + # wait for 20s + time.sleep(20) + self.clickOnValidBtn() + + except Exception as error: + print(error) + self.page.reload(timeout=PAGE_TIMEOUT) def get_random_id_number() -> str: