Как настроить webdriver так, чтобы при его запуске в браузере были авторизированны аккаунты на сайтах?

Рейтинг: 1Ответов: 0Опубликовано: 22.04.2023

Ситуация следующая: пишу бота рассыльщика для Авито. Суть простая -

  1. Передаем название запроса
  2. Бот парсит страницу поиска и записывает в коллекцию ссылки на объявления
  3. Переходим на страницу объявления
  4. Кликаем на кнопку "Написать сообщение"
  5. Заполняем html-форму текстом и отправляем сообщение нажатием кнопки "Отправить сообщение"

Вот код:

import time
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from hyper.contrib import HTTP20Adapter
from selenium.webdriver.common.by import By

try:
    print("Enter your request: ")
    product_search_name = input()
    url = "https://www.avito.ru/all?cd=1&q=" + product_search_name + "&s=104"
    session = requests.Session()
    session.mount('https://', HTTP20Adapter())
    request = session.get(url)
    print("Status code: ", request.status_code)
    beautiful_soup_processor = BeautifulSoup(request.text, "html.parser")
    all_links = beautiful_soup_processor.find_all("a", class_="iva-item-title-py3i_")
    driver = webdriver.Edge(executable_path = r'C:\Program Files (x86)\msedgedriver.exe')

    for link in all_links:
        print("https://www.avito.ru" + link["href"])
        link_avito = "https://www.avito.ru" + link["href"]
        ff_request = driver.get(link_avito)
        print(link_avito)
        submit = driver.find_element(By.CLASS_NAME, "messenger-button-root-X8WGM ")
        time.sleep(2)
        submit.click()
        time.sleep(2)
        sbox = driver.find_element(By.CLASS_NAME, "channel- bottom-base-input-MfbcO")
        time.sleep(2)
        sbox.send_keys("Здравствуйте")
        time.sleep(2)
        submit = driver.find_element(By.CLASS_NAME, "clickable-button-MWD6w")
        time.sleep(2)
        submit.click()

except Exception as e:
    print(e)

Проблема заключается следующем - когда вебдрайвер открывает браузер Microsoft Edge, то это абсолютно чистый браузер без каких либо авторизированных аккаунтов в нем ( в процессе работы авторизоваться внутри работающего через вебдрайвер браузера не получается, авито выдаёт ошибку в виде "попробуйте снова".

Для написания сообщения пользователю необходимо иметь авторизированный аккаунт, следовательно задача состоит в том, чтобы настроить опции вебдрайвера.

Была предпринята попытка и соответственно написан следующий код:

edge_options = webdriver.EdgeOptions()
edge_options.use_chromium = True
edge_options.add_argument("user-data-dir=C:\\Users\\user\\AppData\\Local\\Microsoft\\Edge\\User Data\\Default")
edge_options.add_argument("profile-directory=Profile 1")
driver = webdriver.Edge(options = edge_options, executable_path = r'C:\Program Files (x86)\msedgedriver.exe')

Код не работает, ошибка не вылетает, он просто не даёт никаких результатов, кроме того, что в запущенном через вебдрайвер браузере теперь есть возможность выбрать мой профиль, но при выборе нового профиля открывается новое окно браузера, где так же, по непонятным причинам не авторизован профиль авито и в него так же нельзя войти в процессе работы кода.

Что можно сделать? Заранее спасибо за ответы)

Ответы

Ответов пока нет.