如何伪装Python Selenium来登录Doordash

问题描述

我正在尝试使用Python Selenium登录Doordash。

代码:

user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML,like Gecko) Version/12.0.3 Safari/605.1.15"
proxy = '58.58.213.55:8888'

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions import NoSuchElementException

chrome_options = webdriver.ChromeOptions ()
chrome_options.add_argument('--user-agent=%s' % user_agent)
chrome_options.add_argument('--proxy-server=' + proxy)  
driver = webdriver.Chrome (executable_path="C:/Users/chromedriver",options=chrome_options)

driver.get ('https://identity.doordash.com/auth?client_id=1644751820221630860&layout=consumer_web&prompt=none&redirect_uri=https%3A%2F%2Fwww.doordash.com%2Fhome%2Fen-US&response_type=code&scope=%2A&state=none')

time.sleep(1)
driver.find_element_by_css_selector('form#login-form > div:nth-of-type(2) .jZgkQL.jsZsie.sc-caSCKo.sc-gojNiO  .kAdgaf.sc-bXGyLb').send_keys('name@ymail.com')
driver.find_element_by_css_selector('div:nth-of-type(3) .jZgkQL.jsZsie.sc-caSCKo.sc-gojNiO  .kAdgaf.sc-bXGyLb').send_keys('password')

time.sleep(1)

driver.find_element_by_css_selector('button#login-submit-button .jONjOp.sc-ifAKCX > .htNBbC.sc-gZMcBi').click()

结果:

Something went wrong
Trace ID: CFRAY-5c16d31919e6feca-IAH.

我认为这是因为Doordash检测并阻止了硒。任何朋友都知道如何伪装硒吗?

还是我需要使用Scrapy?

解决方法

要将字符序列发送到电子邮件密码字段,然后单击登录,您需要为element_to_be_clickable()引入WebDriverWait,您可以使用以下任一Locator Strategies

  • 使用CSS_SELECTOR

    driver.get("https://identity.doordash.com/auth?client_id=1644751820221630860&layout=consumer_web&prompt=none&redirect_uri=https%3A%2F%2Fwww.doordash.com%2Fhome%2Fen-US&response_type=code&scope=%2A&state=none")
    WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input[data-anchor-id='IdentityLoginPageEmailField']"))).send_keys('name@ymail.com')
    driver.find_element_by_css_selector("input[data-anchor-id='IdentityLoginPagePasswordField']").send_keys('William')
    driver.find_element_by_css_selector("button#login-submit-button span>div").click()
    
  • 使用XPATH

    driver.get("https://identity.doordash.com/auth?client_id=1644751820221630860&layout=consumer_web&prompt=none&redirect_uri=https%3A%2F%2Fwww.doordash.com%2Fhome%2Fen-US&response_type=code&scope=%2A&state=none")
    WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//input[@data-anchor-id='IdentityLoginPageEmailField']"))).send_keys('name@ymail.com')
    driver.find_element_by_xpath("//input[@data-anchor-id='IdentityLoginPagePasswordField']").send_keys('William')
    driver.find_element_by_xpath("//div[text()='Sign In']").click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • 浏览器快照:

doordash

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...