gpt4 book ai didi

python - 添加与 Firefox webdriver 一起工作但不在 PhantomJS 中工作的 Cookie

转载 作者:太空狗 更新时间:2023-10-30 02:28:25 33 4
gpt4 key购买 nike

我有一个泡菜,里面有我通过以下命令创建的 cookie

def doLogin(driver):
#do login stuff
pickle.dump(driver.get_cookies(), open("cookies.pkl", "wb"))

我有获取cookies的示例代码

driver = webdriver.PhantomJS()
self.doLogin(driver)
driver.delete_all_cookies()
for cookie in pickle.load(open("cookies.pkl", "rb")):
driver.add_cookie(cookie)

我可以看到它很好地创建了 cookie,因为如果我 print 它很好,add_cookie() 正在做一些可疑的事情

这给出了以下异常

WebDriverException: Message: {"errorMessage":"Unable to set Cookie","request":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection":"close","Content-Length":"219","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:50738","User-Agent":"Python-urllib/2.7"},"httpVersion":"1.1","method":"POST","post":"{\"sessionId\": \"391db430-154a-11e6-8a0a-ef59204729f5\", \"cookie\": {\"domain\": \"secretWebsite\", \"name\": \"JSESSIONID\", \"value\": \"8332B6099FA3BBBC82893D4C7E6E918B\", \"path\": \"Also a secret\", \"httponly\": false, \"secure\": true}}","url":"/cookie","urlParsed":{"anchor":"","query":"","file":"cookie","directory":"/","path":"/cookie","relative":"/cookie","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/cookie","queryKey":{},"chunks":["cookie"]},"urlOriginal":"/session/391db430-154a-11e6-8a0a-ef59204729f5/cookie"}} Screenshot: available via screen

要工作,我只需要将 webdriver 更改为 Firefox

这是一个已知的 PhantomJS 问题吗?

最佳答案

PhantomJS 驱动程序似乎不支持某些键/值。为了克服这个问题,我会用 execute_script 注入(inject)最重要的部分:

def save_cookies(driver, file_path):
LINE = "document.cookie = '{name}={value}; path={path}; domain={domain}; expires={expires}';\n"
with open(file_path, 'w') as file :
for cookie in driver.get_cookies() :
file.write(LINE.format(**cookie))

def load_cookies(driver, file_path):
with open(file_path, 'r') as file:
driver.execute_script(file.read())


from selenium import webdriver

driver = webdriver.PhantomJS()

# load the domain
driver.get("https://stackoverflow.com/users/login")

# save the cookies to a file
save_cookies(driver, r"cookies.js")

# delete all the cookies
driver.delete_all_cookies()

# load the cookies from the file
load_cookies(driver, r"cookies.js")

关于python - 添加与 Firefox webdriver 一起工作但不在 PhantomJS 中工作的 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37103621/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com