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以上版本
好记性不如烂笔头
浙公网安备 33010602011771号