如何使用Selenium和Python避免每次访问Instagram都需登录
解决Selenium ChromeDriver每次需重新登录Instagram的问题
问题出在ChromeDriver默认会用一个全新的临时用户配置,不会复用你本地Chrome的登录会话。给你两个靠谱的解决办法:
办法1:加载本地Chrome的用户配置文件
这是最稳定的方式,直接让Driver用你平时用的Chrome配置,自然就能保留登录状态。
先找到你的Chrome用户数据目录
- Windows:
C:\Users\<你的用户名>\AppData\Local\Google\Chrome\User Data - macOS:
~/Library/Application Support/Google/Chrome/ - Linux:
~/.config/google-chrome/
- Windows:
修改代码添加配置
在Options里加上加载用户数据的参数,替换成你自己的路径就行:from selenium import webdriver import time from selenium.webdriver.common.by import By import kullaniciBilgileri as kb from selenium.webdriver.chrome.options import Options options = Options() options.add_experimental_option('useAutomationExtension', False) # 替换成你自己的Chrome用户数据路径 options.add_argument(r"user-data-dir=C:\Users\<你的用户名>\AppData\Local\Google\Chrome\User Data") # 指定用默认配置文件(如果有多个账号配置,这里可以改对应的文件夹名) options.add_argument(r"profile-directory=Default") # 注意!你原来的链接写错了,要改成正确的instagram官网 link = "https://www.instagram.com" browser = webdriver.Chrome(options=options, executable_path="./chromedriver") browser.get(url=link) time.sleep(5) # 加个判断,已经登录就跳过输入账号密码 try: # 检查主页元素,比如搜索框,存在就说明已登录 browser.find_element(By.CSS_SELECTOR, 'input[placeholder="搜索"]') print("已自动保持登录状态") except: # 没登录才执行登录步骤 username = browser.find_element(by=By.NAME, value="username") password = browser.find_element(by=By.NAME, value="password") username.send_keys(kb.userName) password.send_keys(kb.password) # 简化了登录按钮的选择器,原来的没必要选到div层 loginBtn = browser.find_element(by=By.CSS_SELECTOR, value="#loginForm button") loginBtn.click()
注意点
- 运行脚本前必须关掉所有Chrome窗口,不然配置文件被占用会报错。
- 确保Chrome浏览器和ChromeDriver的版本完全一致,版本不兼容也可能导致会话存不住。
办法2:Cookie持久化(备选方案)
如果不想用本地配置,也可以第一次登录后把Cookie存下来,下次直接加载:
第一次登录成功后保存Cookie:
# 登录成功后执行这段代码 import json with open("instagram_cookies.json", "w") as f: json.dump(browser.get_cookies(), f)后续运行脚本时加载Cookie:
browser.get("https://www.instagram.com") import json with open("instagram_cookies.json", "r") as f: cookies = json.load(f) for cookie in cookies: browser.add_cookie(cookie) # 刷新页面就会自动登录 browser.refresh()
不过这种方法可能因为Cookie过期失效,不如加载用户配置稳定。
内容的提问来源于stack exchange,提问作者Selman
相关产品推荐
相关产品推荐

