add_cookie()在对域stackoverflow.comget()上的页面进行实际请求之前,是否可以在 Selenium Chrome WebDriver 中添加用于域的 cookie,例如stackoverflow.com?
尝试时:
driver.webdriver.add_cookie({'name' : 'testcookie', 'value' : 'testvalue', 'domain' : 'stackoverflow.com'})
driver.webdriver.get('https://stackoverflow.com/')
Run Code Online (Sandbox Code Playgroud)
我得到“您只能为当前域设置 cookie ”。
我想说我看到并尝试了一些避免问题而不是解决问题的解决方案,例如预先访问域上的 404 页面以在 Selenium 中创建“域槽”,然后再向其添加 cookie,但是虽然这些解决方案允许添加他们仍然需要在未设置任何 cookie 的情况下提出一项额外请求并与网站联系。
在处理 CAPTCHA 系统和一些非常具体的 WAF 时,这是一个问题,这些系统在连续看到一个不带 cookie 的请求,然后又看到另一个带 cookie 的请求时会皱起眉头,而这个请求只能在完成登录过程后才被说出。
我正在尝试存储和上传我通过 selenium 从网页中检索的 cookie。
我是饼干的新手,所以请告诉我我做错了什么。我在尝试学习。
我用硒打开一个页面,手动登录,执行一些操作然后等待..(我的代码设置为在 30 秒后获取 cookie)
print "adding cookies now"
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
driver.add_cookie(cookie)
Run Code Online (Sandbox Code Playgroud)
之后,我的 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
Run Code Online (Sandbox Code Playgroud)
在此之后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)
Run Code Online (Sandbox Code Playgroud)
add_cookies 抛出此错误:
selenium.common.exceptions.WebDriverException:消息:无效的 cookie 域:无效域:“.twitter.com”(会话信息:chrome=55.0.2883.95)(驱动程序信息:chromedriver=2.24.417412(ac882d3ce7c0d99292439bf305a6f),cc8005a6f X 10.12.1 x86_64)
我已经试过了,所以请不要将我链接到它(即使我在正确的域中,Selenium addCookie 也得到了无效的 …