0

I'm trying to use Python Selenium to login doordash.

code:

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()

result:

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

I think this is because doordash detects and blocks selenium.Any friend know how to camouflage selenium?

Or do I need to use Scrapy?

undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
William
  • 3,724
  • 9
  • 43
  • 76
  • That `CFRAY` business means they are protected by CloudFlare, which makes a living out of detecting headless browsers and blocking them. You are in for an uphill battle :-( – mdaniel Aug 12 '20 at 05:54

1 Answers1

0

To send a character sequence to the Email and Password field and click on Sign In you need to induce WebDriverWait for the element_to_be_clickable() and you can use either of the following Locator Strategies:

  • Using 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()
    
  • Using 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()
    
  • Note : You have to add the following imports :

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • Browser Snapshot:

doordash

undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
  • Thank you for your reply,but it still not working!I think mdaniel is right That CFRAY business means they are protected by CloudFlare, which makes a living out of detecting headless browsers and blocking them. This is an uphill battle – William Aug 13 '20 at 14:26