From d1699c295fc2a5d46657acb675594a2af2381213 Mon Sep 17 00:00:00 2001 From: Lei PAN Date: Mon, 13 Jun 2022 11:42:54 +0200 Subject: [PATCH] add BrightData proxy support --- appointment.py | 22 ++++++++++------------ check_results.py | 7 ++----- main.py | 9 +++++---- params.py | 28 +++++++++++++--------------- proxy/__init__.py | 0 proxy/proxy_type.py | 6 ++++++ workers/commandor_page.py | 6 ++++-- 7 files changed, 40 insertions(+), 38 deletions(-) create mode 100644 proxy/__init__.py create mode 100644 proxy/proxy_type.py diff --git a/appointment.py b/appointment.py index 9e07a1a..f573bee 100644 --- a/appointment.py +++ b/appointment.py @@ -3,14 +3,15 @@ import PySimpleGUI as sg # First the window layout in 2 columns from main import start_book from pojo.ModeEnum import ModeEnum +from proxy.proxy_type import ProxyType KEY_CHOOSE_STORE = "CHOOSE_STORE" KEY_START_NUMBER = "KEY_START_NUMBER" KEY_END_NUMBER = "KEY_END_NUMBER" KEY_MAX_WORKERS = "KEY_MAX_WORKERS" KEY_RANDOM = "KEY_RANDOM" -KEY_PROXY_RES = "KEY_PROXY_RES" -KEY_PROXY_CC = "KEY_PROXY_CC" +KEY_PROXY_BRIGHTDATA = "KEY_PROXY_BRIGHTDATA" +KEY_PROXY_NETNUT = "KEY_PROXY_NETNUT" KEY_FAUBOURG = "KEY_FAUBOURG" KEY_GEORGE = "KEY_GEORGE" KEY_SEVRES = "KEY_SEVRES" @@ -37,8 +38,8 @@ store_settings_column = [ ] proxy_settings_column = [ [sg.Text("代理ip池")], - [sg.Radio('res(速度)', group_id=GROUP_PROXY, key=KEY_PROXY_RES, default=True)], - [sg.Radio('cc(稳定)', group_id=GROUP_PROXY, key=KEY_PROXY_CC, default=False)], + [sg.Radio('亮数据', group_id=GROUP_PROXY, key=KEY_PROXY_BRIGHTDATA, default=True)], + [sg.Radio('Netnut', group_id=GROUP_PROXY, key=KEY_PROXY_NETNUT, default=False)], ] mode_settings_column = [ @@ -76,19 +77,16 @@ while True: elif values[KEY_SEVRES]: store_type = 3 - proxy_type = 0 - if values[KEY_PROXY_CC]: - proxy_type = 1 - elif values[KEY_PROXY_RES]: - proxy_type = 0 + proxy_type = ProxyType.BRIGHT_DATA + if values[KEY_PROXY_NETNUT]: + proxy_type = ProxyType.NETNUT + elif values[KEY_PROXY_BRIGHTDATA]: + proxy_type = ProxyType.BRIGHT_DATA if values[KEY_AUTOMATIC]: mode = ModeEnum.AUTOMATIC start_book(start_line, end_line, store_choose_state=store_type, max_workers=max_workers, proxy_type=proxy_type, mode=mode) - # except Exception as error: - # print("Not Integer: ") - # print(error) elif event == "Exit" or event == sg.WIN_CLOSED: break diff --git a/check_results.py b/check_results.py index b81d7cf..9a6fefc 100644 --- a/check_results.py +++ b/check_results.py @@ -12,6 +12,7 @@ from notification.AcceptedResultPojo import get_accepted_result_from from notification.mailer import Mailer from pojo.ReserveResultPojo import ReserveResultPojo from pojo.ResultEnum import ResultEnum +from proxy.proxy_type import ProxyType SORRY_SENTENCE_FR = "nous sommes sincèrement désolés de n'avoir pu vous satisfaire cette fois-ci" SORRY_SENTENCE_EN = "we are extremely sorry that we were not able to fulfill" @@ -72,11 +73,7 @@ class ResultChecker: } while content is None: content = self.load_page(self.tls.playwright, proxy, url) - proxy = { - "server": params.BRIGHT_DATA_PROXY_SERVER, - "username": params.BRIGHT_DATA_PROXY_USERNAME, - "password": params.BRIGHT_DATA_PROXY_PASSWORD - } + proxy = params.get_proxy(ProxyType.NETNUT) print(content) self.browser.close() print("Stopped worker in ", threading.current_thread().name) diff --git a/main.py b/main.py index f36a574..2886742 100644 --- a/main.py +++ b/main.py @@ -6,6 +6,7 @@ import params from logs.AppLogging import init_logger from pojo.ModeEnum import ModeEnum from pojo.contact_pojo import ContactPojo +from proxy.proxy_type import ProxyType from utils.excel_reader import ExcelHelper from workers.commandor_page import CommandorPage @@ -15,7 +16,7 @@ logger = logging.getLogger() logger.addHandler(logging.StreamHandler(stream=sys.stdout)) -def start_book(start_number, end_number, store_choose_state=0, max_workers=10, proxy_type=0, +def start_book(start_number, end_number, store_choose_state=0, max_workers=10, proxy_type=ProxyType.BRIGHT_DATA, mode: ModeEnum = ModeEnum.MANUAL): # read the contact, and contact the 2 objects together excel_reader = ExcelHelper() @@ -35,9 +36,9 @@ def start_book(start_number, end_number, store_choose_state=0, max_workers=10, p def recheck_the_captcha_error_contacts(store_type=0, mode: ModeEnum = ModeEnum.MANUAL): # get all the contacts in captcha error - list = params.local_db_manager.get_all_captcha_error_contacts() + contact_list = params.local_db_manager.get_all_captcha_error_contacts() with ThreadPoolExecutor(max_workers=10) as executor: - for errorContact in list: + for errorContact in contact_list: contact = ContactPojo.get_contact_from_error_contact(errorContact) proxy = get_proxy() # start the task in thread @@ -46,7 +47,7 @@ def recheck_the_captcha_error_contacts(store_type=0, mode: ModeEnum = ModeEnum.M proxy) -def get_proxy(proxy_type=0): +def get_proxy(proxy_type=ProxyType.BRIGHT_DATA): return params.get_proxy(proxy_type) diff --git a/params.py b/params.py index 126eb0e..573564a 100644 --- a/params.py +++ b/params.py @@ -5,6 +5,7 @@ import definitions from db.DbManager import DataManager from db.local_db_manager import LocalDbManager from logs.LogSender import LogSender +from proxy.proxy_type import ProxyType firebase_store_manager = DataManager() oracle_log_sender = LogSender() @@ -22,33 +23,30 @@ PROXY_NAME_PREFIX_RES = "panleicim-res-fr-" PROXY_NAME_PREFIX_CC = "panleicim-cc-fr-" -def get_proxy_name_prefix(proxy_type=0) -> str: - if proxy_type == 0: - return PROXY_NAME_PREFIX_RES - else: - return PROXY_NAME_PREFIX_CC +def get_proxy_name_prefix() -> str: + return PROXY_NAME_PREFIX_RES -def get_proxy(proxy_type=0): - if proxy_type == 0: +def get_proxy(proxy_type: ProxyType): + if proxy_type == ProxyType.NETNUT: random_id_number = get_random_id_number_for_proxy() - proxy_username = get_proxy_name_prefix(proxy_type) + random_id_number + proxy_username = get_proxy_name_prefix() + random_id_number proxy = { "server": PROXY_SERVER, "username": proxy_username, "password": PROXY_PASSWORD } else: - # proxy = { - # "server": BRIGHT_DATA_PROXY_SERVER, - # "username": BRIGHT_DATA_PROXY_USERNAME, - # "password": BRIGHT_DATA_PROXY_PASSWORD - # } proxy = { "server": BRIGHT_DATA_PROXY_SERVER, - "username": BRIGHT_DATA_MOBILE_PROXY_USERNAME, - "password": BRIGHT_DATA_MOBILE_PROXY_PASSWORD + "username": BRIGHT_DATA_PROXY_USERNAME, + "password": BRIGHT_DATA_PROXY_PASSWORD } + # proxy = { + # "server": BRIGHT_DATA_PROXY_SERVER, + # "username": BRIGHT_DATA_MOBILE_PROXY_USERNAME, + # "password": BRIGHT_DATA_MOBILE_PROXY_PASSWORD + # } return proxy diff --git a/proxy/__init__.py b/proxy/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/proxy/proxy_type.py b/proxy/proxy_type.py new file mode 100644 index 0000000..ca78fa3 --- /dev/null +++ b/proxy/proxy_type.py @@ -0,0 +1,6 @@ +from enum import Enum + + +class ProxyType(Enum): + NETNUT = "NETNUT" + BRIGHT_DATA = "BRIGHT_DATA" diff --git a/workers/commandor_page.py b/workers/commandor_page.py index d6718d6..19ba28a 100644 --- a/workers/commandor_page.py +++ b/workers/commandor_page.py @@ -13,6 +13,7 @@ from pojo.ReserveResultPojo import ReserveResultPojo, PublishType from pojo.captcha_error_contact_pojo import ERROR_TYPE_CAPTCHA, \ TOO_MANY_REQUEST_ERROR from pojo.contact_pojo import ContactPojo +from proxy.proxy_type import ProxyType from utils.generate_random_passport_id import get_captcha_error_contact_from_contact from workers.SolveCaptch import SolveCaptcha @@ -52,7 +53,8 @@ class Tls(threading.local): class CommandorPage: tls = Tls() - def __init__(self, contact: ContactPojo, store_type=0, proxy_type=0, mode: ModeEnum = ModeEnum.MANUAL): + def __init__(self, contact: ContactPojo, store_type=0, proxy_type=ProxyType.BRIGHT_DATA, + mode: ModeEnum = ModeEnum.MANUAL): self.otp_value = None self.logger = logging.getLogger("约会页面:" + str(contact.phone)) self.is_finished = False @@ -379,7 +381,7 @@ def launch_page(): first_name="xingzhen", mail="ColbyPatel653@gmail.com", ccid="", position=0) page = CommandorPage(contact, store_type=1) - return page.start_page(params.get_proxy(0)) + return page.start_page(params.get_proxy()) def wait_for_otp(event: threading.Event, commandor: CommandorPage):