我正在尝试存储和上传通过 selenium 从网页检索的 cookie。
我对 cookie 很陌生,所以请告诉我我做错了什么。我正在努力学习。
我用selenium打开一个页面,手动登录,执行一些操作然后等待..(我的代码设置为在30秒后获取cookie)
print "adding cookies now"
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
driver.add_cookie(cookie)
之后,我的 cookies.pkl 文件看起来像这样:
(lp0
(dp1
Vdomain
p2
V.twitter.com
p3
sVsecure
p4
I00
sVvalue
p5
V"v3:1484006785862560132892059"
p6
sVexpiry
p7
F1531267585.126113
sVpath
p8
# more lines
在此之后
log_in_and_store()
,我尝试在加载此cookie时使用selenium重新打开页面。如果操作正确,它应该打开到我离开的页面!不是登录页面。
当我尝试将 cookie 上传到网页时,如下所示:
driver.get('http://www.website.com')
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
print cookie
driver.add_cookie(cookie)
add_cookies 抛出此错误:
selenium.common.exceptions.WebDriverException:消息:无效的cookie 域:无效域:“.twitter.com”(会话信息: chrome=55.0.2883.95)(驱动程序信息:chromedriver=2.24.417412 (ac882d3ce7c0d99292439bf3405780058fcca0a6),平台=Mac OS X 10.12.1 x86_64)
我已经尝试过这个,所以请不要将我链接到它(Selenium addCookie 获得无效的 Cookie 域异常,即使我位于正确的域中)
我也尝试过更改 chromedriver 版本,更改我的代码一百万次,然后用头撞墙。这些都不起作用。
请帮忙,非常感谢
我在 Py selenium 中也遇到了这个错误。
解决办法是: 首先访问您要添加 cookie 的网站的主页。
# first visit home page
url = "https://www.website.com"
driver.get(url)
# delete the current cookies
driver.delete_all_cookies()
# add cookies from pickled-txt or a txt file
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
driver.add_cookie(cookie)
# visit again and you shall see your account logged in
url = "https://www.website.com"
driver.get(url)
原因是:
data:
。data:
不会匹配任何 cookie 域所以,你会得到
invalid cookie domain
错误。
我对这个错误非常焦虑,就像其他答案建议我们首先必须加载页面,然后我们必须加载cookie,然后再次加载页面,瞧。
import pickle
from selenium import webdriver
def save_cookie(driver):
with open("cookie", 'wb') as filehandler:
pickle.dump(driver.get_cookies(), filehandler)
def load_cookie(driver):
with open("cookie", 'rb') as cookiesfile:
cookies = pickle.load(cookiesfile)
for cookie in cookies:
print(cookie)
driver.add_cookie(cookie)
driver = webdriver.Chrome(ChromeDriverManager().install())
url = 'https://www.example.com'
driver.get(url)
load_cookie(driver)
# Do you task here
save_cookie(driver)
driver.quit()
driver = webdriver.Chrome(service=service, options=options)
for cookie in exported_cookies:
driver.add_cookie(cookie)
driver.get(url)
driver = webdriver.Chrome(service=service, options=options)
driver.get(url) # Add driver.get() before set cookie
for cookie in exported_cookies:
driver.add_cookie(cookie)
driver.get(url)