yt-dlp_e/main_cookies.py

105 lines
4.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
import time
import subprocess
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Константы
CHROME_PROFILE_PATH = r"C:\Users\admin\AppData\Local\Google\Chrome\User Data"
LOCAL_COOKIES_PATH = r"C:\Scripts\cookies.txt"
PRIVATE_KEY_PATH = r"C:\Scripts\id_rsa"
SERVER_USER = "#"
SERVER_IP = "#"
REMOTE_COOKIES_PATH = "/usr/script/main/cookies.txt"
def extract_cookies():
"""Извлечение cookies с помощью Selenium."""
try:
# Настройка Chrome WebDriver
options = Options()
options.add_argument(f"user-data-dir={CHROME_PROFILE_PATH}")
options.add_argument("profile-directory=Default") # Используем профиль по умолчанию
# Запуск WebDriver
driver = webdriver.Chrome(options=options)
driver.get("https://www.youtube.com")
time.sleep(5) # Ожидаем загрузку страницы
# Проверяем авторизацию
if "Sign in" not in driver.page_source:
print("Мы авторизованы!")
else:
print("Не удалось авторизоваться.")
driver.quit()
return False
# Извлекаем cookies
cookies = driver.get_cookies()
with open(LOCAL_COOKIES_PATH, "w") as file:
file.write("# Netscape HTTP Cookie File\n")
file.write("# http://curl.haxx.se/rfc/cookie_spec.html\n")
file.write("# This is a generated file! Do not edit.\n\n")
for cookie in cookies:
expiry = cookie.get('expiry', '')
file.write(
f"{cookie['domain']}\tTRUE\t{cookie['path']}\t{str(cookie['secure']).upper()}\t{expiry}\t{cookie['name']}\t{cookie['value']}\n"
)
print(f"Cookies сохранены в {LOCAL_COOKIES_PATH}")
driver.quit()
return True
except Exception as e:
print(f"Ошибка при извлечении cookies: {e}")
return False
def transfer_cookies_via_scp():
"""Передача cookies на сервер с использованием SCP через subprocess."""
try:
# Проверяем наличие ключа
if not os.path.exists(PRIVATE_KEY_PATH):
print(f"Файл ключа {PRIVATE_KEY_PATH} не найден.")
return False
# Формируем команду SCP
scp_command = [
"scp",
"-i", PRIVATE_KEY_PATH,
LOCAL_COOKIES_PATH,
f"{SERVER_USER}@{SERVER_IP}:{REMOTE_COOKIES_PATH}"
]
# Выполняем команду SCP
result = subprocess.run(scp_command, check=True, text=True, capture_output=True)
if result.returncode == 0:
print(f"Cookies успешно переданы на сервер {SERVER_IP}.")
return True
else:
print(f"Ошибка при передаче cookies: {result.stderr}")
return False
except subprocess.CalledProcessError as e:
print(f"Ошибка при выполнении SCP: {e.stderr}")
return False
except Exception as e:
print(f"Общая ошибка: {e}")
return False
if __name__ == "__main__":
print("Начинаем выполнение скрипта каждые 5 минут.")
while True:
try:
if extract_cookies():
if transfer_cookies_via_scp():
print("Процесс завершён успешно.")
else:
print("Ошибка при передаче cookies.")
else:
print("Ошибка при извлечении cookies.")
except Exception as e:
print(f"Общая ошибка выполнения скрипта: {e}")
# Ждём 5 минут перед следующим запуском
print("Ждём 5 минут перед следующим выполнением...")
time.sleep(300) # 300 секунд = 5 минут