У меня проблема со входом на 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






Я попробовал это и увидел отображаемое уведомление Something went wrong..
Я совершенно уверен, что этот сайт блокирует автоматизированные инструменты, такие как Selenium, чтобы предотвратить загрузку.
Попробуйте использовать необнаруженный Selenium.
Я не знаком с этим. В противном случае я бы дал вам больше информации.
Я полагаю, что у некоторых пользователей Twitch в последние несколько дней были проблемы со входом в систему, так что это может быть связано. У меня была ошибка «Что-то пошло не так» на Brave при попытке войти в систему, но это сработало на Edge. В этой статье сообщается о проблеме пару дней назад:
https://piunikaweb.com/2022/09/30/twitch-users-unable-to-login-getting-something-went-wrong-error/
Я благодарю вас @RampantLion. Однако, к сожалению, я уже пробовал с рекомендованными исправлениями, но проблема не устранена. Эта проблема возникает только из окна, открытого хромированными драйверами, в то время как в обычном окне Chrome или в Safari это не вызывает никаких проблем.
Чтобы устранить эту проблему "Что-то пошло не так. Пожалуйста, попробуйте еще раз". можно использовать свой профиль хрома, но лучше создать новый для работы с селеном, так как основной профиль будет загружать все установленные расширения, которые могут не работать с селеном.
Как создать новый профиль вы можете посмотреть здесь: Как открыть профиль 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, какую ошибку вы получаете при сбое?
Забудь это. Это была просто опечатка в коде кнопки входа. Однако проблема не меняется и всегда остаются слова «Что-то пошло не так. Пожалуйста, попробуйте еще раз».
Ваш новый профиль Chrome точно подключится? Можете ли вы показать свой код?
Ага. при запуске селена я вижу, что моя новая учетная запись google работает. Я добавил код на вопрос.
Да, верно, должно работать. Я проверил еще раз, и все работает нормально, после заполнения данных для входа я получаю окно «проверить код входа». Попробуйте использовать gecodriver и браузер firefox. Как подключить профиль для FireFox я написал в ответе. Так же можно попробовать зайти в twitch аккаунт под этим chrome профилем из браузера, данные сохранятся в профиле и тогда не нужно будет авторизоваться с помощью selenium
Я протестировал оба решения, и они отлично работают в Firefox, но не работают в Chrome. Любое другое предложение?
Вы закрываете хром перед запуском скрипта?
Да, я закрываю хром каждый раз
Я протестировал этот скрипт на Linux и получил ту же ошибку. Я предполагаю, что это связано с ОС (linux, mac), так как на win 10 все работает. Тогда я могу только порекомендовать вам использовать firefox и gecodriver.
вы можете начать с режима инкогнито, он тоже будет работать.
Кстати, только что проверил, если вы начинаете напрямую в режиме инкогнито, это не работает. но если вы начинаете без инкогнито и вручную открываете окно инкогнито, оно работает. как они это обнаруживают?
Похоже, сайт 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-адресов (в идеале с использованием резидентных прокси) должно помочь. Вы хотите каждый раз загружать сайт со «свежим» браузерным профилем.
Спасибо @Prophet за вашу помощь. Не могли бы вы сказать мне, где я могу найти больше информации о необнаруженном Selenium?