Bagaimana cara menyimpan semua cookie di Selenium WebDriver Python ke file txt, lalu memuatnya nanti? Dokumentasi tidak menjelaskan banyak hal tentang fungsi getCookies.
Bagaimana cara menyimpan semua cookie di Selenium WebDriver Python ke file txt, lalu memuatnya nanti? Dokumentasi tidak menjelaskan banyak hal tentang fungsi getCookies.
Jawaban:
Anda dapat menyimpan cookie saat ini sebagai objek python menggunakan acar. Sebagai contoh:
import pickle
import selenium.webdriver
driver = selenium.webdriver.Firefox()
driver.get("http://www.google.com")
pickle.dump( driver.get_cookies() , open("cookies.pkl","wb"))
dan nanti untuk menambahkannya kembali:
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)
drive.add_cookie
t lagi saya mendapat pesan kesalahan yang mengatakan "kadaluwarsa" kunci tidak valid. Saya menggunakan chromedriver di Mac OS
Ketika Anda membutuhkan cookie dari sesi ke sesi, ada cara lain untuk melakukannya, gunakan opsi Chrome pengguna-data-dir untuk menggunakan folder sebagai profil, saya menjalankan:
chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com")
Anda dapat melakukan di sini login yang memeriksa interaksi manusia, saya melakukan ini dan kemudian cookie yang saya perlukan sekarang setiap kali saya memulai Webdriver dengan folder itu semuanya ada di sana. Anda juga dapat menginstal Ekstensi secara manual dan memilikinya di setiap sesi. Saat saya menjalankan, semua cookie ada di sana:
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.
Keuntungannya adalah Anda dapat menggunakan banyak folder dengan pengaturan dan cookie yang berbeda, Ekstensi tanpa perlu memuat, membongkar cookie, menginstal dan mencopot ekstensi, mengubah pengaturan, mengubah login melalui kode, dan dengan demikian tidak ada cara untuk memiliki logika pemutusan program, dll. Juga ini lebih cepat daripada harus melakukan semuanya dengan kode.
chrome_options = Options()
berikan aku name 'Options' is not defined
...?
from selenium.webdriver.chrome.options import Options
Ingat, Anda hanya dapat menambahkan cookie untuk domain saat ini. Jika Anda ingin menambahkan cookie untuk akun Google Anda, lakukan
browser.get('http://google.com')
for cookie in cookies:
browser.add_cookie(cookie)
Berdasarkan jawaban oleh @Eduard Florinescu tetapi dengan kode yang lebih baru dan impor yang hilang ditambahkan:
$ 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()
Hanya sedikit modifikasi untuk kode yang ditulis oleh @Roel Van de Paar, karena semua penghargaan diberikan padanya. Saya menggunakan ini di Windows dan berfungsi dengan sempurna, baik untuk mengatur dan menambahkan cookie:
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)
ini adalah kode yang saya gunakan di windows, Berhasil.
for item in COOKIES.split(';'):
name,value = item.split('=',1)
name=name.replace(' ','').replace('\r','').replace('\n','')
value = value.replace(' ','').replace('\r','').replace('\n','')
cookie_dict={
'name':name,
'value':value,
"domain": "", # google chrome
"expires": "",
'path': '/',
'httpOnly': False,
'HostOnly': False,
'Secure': False
}
self.driver_.add_cookie(cookie_dict)
os saya adalah Windows 10, dan versi chrome adalah 75.0.3770.100. Saya telah mencoba solusi 'user-data-dir', tidak berhasil. coba solusi dari @ Eric Klien juga gagal. akhirnya saya buat setting chrome seperti gambar, berhasil! tapi tidak berhasil di windows server 2012.
pengaturan