मैं पायथन के सेलेनियम वेबड्राइवर की सभी कुकीज़ को txt-file में कैसे सहेज सकता हूं, बाद में उन्हें लोड कर सकता हूं? प्रलेखन getCookies समारोह के बारे में ज्यादा कुछ नहीं कहता है।
मैं पायथन के सेलेनियम वेबड्राइवर की सभी कुकीज़ को txt-file में कैसे सहेज सकता हूं, बाद में उन्हें लोड कर सकता हूं? प्रलेखन getCookies समारोह के बारे में ज्यादा कुछ नहीं कहता है।
जवाबों:
अचार का उपयोग करके आप मौजूदा कुकीज़ को अजगर वस्तु के रूप में सहेज सकते हैं। उदाहरण के लिए:
import pickle
import selenium.webdriver
driver = selenium.webdriver.Firefox()
driver.get("http://www.google.com")
pickle.dump( driver.get_cookies() , open("cookies.pkl","wb"))
और बाद में उन्हें वापस जोड़ने के लिए:
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
फिर से टी करने की कोशिश करता हूं तो मुझे एक त्रुटि संदेश मिला है जिसमें कहा गया है कि "एक्सपायरी" कुंजी मान्य नहीं है। मैं मैक ओएस पर क्रोमेड्रिवर का उपयोग कर रहा हूं
जब आपको सत्र से सत्र तक कुकीज़ की आवश्यकता होती है, तो ऐसा करने का एक और तरीका है, फ़ोल्डर के रूप में प्रोफाइल का उपयोग करने के लिए, क्रोम विकल्प उपयोगकर्ता-डेटा-डीआईआर का उपयोग करें, मैं चलाता हूं:
chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com")
आप यहां उन लॉगिन कर सकते हैं जो मानव इंटरैक्शन की जांच करते हैं, मैं यह करता हूं और फिर कुकीज की मुझे हर समय आवश्यकता होती है जब मैं उस फ़ोल्डर के साथ वेबड्राइवर शुरू करता हूं तो सब कुछ वहां होता है। आप मैन्युअल रूप से एक्सटेंशन भी स्थापित कर सकते हैं और उन्हें हर सत्र में ले सकते हैं। सेकंड के समय मैं चला, सभी कुकीज़ वहाँ हैं:
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.
लाभ यह है कि आप विभिन्न सेटिंग्स और कुकीज़ के साथ कई फ़ोल्डरों का उपयोग कर सकते हैं, लोड की आवश्यकता के बिना एक्सटेंशन, कुकीज़ को अनलोड करना, इंस्टॉल करना और अनइंस्टॉल करना, सेटिंग्स बदलना, कोड के माध्यम से लॉगिन बदलना, और इस तरह प्रोग्राम ब्रेक का तर्क रखने का कोई तरीका नहीं है, आदि इसके अलावा यह हविन की तुलना में तेज है यह सब कोड द्वारा किया जाता है।
chrome_options = Options()
मुझे देता है name 'Options' is not defined
...?
from selenium.webdriver.chrome.options import Options
याद रखें, आप वर्तमान डोमेन के लिए केवल एक कुकी जोड़ सकते हैं। यदि आप अपने Google खाते के लिए कुकी जोड़ना चाहते हैं, तो करें
browser.get('http://google.com')
for cookie in cookies:
browser.add_cookie(cookie)
@Eduard Florinescu द्वारा उत्तर के आधार पर लेकिन नए कोड और लापता आयात के साथ जोड़ा गया:
$ 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()
@Roel Van de Paar द्वारा लिखे गए कोड के लिए बस थोड़ा सा संशोधन, क्योंकि सारा श्रेय उन्हें जाता है। मैं इसका उपयोग विंडोज में कर रहा हूं और यह पूरी तरह से काम कर रहा है, दोनों कुकीज़ को सेट करने और जोड़ने के लिए:
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)
यह कोड है जो मैंने विंडोज़ में उपयोग किया है, यह काम करता है।
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)
मेरा ओएस विंडोज 10 है, और क्रोम संस्करण 75.0.3770.100 है। मैंने 'उपयोगकर्ता-डेटा-डीआईआर' समाधान की कोशिश की है, काम नहीं किया। @ एरिक कालिन का समाधान भी विफल रहता है। अंत में, मैं चित्र की तरह क्रोम सेटिंग करता हूं, यह काम करता है! लेकिन यह विंडोज़ सर्वर 2012 पर काम नहीं करता है।
स्थापना