পাইথনের সেলেনিয়াম ওয়েবড্রাইভারের সমস্ত কুকি কীভাবে একটি টেক্সট-ফাইলে সংরক্ষণ করতে পারি, তারপরে সেগুলি লোড করব? ডকুমেন্টেশন getCookies ফাংশন সম্পর্কে অনেক কিছুই বলে না।
পাইথনের সেলেনিয়াম ওয়েবড্রাইভারের সমস্ত কুকি কীভাবে একটি টেক্সট-ফাইলে সংরক্ষণ করতে পারি, তারপরে সেগুলি লোড করব? ডকুমেন্টেশন 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")
আপনি এখানে লগইনগুলি করতে পারেন যা মানুষের মিথস্ক্রিয়া যাচাই করে, আমি এটি করি এবং তারপরে এখন আমার প্রয়োজন কুকিগুলি প্রত্যেকবার folder ফোল্ডারটি দিয়ে সেখানে ওয়েবড্রাইভার শুরু করে everything আপনি এক্সটেনশানগুলি ম্যানুয়ালি ইনস্টল করতে পারেন এবং প্রতিটি সেশনে সেগুলি রাখতে পারেন। সেকোন সময় আমি চালানোর সময়, সমস্ত কুকি রয়েছে:
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
মনে রাখবেন, আপনি বর্তমান ডোমেনের জন্য কেবল একটি কুকি যোগ করতে পারেন। আপনি যদি নিজের গুগল অ্যাকাউন্টের জন্য কোনও কুকি যুক্ত করতে চান তবে করুন
browser.get('http://google.com')
for cookie in cookies:
browser.add_cookie(cookie)
@ এডওয়ার্ড ফ্লোরিয়েন্সকু উত্তর অনুসারে কিন্তু নতুন কোড এবং অনুপস্থিত আমদানির সাথে যুক্ত:
$ 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()
@ রোল ভ্যান ডি পায়ার দ্বারা লিখিত কোডের জন্য কেবলমাত্র একটি সামান্য পরিবর্তন, কারণ সমস্ত কৃতিত্ব তাঁর কাছে যায়। আমি এটি উইন্ডোতে ব্যবহার করছি এবং এটি কুকিজ সেট এবং যুক্ত করার জন্য উভয়ই নিখুঁতভাবে কাজ করছে:
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। আমি 'ইউজার-ডেটা-ডির' সমাধান চেষ্টা করেছি, কার্যকর হয়নি। @ এরিক ক্লিনের সমাধানটিও ব্যর্থ হয় try অবশেষে, আমি ছবির মতো ক্রোম সেটিংটি তৈরি করি, এটি কাজ করে! তবে উইন্ডোজ সার্ভার ২০১২ এ এটি কার্যকর হয়নি।
বিন্যাস