How to Use Cookies in Python Requests
I Am Trying to Login to a Page and Access Another Link in the Page. Payload={'Username'=,'Password'=} with Session() as S: R = C. Post(, Data=Payload) Print R...
I am trying to login to a page and access another link in the page.
payload={'username'=<username>,'password'=<password>}
with session() as s:
r = c.post(<URL>, data=payload)
print r
print r.content
This is giving me a "405 Not Allowed" error. I checked the post method details using chrome developer tools and could see an api (URL/api/auth). I posted to that URL with the payload and it was working and i was getting a response similar to what i could see in the developer.
Unfortunately when trying to 'get' another url after login, i am still getting the content from the login page. Why is the login not sticking? Should i use cookies? I am a newbie, so i don't really know how to work with cookies.
4 Answers
You can use a session object. It stores the cookies so you can make requests, and it handles the cookies for you
s = requests.Session()
# all cookies received will be stored in the session object
s.post(')
s.get(')
Docs:
You can also save the cookie data to an external file, and then reload them to keep session persistent without having to login every time you run the script:
From the documentation:
get cookie from response
url = ' r = requests.get(url) r.cookies{'example_cookie_name': 'example_cookie_value'}give cookie back to server on subsequent request
url = ' cookies = {'cookies_are': 'working'} r = requests.get(url, cookies=cookies)`
Summary (@Freek Wiekmeijer, @gtalarico) other's answer:
Logic of Login
- Many resource(pages, api) need
authentication, then can access, otherwise405 Not Allowed - Common
authentication=grant accessmethod are:cookieauth headerBasic xxxAuthorization xxx