首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的Selenium检测问题。有什么建议或解决办法吗?

Python中的Selenium检测问题。有什么建议或解决办法吗?
EN

Stack Overflow用户
提问于 2022-11-12 17:25:41
回答 1查看 67关注 0票数 0

我用selenium库在python中制作了自己的Nike SNKRS Bot,它将在Chrome浏览器中工作。我选择了一个流行的webdriver来使用selenium来管理它。我被粘在耐克的登录页面上了。

这是我的代码:

代码语言:javascript
复制
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="myemail@gmail.com"
    send_keys_delay(elem,email)


except Exception:
    traceback.print_exc()
    driver.quit()

毕竟,屏幕上会出现错误消息。此错误指与服务器的通信。错误信息是:

来自服务器的

错误解析响应。

我敢肯定耐克会发现我的程序是机器人,我不能再往前走了。

我的问题是:使用selenium可以让它工作吗?或者我应该尝试不同的东西?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-13 11:39:38

对于其他你可以使用的平台,你可以尝试傀儡,它和selenium非常相似,他们有一个隐形插件来避免被发现,还有一个2 2captcha插件,在其中你链接2 2captcha帐户来解决captchas,以进一步避免检测。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74415045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档