163邮箱登录功能实现

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import getpass

DEBUG = False

def login():
    acount_num = input('请输入账号:\n')
    passwd_str = getpass.getpass('请输入密码:\n')    
    option=Options()
     # 此步骤很重要
    option.add_argument('--headless')#开启无界面模式 
    option.add_argument('--disable-gpu') # 禁用显卡  禁用后可降低被拦截风险 。 ‌
    option.add_argument("--user-agent=Mozilla/5.0 HAHA") # 替换UA  禁用浏览器正在被自动化程序控制的提示
    option.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # 不加载图片,加快访问速度
    option.add_experimental_option('excludeSwitches', ['enable-automation']) # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
    option.add_argument('disable-blink-features=AutomationControlled') #禁用启用Blink运行时的功能  
    service = Service(ChromeDriverManager().install())
    driver = webdriver.Chrome(service=service,options=option)
  
    url = 'http://mail.163.com/'
    try:
        driver.get(url)
        time.sleep(10)
        # 163登陆框是使用iframe进行嵌套的,所以需要先切换到该iframe ID是动态生成的
        #driver.switch_to.frame('x-URS-iframe')  #x-URS-iframe1763446927637.2837
        loginDiv=driver.find_element(By.XPATH,"//div[@id='loginDiv']")

        driver.switch_to.frame(loginDiv.find_element(By.TAG_NAME,"iframe"))          
        acount = driver.find_element(By.NAME,'email')
        acount.clear()
        acount.send_keys(acount_num)

        passwd = driver.find_element(By.NAME,'password')
        passwd.clear()
        passwd.send_keys(passwd_str)

        time.sleep(3)
        click_button = driver.find_element(By.ID,'dologin')
        click_button.click()
        time.sleep(5)
        cur_cookies = driver.get_cookies()
        '''
        for cookie in cur_cookies:
            print("-------->"+cookie)
        '''
        print("登录成功")       
        return cur_cookies
    except Exception as e:
       if DEBUG:print(e)
    driver.quit()
    return ""
    


if __name__ == '__main__':
  cur_cookies=login()
  print("cookies:>>>>")
  print(cur_cookies)

注:selenium必须更新到4.0以上版本

posted on 2025-11-18 16:15  让代码飞  阅读(10)  评论(0)    收藏  举报

导航

一款免费在线思维导图工具推荐:https://www.processon.com/i/593e9a29e4b0898669edaf7f?full_name=python