Comment puis-je enregistrer tous les cookies dans Selenium WebDriver de Python dans un fichier .txt, puis les charger plus tard ?
La documentation ne dit pas grand-chose sur la fonction getCookies.
Comment puis-je enregistrer tous les cookies dans Selenium WebDriver de Python dans un fichier .txt, puis les charger plus tard ?
La documentation ne dit pas grand-chose sur la fonction getCookies.
Vous pouvez enregistrer les cookies actuels en tant qu'objet Python à l'aide de pickle. Par exemple :
import pickle
import selenium.webdriver
driver = selenium.webdriver.Firefox()
driver.get("http://www.google.com")
pickle.dump( driver.get_cookies() , open("cookies.pkl","wb"))
Et plus tard pour les rajouter :
import pickle
import selenium.webdriver
driver = selenium.webdriver.Firefox()
driver.get("http://www.google.com")
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
driver.add_cookie(cookie)
Lorsque vous avez besoin de cookies d'une session à l'autre, il existe une autre façon de procéder. Utilisez les options Chrome user-data-dir afin d'utiliser des dossiers comme profils. J'exécute :
# You need to: from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com")
Ici, vous pouvez faire les logins qui vérifient l'interaction humaine. Je fais cela et ensuite les cookies dont j'ai besoin maintenant chaque fois que je démarre le Webdriver avec ce dossier, tout est là. Vous pouvez également installer manuellement les extensions et les avoir dans chaque session.
La deuxième fois que je cours, tous les cookies sont là :
# You need to: from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com") # Now you can see the cookies, the settings, extensions, etc., and the logins done in the previous session are present here.
L'avantage est que vous pouvez utiliser plusieurs dossiers avec des paramètres et des cookies différents, des extensions sans qu'il soit nécessaire de charger, décharger les cookies, installer et désinstaller les extensions, modifier les paramètres, changer les logins via le code, et donc sans que la logique du programme ne se brise, etc.
De plus, c'est plus rapide que de devoir tout faire par code.
Juste une légère modification pour le code écrit par Roel Van de Paar et tout le mérite lui revient. Je l'utilise sous Windows et il fonctionne parfaitement, tant pour la configuration que pour l'ajout de cookies :
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--user-data-dir=chrome-data")
driver = webdriver.Chrome('chromedriver.exe',options=chrome_options)
driver.get('https://web.whatsapp.com') # Already authenticated
time.sleep(30)
Sur la base de la réponse d'Eduard Florinescu mais avec un code plus récent et les importations manquantes ajoutées :
$ cat work-auth.py
#!/usr/bin/python3
# Setup:
# sudo apt-get install chromium-chromedriver
# sudo -H python3 -m pip install selenium
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--user-data-dir=chrome-data")
driver = webdriver.Chrome('/usr/bin/chromedriver',options=chrome_options)
chrome_options.add_argument("user-data-dir=chrome-data")
driver.get('https://www.somedomainthatrequireslogin.com')
time.sleep(30) # Time to enter credentials
driver.quit()
$ cat work.py
#!/usr/bin/python3
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--user-data-dir=chrome-data")
driver = webdriver.Chrome('/usr/bin/chromedriver',options=chrome_options)
driver.get('https://www.somedomainthatrequireslogin.com') # Already authenticated
time.sleep(10)
driver.quit()
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.