Untitled
unknown
python
a year ago
3.3 kB
4
Indexable
Never
import time import requests from selenium import webdriver import subprocess import os from config import dolphin_api_token, chrome_driver_path, dolphin_profile_id_1 def init_driver(dolphin_profile_id): req_url = f'http://localhost:3001/v1.0/browser_profiles/{dolphin_profile_id}/start?automation=1&headless=0' response = requests.get(req_url) response_json = response.json() print(response_json) port = response_json['automation']['port'] options = webdriver.ChromeOptions() options.debugger_address = f'127.0.0.1:{port}' driver = webdriver.Chrome(service=chrome_driver_path, options=options) driver.implicitly_wait(5) return driver, port def close_old_browser(dolphin_profile_id, port): try: max_retries = 3 # максимальное количество попыток for attempt in range(max_retries): stop_req_url = f'http://localhost:3001/v1.0/browser_profiles/{dolphin_profile_id}/stop' headers = {"Authorization": f"Bearer {dolphin_api_token}"} response = requests.get(stop_req_url, headers=headers) if response.status_code == 401 and "unauthorized" in response.text: print(f"Попытка {attempt + 1}: Не авторизован. Повторная попытка через 3 секунды.") time.sleep(3) else: print("Закрыл старый браузер: ", "Response status code:", response.status_code, "Response content:", response.text) return # Успешно закрыли браузер, выходим из функции else: # Если вышли из цикла, но не смогли закрыть браузер print("Исчерпаны все попытки закрытия старого браузера через API, пытаемся закрыть браузер через PID") close_old_browser_by_id(port) except Exception as e: print(f'Не удалось закрыть старый браузер. Текст ошибки: {e}') def find_pid_by_port(port): try: command = f"lsof -i :{port} -n -P | grep LISTEN | awk '{{print $2}}'" pid = subprocess.check_output(command, shell=True).strip().decode("utf-8") return int(pid) except subprocess.CalledProcessError as e: print(f"Command failed with error code {e.returncode}, output: {e.output}") except Exception as e: print(f"Не удалось найти PID по порту {port}: {e}") return None def close_old_browser_by_id(port): try: chrome_pid = find_pid_by_port(port) if chrome_pid is not None: os.system(f'kill {chrome_pid}') print(f"Закрыл старый браузер с PID {chrome_pid}") else: print("Не удалось найти PID старого браузера") except Exception as e: print(f'Не удалось закрыть старый браузер. Текст ошибки: {e}') close_old_browser(dolphin_profile_id_1, port1) time.sleep(7) driver1, port1 = init_driver(dolphin_profile_id_1)