You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium保存Facebook Cookie后无法自动登录的问题排查

Selenium保存/加载Facebook Cookies无法登录的问题解决

你遗漏了几个关键步骤,下面逐一说明并给出修正代码:

1. 保存Cookies的时机错误

你当前是刚打开Facebook页面就保存Cookies,这时候还未完成登录,保存的是未登录状态的无效Cookies。必须等登录操作完成、页面跳转到Facebook主页(确认登录成功)后,再调用driver.get_cookies()保存。

2. 加载Cookies前未访问目标域名

Selenium要求添加Cookies时,当前浏览器的页面域名必须与Cookies的域名匹配。加载Cookies前,必须先访问Facebook站点,让浏览器处于对应域名环境下,才能成功添加Cookies。

3. 未处理Cookies的expiry字段

部分Cookies的expiry字段会被pickle序列化为浮点型,而Selenium要求该字段为整型,直接加载会导致Cookies添加失败,需要手动转换类型。


修正后的登录保存Cookies代码

import pickle
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://facebook.com/")

# 手动完成登录操作(或用代码自动输入账号密码),确认登录成功后按回车
input("登录完成后按下回车键继续保存Cookies...")

# 登录成功后保存有效Cookies
pickle.dump(driver.get_cookies(), open("cookies.pkl", "wb"))

driver.quit()

修正后的加载Cookies代码

import pickle
from selenium import webdriver

driver = webdriver.Chrome()
# 先访问Facebook站点,确保域名匹配
driver.get("https://facebook.com/")

# 加载保存的Cookies
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
    # 转换expiry字段为整型
    if "expiry" in cookie:
        cookie["expiry"] = int(cookie["expiry"])
    driver.add_cookie(cookie)

# 刷新页面验证登录状态
driver.refresh()

额外注意事项

  • 保持浏览器环境一致:加载Cookies时使用的浏览器版本、配置(如用户数据目录)要和保存时一致,避免因浏览器指纹差异被Facebook拦截。
  • 模拟真实用户行为:Facebook反爬机制严格,建议添加合理等待(如time.sleep()或显式等待),避免频繁操作触发人机验证。

内容的提问来源于stack exchange,提问作者Masoud Nayebi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:01:17