Я использовал библиотеку селена для создания собственного бота Nike SNKRS на питоне, который будет работать в браузере Chrome. Я выбрал один из популярных веб-драйверов, чтобы управлять им с помощью селена. Я застрял на странице входа в систему Nike.
Вот мой код:
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.proxy import Proxy, ProxyType
from random_user_agent.user_agent import UserAgent
from selenium.common.exceptions import TimeoutException, WebDriverException
from random_user_agent.params import SoftwareName, OperatingSystem
import traceback
options = Options()
options.add_argument("--start-maximized")
options.add_experimental_option('excludeSwitches', ['enable-logging'])
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_argument('--lang=en')
options.add_experimental_option('useAutomationExtension', False)
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
options.add_argument('user-agent = {0}'.format(user_agent))
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1420,1080")
service=Service('C:\\chromedriver_win32\\chromedriver.exe')
driver = webdriver.Chrome(options=options,service=service)
driver.delete_all_cookies()
driver.execute_script('return navigator.webdriver')
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"})
driver.get('https://www.nike.com')
def send_keys_delay(controller,keys,delay=1):
controller.click()
for key in keys:
controller.send_keys(key)
time.sleep(delay)
controller.send_keys(Keys.RETURN)
try:
elem=WebDriverWait(driver,5).until(
ec.presence_of_element_located((By.ID,"hf_cookie_text_cookieAccept"))
)
print(elem.text)
elem.click()
except:
traceback.print_exc()
driver.quit()
time.sleep(3)
try:
elem=driver.find_element(By.ID,"hf_title_signin_membership")
elem.click()
except Exception:
traceback.print_exc()
driver.quit()
try:
elem=WebDriverWait(driver,5).until(
ec.element_to_be_clickable((By.ID,"username")))
email = "[email protected]"
send_keys_delay(elem,email)
except Exception:
traceback.print_exc()
driver.quit()
Ведь на экране появляется сообщение об ошибке. Эта ошибка относится к связи с сервером. Сообщение об ошибке:
Ошибка анализа ответа от сервера.
Я уверен, что Nike определяет мою программу как бота, и я не могу идти дальше.
Мой вопрос: можно ли заставить его работать с помощью селена? Или, может быть, я должен попробовать что-то другое?
Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией, чтобы найти адекватный ответ.
Что касается других платформ, которые вы можете использовать, вы можете попробовать puppeteer, он очень похож на селен, и у них есть стелс-плагин, чтобы избежать обнаружения, а также плагин 2captcha, в котором вы связываете учетную запись 2captcha для решения капчи, чтобы еще больше избежать обнаружения.
Я использовал pyppeteer в своем проекте python, который похож на puppeteer i JS, у меня такая же проблема. В селене (код выше) я использовал 2 строки кода, которые управляют навигатором браузера, но я не знаю, как это запрограммировать в pyppeteer. Я даже не знаю, изменит ли это что-то. Я также использовал стелс-плагин для pyppeteer, ничего не изменилось. Любые другие решения?
ты бегаешь без головы?
Нет, но я попытался запустить его в безголовом режиме и та же проблема. Я проверил это по скриншоту
Проверьте эту тему: stackoverflow.com/questions/33225947/…