Не могу войти на Twitch через Selenium

У меня проблема со входом на Twitch через Selenium. После того, как бот ввел учетные данные (я также пытался ввести их вручную) появляется сообщение об ошибке: "Что-то пошло не так. Пожалуйста, попробуйте еще раз." И не пускает меня.

Какие-либо предложения?

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

def start_twitch_viewer():

    PATH = r"./Local/twitch-stream-viewer/chromedriver"
    email = '[email protected]'
    usr = 'Username'
    pswd = 'Password'


    chrome_options = webdriver.ChromeOptions()

    try:

        driver = webdriver.Chrome(PATH, options=chrome_options)
        driver.get("https://www.twitch.tv/ChannelName")
        driver.header_overrides = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"}

    except:
        return
    
    time.sleep(10)
    driver.find_element(By.CSS_SELECTOR, "div[class='Layout-sc-nxg1ff-0 csWXEI']").click()
    time.sleep(5)
    username=driver.find_element(By.CSS_SELECTOR, "input[id='login-username']")
    password=driver.find_element(By.CSS_SELECTOR, "input[id='password-input']")
    username.clear()
    password.clear()
    username.send_keys(usr)
    password.send_keys(pswd)
    time.sleep(5)
    driver.find_element(By.CSS_SELECTOR, "div[class='Layout-sc-nxg1ff-0 OZCSg']").click()
    

    time.sleep(1000)




if __name__ == "__main__":
    start_twitch_viewer()

Обновлено: Это файл, созданный по предложению @Lenta.


    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("user-data-dir=/Users/usr/Library/Application Support/Google/Chrome")
    chrome_options.add_argument("profile-directory=Profile 3")
    chrome_options.add_experimental_option("detach", True)
    
    try:

        driver = webdriver.Chrome(executable_path=PATH, options=chrome_options)
        driver.set_window_position(0, 0)
        driver.set_window_size(1440, 900)
        driver.get("https://www.twitch.tv/user")
        
    except:
        return

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
687
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Я попробовал это и увидел отображаемое уведомление Something went wrong..
Я совершенно уверен, что этот сайт блокирует автоматизированные инструменты, такие как Selenium, чтобы предотвратить загрузку. Попробуйте использовать необнаруженный Selenium.

Спасибо @Prophet за вашу помощь. Не могли бы вы сказать мне, где я могу найти больше информации о необнаруженном Selenium?

Piero 02.10.2022 19:55

Я не знаком с этим. В противном случае я бы дал вам больше информации.

Prophet 02.10.2022 20:15

Я полагаю, что у некоторых пользователей Twitch в последние несколько дней были проблемы со входом в систему, так что это может быть связано. У меня была ошибка «Что-то пошло не так» на Brave при попытке войти в систему, но это сработало на Edge. В этой статье сообщается о проблеме пару дней назад:

https://piunikaweb.com/2022/09/30/twitch-users-unable-to-login-getting-something-went-wrong-error/

Я благодарю вас @RampantLion. Однако, к сожалению, я уже пробовал с рекомендованными исправлениями, но проблема не устранена. Эта проблема возникает только из окна, открытого хромированными драйверами, в то время как в обычном окне Chrome или в Safari это не вызывает никаких проблем.

Piero 03.10.2022 00:39
Ответ принят как подходящий

Чтобы устранить эту проблему "Что-то пошло не так. Пожалуйста, попробуйте еще раз". можно использовать свой профиль хрома, но лучше создать новый для работы с селеном, так как основной профиль будет загружать все установленные расширения, которые могут не работать с селеном.

Как создать новый профиль вы можете посмотреть здесь: Как открыть профиль Chrome через Python

Чтобы добавить свой профиль, используйте следующий код:

options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=O:\\Users\\Username\\AppData\\Local\\Google\\Chrome\\User Data")
options.add_argument("profile-directory=profile_directory_name")
service = Service(executable_path='path\to\your\chromedriver.exe')
driver = webdriver.Chrome(service=service, options=options)

Если вы получаете сообщение об ошибке "selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: user data directory is already in use, please specify a unique value for --user-data-dir argument, or don't use --user-data-dir", вам нужно закрыть основной браузер, так как он блокирует запуск браузера из селена.

Или вы можете использовать профиль из другого браузера, такого как firefox или edge, но для этого вам необходимо установить необходимый веб-драйвер geckodriver или edgedriver.

Чтобы добавить свой профиль из firefox:

options = webdriver.FirefoxOptions()
options.add_argument("-profile")
options.add_argument("O:\\Users\\Username\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\wfpwqtvd.default-release")
service = Service(executable_path='path\to\your\geckodriver.exe')
driver = webdriver.Firefox(service=service, options=options)

Чтобы добавить свой профиль из края:

options = webdriver.EdgeOptions()
options.add_argument("user-data-dir=O:\\Users\\Username\\AppData\\Local\\Microsoft\\Edge\\User Data")
options.add_argument("profile-directory=profile_directory_name")
service = Service(executable_path='path\to\your\msedgedriver.exe')
driver = webdriver.Edge(service=service, options=options)

Привет @Lenta, спасибо за ваш ответ. К сожалению, я не уверен, работает ли это, потому что, когда я пытаюсь это сделать и нажимаю кнопку входа, происходит сбой (я пробовал вручную, и проблема не устранена), это происходит только с профилем. Какие-либо предложения?

Piero 05.10.2022 19:34

Привет @Лента. К сожалению, это не работает. Проблема сохраняется.

Piero 05.10.2022 19:42

@Piero, какую ошибку вы получаете при сбое?

Brze 06.10.2022 11:04

Забудь это. Это была просто опечатка в коде кнопки входа. Однако проблема не меняется и всегда остаются слова «Что-то пошло не так. Пожалуйста, попробуйте еще раз».

Piero 06.10.2022 11:55

Ваш новый профиль Chrome точно подключится? Можете ли вы показать свой код?

Brze 06.10.2022 11:59

Ага. при запуске селена я вижу, что моя новая учетная запись google работает. Я добавил код на вопрос.

Piero 06.10.2022 14:46

Да, верно, должно работать. Я проверил еще раз, и все работает нормально, после заполнения данных для входа я получаю окно «проверить код входа». Попробуйте использовать gecodriver и браузер firefox. Как подключить профиль для FireFox я написал в ответе. Так же можно попробовать зайти в twitch аккаунт под этим chrome профилем из браузера, данные сохранятся в профиле и тогда не нужно будет авторизоваться с помощью selenium

Brze 06.10.2022 16:51

Я протестировал оба решения, и они отлично работают в Firefox, но не работают в Chrome. Любое другое предложение?

Piero 06.10.2022 21:15

Вы закрываете хром перед запуском скрипта?

Brze 07.10.2022 08:28

Да, я закрываю хром каждый раз

Piero 07.10.2022 09:10

Я протестировал этот скрипт на Linux и получил ту же ошибку. Я предполагаю, что это связано с ОС (linux, mac), так как на win 10 все работает. Тогда я могу только порекомендовать вам использовать firefox и gecodriver.

Brze 07.10.2022 13:17

вы можете начать с режима инкогнито, он тоже будет работать.

Bahadır Öz 03.12.2022 06:33

Кстати, только что проверил, если вы начинаете напрямую в режиме инкогнито, это не работает. но если вы начинаете без инкогнито и вручную открываете окно инкогнито, оно работает. как они это обнаруживают?

Bahadır Öz 03.12.2022 06:40

Похоже, сайт www.twitch.tv использует инструмент безопасности Fastly.

Быстрый поиск в DNS показывает, что www.twitch.tv разрешается в twitch.map.fastly.net.

Скорее всего, они используют продукт Signal Sciences (https://www.signalsciences.com/about-us/news/fastly-to-acquire-signal-sciences/). Я недавно столкнулся с этим на другом сайте.

Обычно чередование пользовательских агентов и IP-адресов (в идеале с использованием резидентных прокси) должно помочь. Вы хотите каждый раз загружать сайт со «свежим» браузерным профилем.

Другие вопросы по теме