如何使用pickle加载文件夹中的每个cookie文件

时间:2019-01-16 11:27:22

标签: python selenium selenium-webdriver cookies

在我的cookie文件夹中,有很多文件cookies1.txt,cookies2.txt,...,下面是我的脚本,我尝试使用它登录带有cookie的facebook,每个cookie文件将加载并执行一个然后完成操作并执行下一个加载文件,当我逐个运行每个cookie时,效果很好,但是当我将它们全部放在一个文件夹中时,它似乎出现了错误,有人可以帮我吗?谢谢。

import os
import pickle
import selenium.webdriver


driver = selenium.webdriver.Firefox()
files = os.listdir("cookies")
for f in files:
    cookies = pickle.load(open(f, "rb"))
    for cookie in cookies:
        driver.add_cookie(cookie)
        driver.get("http://www.facebook.com")

它显示:

Traceback (most recent call last):
  File "C:/Users/tuong cat/AppData/Local/Programs/Python/Python37-32/Lib/site-packages/new.py", line 10, in <module>
    driver.add_cookie(cookie)


  File "C:\Users\tuong cat\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 894, in add_cookie
    self.execute(Command.ADD_COOKIE, {'cookie': cookie_dict})
  File "C:\Users\tuong cat\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)


  File "C:\Users\tuong cat\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidCookieDomainException: Message: Document is cookie-averse

2 个答案:

答案 0 :(得分:2)

我认为您必须在打开URL后添加Cookie

driver.get("http://www.facebook.com")
for f in files:
    cookies = pickle.load(open(f, "rb"))
    for cookie in cookies:
        driver.add_cookie(cookie)

答案 1 :(得分:1)

1)您的cookie文件应以“ .pkl”扩展名。

2)您的文件应由pickle程序包使用特定域下的Facebook凭据登录操作后生成。

3)您应该在特定域下加载Cookie文件。

在您的情况下,特定域为facebook.com

希望对您有帮助!

PS:这是我在Facebook上的工作示例:https://github.com/ratmirasanov/demo_test_automation_project/tree/master/login_with_using_cookies/