I would like to integrate python Selenium and Requests modules to authenticate on a website.
I am using the following code:
import requests from selenium import webdriver driver = webdriver.Firefox() url = "some_url" #a redirect to a login page occurs driver.get(url) #the login page is displayed #making a persistent connection to authenticate params = {'os_username':'username', 'os_password':'password'} s = requests.Session() resp = s.post(url, params) #I get a 200 status_code #passing the cookies to the driver driver.add_cookie(s.cookies.get_dict())
The problem is that when I enter the browser the login authentication is still there when I try to access the url
even though I passed the cookies generated from the requests session.
How can I modify the code above to get through the authentication web-page?
Can anyone help me on this issue?
Your help is much appreciated.
Best Regards.
Extends Selenium WebDriver classes to include the request function from the Requests library, while doing all the needed cookie and request headers handling.
I finally found out what the problem was. Before making the post
request with the requests
library, I should have passed the cookies of the browser first. The code is as follows:
import requests from selenium import webdriver driver = webdriver.Firefox() url = "some_url" #a redirect to a login page occurs driver.get(url) #storing the cookies generated by the browser request_cookies_browser = driver.get_cookies() #making a persistent connection using the requests library params = {'os_username':'username', 'os_password':'password'} s = requests.Session() #passing the cookies generated from the browser to the session c = [s.cookies.set(c['name'], c['value']) for c in request_cookies_browser] resp = s.post(url, params) #I get a 200 status_code #passing the cookie of the response to the browser dict_resp_cookies = resp.cookies.get_dict() response_cookies_browser = [{'name':name, 'value':value} for name, value in dict_resp_cookies.items()] c = [driver.add_cookie(c) for c in response_cookies_browser] #the browser now contains the cookies generated from the authentication driver.get(url)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With