Ozon Бот авто покупка
Добрый день прошу помочь опытного человека
мне нужен бот который по ссылке по запросам сможет выкупить товар с озона
есть пример реализации кода но он не работает не актуален сейчас https://github.com/qskateboard/OzonLovec
мне нужно чтото на подобье что вышло у меня описываю ниже помогите пожалуйста
import time
from PyQt5.QtWidgets import (
QApplication, QWidget, QVBoxLayout, QPushButton, QLabel, QLineEdit,
QDateEdit, QCheckBox, QTextEdit, QTimeEdit, QMessageBox
)
from PyQt5.QtCore import QDateTime, Qt, QTimer
from PyQt5.QtGui import QFont
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
class OzonBotApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
self.timer = QTimer(self)
self.timer.timeout.connect(self.update_log)
self.driver = None
def initUI(self):
self.setWindowTitle('Ozon Bot')
self.setGeometry(100, 100, 450, 700)
self.setStyleSheet("background-color: #E6F7FF;")
layout = QVBoxLayout()
layout.setSpacing(20)
layout.setContentsMargins(20, 20, 20, 20)
self.title_label = QLabel('Ozon Bot', self)
self.title_label.setFont(QFont("Arial", 26, QFont.Bold))
self.title_label.setStyleSheet("color: #0056B3; text-align: center;")
layout.addWidget(self.title_label)
self.link_label = QLabel('Ссылка на товар:')
layout.addWidget(self.link_label)
self.link_input = QLineEdit(self)
self.link_input.setPlaceholderText("Введите ссылку на товар...")
self.link_input.setStyleSheet(self.get_input_style())
layout.addWidget(self.link_input)
self.time_checkbox = QCheckBox('Использовать запланированное время')
layout.addWidget(self.time_checkbox)
self.date_label = QLabel('Дата закупки:')
layout.addWidget(self.date_label)
self.date_input = QDateEdit(self)
self.date_input.setDate(QDateTime.currentDateTime().date())
self.date_input.setStyleSheet(self.get_input_style())
layout.addWidget(self.date_input)
self.time_label = QLabel('Время закупки:')
layout.addWidget(self.time_label)
self.time_input = QTimeEdit(self)
self.time_input.setTime(QDateTime.currentDateTime().time())
self.time_input.setStyleSheet(self.get_input_style())
layout.addWidget(self.time_input)
self.start_bot_button = QPushButton('Запустить бота', self)
self.start_bot_button.setStyleSheet(self.get_button_style())
self.start_bot_button.clicked.connect(self.run_bot)
layout.addWidget(self.start_bot_button)
self.log_output = QTextEdit(self)
self.log_output.setReadOnly(True)
self.log_output.setStyleSheet(
"background-color: white; border: 1px solid #0056B3; border-radius: 5px; padding: 10px;")
layout.addWidget(self.log_output)
self.setLayout(layout)
def get_input_style(self):
return """
QLineEdit, QDateEdit, QTimeEdit {
background-color: #ffffff;
border: 1px solid #0056B3;
border-radius: 5px;
padding: 10px;
font-size: 14px;
}
QLineEdit:focus, QDateEdit:focus, QTimeEdit:focus {
border: 1px solid #0056B3;
background-color: #E0F7FF;
}
"""
def get_button_style(self):
return """
QPushButton {
background-color: #0056B3;
color: white;
border-radius: 5px;
padding: 12px;
font-size: 16px;
}
QPushButton:hover {
background-color: #003366;
}
QPushButton:pressed {
background-color: #003366;
}
"""
def run_bot(self):
link = self.link_input.text().strip()
if not link:
QMessageBox.warning(self, "Ошибка", "Пожалуйста, введите ссылку на товар!", QMessageBox.Ok)
return
self.log_output.append(f"Запуск бота...\nСсылка: {link}\nИспользование времени: {self.time_checkbox.isChecked()}")
if self.time_checkbox.isChecked():
self.schedule_bot(link)
else:
self.add_to_cart(link)
def schedule_bot(self, link):
self.log_output.append(f"Запланирована покупка товара...\nСсылка: {link}\nДата: {self.date_input.date().toString()}\nВремя: {self.time_input.time().toString()}")
self.target_time = QDateTime(self.date_input.date(), self.time_input.time())
self.timer.start(1000)
def update_log(self):
current_time = QDateTime.currentDateTime()
remaining_time = self.target_time.secsTo(current_time)
if remaining_time > 0:
self.log_output.append(f"Ожидание: осталось {remaining_time} секунд до запуска.")
else:
self.timer.stop()
self.log_output.append("Время для покупки наступило.")
link = self.link_input.text().strip()
self.add_to_cart(link)
def add_to_cart(self, link):
options = Options()
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_argument('--start-maximized')
# Эмуляция Android
options.add_argument("--window-size=400,800") # Размер экрана Android
options.add_argument('--user-agent=Mozilla/5.0 (Linux; Android 10; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Mobile Safari/537.36')
self.driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
try:
self.driver.get(link)
self.log_output.append("Страница загружена.")
time.sleep(5) # Дождаться полной загрузки страницы
# Нажимаем на кнопку для обхода бота
bypass_button = self.driver.find_element(By.XPATH, '/html/body/div/div/div/div[2]/button')
bypass_button.click()
self.log_output.append("Обход бота выполнен.")
time.sleep(3) # Небольшая пауза для завершения обхода
# Находим кнопку добавления в корзину по актуальному XPath и кликаем по ней
add_to_cart_button = self.driver.find_element(By.XPATH, '//*[@id="layoutPage"]/div[1]/div[11]/div/div/div/div/div/div/div[1]/button/div[2]')
add_to_cart_button.click()
self.log_output.append("Товар добавлен в корзину.")
except Exception as e:
self.log_output.append(f"Ошибка: {str(e)}")
finally:
self.log_output.append("Браузер остается открытым для дальнейшего использования.")
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = OzonBotApp()
ex.show()
sys.exit(app.exec_()) ```