При загрузке cookies через selenium (vk.com) ошибка "too many redirects". Python

Есть учебный код для изучения selenium

import pickle
import os
from selenium import webdriver
from selenium.webdriver.common.by import By


class Driver:
    def __init__(self, driver):
        self.browser = driver
        print("Инициализован драйвер Firefox")
        

    def open_page(self, page:str):
        self.browser.get(page)
        print(f"Открыта страница {page}")

    def reload_page(self):
        self.browser.refresh()

    def make_screenshot(self, filename:str):
        self.browser.save_screenshot(filename)
        print(f"Sreenshot saved in {filename}")


    def click_element(self, class_name:str):
        self.element = self.browser.find_element(By.CLASS_NAME, class_name)
        self.element.click()


    def input_keys(self, text):
        self.element.send_keys(text)
    

    def quit(self):
        print("Goodbye!")
        self.browser.quit()
    

class Cookies():
    def __init__(self, driver):
        self.browser = driver


    def save_cookies(self):
        return self.browser.get_cookies()


    def load_cookies(self, cookie):
        self.browser.add_cookie(cookie)
        

if __name__== "__main__":
    Firefox = webdriver.Firefox()
    Firefox.set_window_size(535, 730)
    Browser = Driver(Firefox)
    Cookies = Cookies(Firefox)

    Browser.open_page("https://vk.com")

    files = os.walk("./")
    coockies_not_exists = True
    for value in list(files)[0][2]:
        if value == 'vk_cookies.pkl':
            print("Файл cookies найден!")
            coockies_not_exists = False
            for cookie in pickle.load(open("vk_cookies.pkl", "rb")):
                Cookies.load_cookies(cookie)
            Browser.reload_page()
            break

    if coockies_not_exists:
        input("Файл coockies не найден...\nАвторизуйтесь и нажмите enter. ")
        pickle.dump(Cookies.save_cookies(), open("vk_cookies.pkl", "wb"))

    Browser.quit()

Первая загрузка страницы работает, все загружается и куки сохраняются в папку со скриптом, ошибки нет. 2 же запуск работает до полной загрузки страницы (Куки загрузились, в аккаунт вошел), но после сразу ошибка "Too many redirects".

Текст ошибки:

Инициализован драйвер Firefox
Открыта страница https://vk.com
Файл cookies найден!
Traceback (most recent call last):
  File "/home/pixart/projects/python/selenium/main.py", line 68, in <module>
    Browser.reload_page()
  File "/home/pixart/projects/python/selenium/main.py", line 18, in reload_page
    self.browser.refresh()
  File "/home/pixart/projects/python/selenium/venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 570, in refresh
    self.execute(Command.REFRESH)
  File "/home/pixart/projects/python/selenium/venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 347, in execute
    self.error_handler.check_response(response)
  File "/home/pixart/projects/python/selenium/venv/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=redirectLoop&u=https%3A//vk.com/&c=UTF-8&d=Firefox%20has%20detected%20that%20the%20server%20is%20redirecting%20the%20request%20for%20this%20address%20in%20a%20way%20that%20will%20never%20complete.
Stacktrace:
RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:189:5
UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:768:5
checkReadyState@chrome://remote/content/marionette/navigate.sys.mjs:58:24
onNavigation@chrome://remote/content/marionette/navigate.sys.mjs:324:39
emit@resource://gre/modules/EventEmitter.sys.mjs:154:20
receiveMessage@chrome://remote/content/marionette/actors/MarionetteEventsParent.sys.mjs:33:25

Он же загрузил страницу, все показывается, а потом резко ошибка... Защита от ботов? Firefox, linux, python 3.10.


Ответы (1 шт):

Автор решения: Mark Kalinkin

Скорее всего, это защита от ботов. Я пытался войти в свой ВК аккаунт, используя cookies, через chromedriver. Однако получал то же, что вы описали. Сначала загружалась страница входа, затем добавлялись cookies (я даже предварительно удалил cookies перед этим, чтобы наверняка всё почистить). После этого я вошёл в аккаунт - начала загружаться страница новостей ВК моего аккаунта. В dev tools -> network было видно, как загружались файлы (с кодом 200 - ОК), но внезапно увидел следующее: фото logout

По каким-то причинам ВК переадресует для выхода из аккаунта (параметр act=logout), и происходит конлфикт cookies с ВК. Либо проблема с cookies (что вряд ли), либо ВК блокирует ботов (высокая вероятность).

Но есть другой способ с chrome - использовать selenium через ваш профиль google chrome, это описано здесь: https://stackoverflow.com/a/31063104/18136264

→ Ссылка