Selenium Chrome导入Facebook Cookies触发InvalidCookieDomainException如何修复
报错原因
- 核心逻辑顺序错误:Selenium Chrome驱动要求必须先访问目标域名的对应页面,才能为该域名添加Cookie。你当前的代码是先加Cookie再访问Facebook,此时浏览器标签页还停留在初始空白页,无法匹配
.facebook.com域名,因此抛出非法Cookie域名错误。 - 待添加的Cookie包含Selenium不支持的冗余字段:你导出的Cookie里的
hostOnly、session、storeId、id、部分旧版驱动不兼容的sameSite属于非必要字段,直接传入会导致Cookie校验失败。
修复步骤
- 调整执行顺序,先访问Facebook的完整协议域名页面,再添加Cookie
- 过滤Cookie中的冗余字段,只保留Selenium要求的标准字段
- 过滤过期Cookie,将
expirationDate字段转换为Selenium识别的expiry字段
修复后的完整代码
from selenium import webdriver driver = webdriver.Chrome() # 先访问Facebook首页,创建域名上下文 driver.get("https://www.facebook.com") # 你的原始Cookie数据 cookies = [{"domain":".facebook.com","expirationDate":-62135596800.0,"hostOnly":True,"httpOnly":False,"name":"m_pixel_ratio","path":"/","sameSite":"Unspecified","secure":True,"session":True,"storeId":None,"value":"1","id":1},{"domain":".facebook.com","expirationDate":1634201515.0,"hostOnly":True,"httpOnly":False,"name":"locale","path":"/","sameSite":"None","secure":True,"session":False,"storeId":None,"value":"en_US","id":1},{"domain":".facebook.com","expirationDate":1696668706.0,"hostOnly":True,"httpOnly":True,"name":"datr","path":"/","sameSite":"None","secure":True,"session":False,"storeId":None,"value":"IrVeYbWM6wEFI2zwhF6uAUPk","id":1},{"domain":".facebook.com","expirationDate":1696668813.0,"hostOnly":True,"httpOnly":True,"name":"sb","path":"/","sameSite":"None","secure":True,"session":False,"storeId":None,"value":"IrVeYXpwEz32v1aJtzpM53LE","id":1},{"domain":".facebook.com","expirationDate":1641372807.0,"hostOnly":True,"httpOnly":True,"name":"fr","path":"/","sameSite":"None","secure":True,"session":False,"storeId":None,"value":"0tWy03JUhmdiJMAjG.AWUBQFbT2SoDeM4YYE2QHAcrLg0.BhXrUi.fw.AAA.0.0.BhXrWL.AWU-Amt7swQ","id":1},{"domain":".facebook.com","expirationDate":1665132810.0,"hostOnly":True,"httpOnly":False,"name":"c_user","path":"/","sameSite":"None","secure":True,"session":False,"storeId":None,"value":"100073263948757","id":1},{"domain":".facebook.com","expirationDate":1665132810.0,"hostOnly":True,"httpOnly":True,"name":"xs","path":"/","sameSite":"None","secure":True,"session":False,"storeId":None,"value":"26%3AsmHFqe8B8ZrFdQ%3A2%3A1633596812%3A-1%3A-1","id":1},{"domain":".facebook.com","expirationDate":1634289593.0,"hostOnly":True,"httpOnly":False,"name":"wd","path":"/","sameSite":"Lax","secure":True,"session":False,"storeId":None,"value":"975x482","id":1}] for cookie in cookies: # 格式化Cookie,只保留Selenium支持的字段 formatted_cookie = { "domain": cookie["domain"], "name": cookie["name"], "value": cookie["value"], "path": cookie["path"], "secure": cookie["secure"], "httpOnly": cookie["httpOnly"] } # 未过期的Cookie补充有效期字段 if cookie["expirationDate"] > 0: formatted_cookie["expiry"] = int(cookie["expirationDate"]) driver.add_cookie(formatted_cookie) # 刷新页面后Cookie即可生效 driver.refresh()
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

