如何解决如何伪装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
-
浏览器快照:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。