当前位置: 首页 > 知识库问答 >
问题:

使用selenium python时出现“此浏览器或应用可能不安全”错误

邵繁
2023-03-14

我试图通过使用硒从收件箱下载附件来自动化gmail。但是,它向我显示了这个错误“此浏览器或应用程序可能不安全”。我环顾四周,发现OAuth将解决这个问题。但是,我不知道如何使用它,也不知道它是否是正确的工具。有人能帮我解决这个错误吗?OAuth是正确的工具吗?使用任何其他浏览器都会解决这个问题吗?

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.binary_location = "/opt/google/chrome/google-chrome"    
options.add_argument("--start-maximized") 
options.add_argument("--no-sandbox") #bypass OS security model
options.add_argument("--disable-dev-shm-usage") 

options.add_experimental_option("excludeSwitches["enableautomation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, 
executable_path=r'./chromedriver')
driver.get('http://gmail.com/')

错误:此浏览器或应用可能不安全。了解更多信息尝试使用不同的浏览器。如果您已经在使用受支持的浏览器,则可以刷新屏幕并再次尝试登录。

共有1个答案

白智
2023-03-14

有同样的问题,我在GitHub中发现了这个线程。

对我有效的解决方案是使用这个驱动程序:undetected\u chromedriver而不是普通的chromedriver

    import undetected_chromedriver.v2 as uc

    chrome_options = uc.ChromeOptions()
    chrome_options.add_argument("--disable-extensions")
    chrome_options.add_argument("--disable-popup-blocking")
    chrome_options.add_argument("--profile-directory=Default")
    chrome_options.add_argument("--disable-plugins-discovery")
    chrome_options.add_argument("--incognito")
    chrome_options.add_argument("user_agent=DN")

    self.browser = uc.Chrome(options=chrome_options)
    self.browser.delete_all_cookies()

    # example of loggin in to youtube without getting that issue
    self.browser.get('http://youtube.com')

    login_button_init = self.browser.find_element_by_xpath("//a[@aria-label='Sign in']") 
    login_button_init.click()

    # locate the login button
    login_button = self.browser.find_element_by_xpath("//paper-button[@aria-label='Sign in']")
    login_button.click()

    # get email and set to email input box
    email = self.browser.find_element_by_id("identifierId")
    myemail = os.environ.get('YOUTUBE_EMAIL')
    email.send_keys(myemail)

    # click next button
    email_next_button = self.browser.find_element_by_id("identifierNext")
    email_next_button.click()

    # get password and set to password input box
    password = self.browser.find_element_by_name("password")
    mypassword = os.environ.get('YOUTUBE_PASSWORD')
    password.send_keys(mypassword)
    sleep(2)

    # click next button to log in
    pass_next_button = self.browser.find_element_by_id("passwordNext")
    pass_next_button.click()
 类似资料: