【发布时间】:2018-12-18 18:36:01
【问题描述】:
我正在尝试自动登录我的 salesforce 帐户。当我使用我的代码时:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser= webdriver.Firefox()
browser.get("https://xxxxx.my.salesforce.com/?
SAMLRequest=&startURL=%2Fidp%2Flogin%3Fapp%
3D0sp0g000000Gmhj&un=xxxxx.xxxxx%40xxxxx.com")
elem=browser.find_element_by_id("username")
elem.send_keys("xxxxx.xxxx@xxxxx.com")
elem_pass=browser.find_element_by_id("password")
elem_pass.send_keys("xxxxxxx")
rem_me=browser.find_element_by_id("rememberUn")
rem_me.click()
elem.send_keys(Keys.ENTER)
如您所见,我将链接传递给 url,传递用户名、密码并记住我。
当我使用 Selenium 运行此程序时,它会转到电子邮件 2FA 身份验证页面。
但是当我手动操作时:
复制上面提到的url。
将其粘贴到firefox浏览器的地址栏中。
uname 和 pass 显示已填充。
当我按 Enter 时,它会登录。(没有 2FA)。
Salesforce 是否以某种方式检测到该请求来自 selenium?
有没有办法绕过它? 会不会和这个有关?
【问题讨论】:
-
您是否在隐身模式下手动执行相同操作?因为 selenium 默认以隐身模式运行。可能是差异的原因
-
是的,我解决了。我不得不从 Firefox 导入 cookie,并将它们与 Selenium 一起使用。 from selenium import webdriver from selenium.webdriver.common.keys import Keys import os os.chdir("C:\\Users\\tsingh\\Desktop\\Cookies") ffprofile = webdriver.FirefoxProfile('C:\\Users\ \tsingh\\Desktop\\Cookies') 浏览器 = webdriver.Firefox(firefox_profile=ffprofile)
-
@SunnySingh 添加您提到的决议作为评论作为答案,以造福未来的读者。