Skip to main content

Wrapper for requests that saves cookie data between script runs, typically for login sessions

Project description

RequestsLoginSession

PyPI PyPI - Status PyPI - Downloads Code Climate maintainability Code Climate technical debt Pylint score Code Climate coverage Tests status GitHub last commit License PRs Welcome

requestsloginsession is a simple wrapper for requests.Session() that saves the data locally via pickle to allow session information to be recalled on subsequent script runs without needing to relogin. All the attributes from requests are available.

Install

From PyPi:

pip install requestsloginsession

Or use the latest commit:

git clone https://github.com/damonjavert/requestsloginsession.git
cd requestsloginsession
python setup.py install

Features

  • Saves cookie data to a local file via pickle and uses it to send cookie data in subsequent requests.
  • Cookie data saved has an expiry time - max_session_time_seconds, after which requestsloginsession will not send it, or you can force it not to be used with force_login.
  • Login success can be tested with a specific URL - login_test_url and string - login_test_string to be found on the page.
  • A proxy can be used.
  • Customisable user_agent string.

Example usage

>>> from requestsloginsession import RequestsLoginSession
>>> login_url = "http://httpbingo.org/"
>>> login_data = { 'username' : 'example', 'password' : 'example' }
>>> mysession = RequestsLoginSession(login_url, login_data)
>>> r = mysession.retrieve_content("http://httpbingo.org/cookies/set?k1=v1234&k2=v5678")
>>>
 $ file httpbingo.org_session.dat
httpbingo.org_session.dat: data
 $ # We have now exited python, when we start a new interpreter we can request httpbingo
 $ # to show our cookies and the `k1=v1234&k2=v5678` data will now be shown:
 $ python3

>>> from requestsloginsession import RequestsLoginSession
>>> login_url = "http://httpbingo.org/"
>>> login_data = { 'username' : 'example', 'password' : 'example' }
>>> mysession = RequestsLoginSession(login_url, login_data)
>>> r = mysession.retrieve_content("http://httpbingo.org/cookies")
>>> r.json()
{'k1': 'v1234', 'k2': 'v5678'}
>>> r.status_code
200
>>> r.text
'{\n  "k1": "v1234",\n  "k2": "v5678"\n}\n'

FAQ

Why not just use requests.Session() directly?

Of course you can do, but this module makes life easier by handling the cookie data for you and allowing the cookie data to survive multiple runs of your script, so you do not need to relogin each time.

I have an API key for the site I am requesting, do I still need to use this?

No, you probably do not. This module is designed to access sites where you need to authenticate before you can access it. Any modern API does not need this and you send an API key in each request. - If you have an API key you can just use requests directly.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

requestsloginsession-0.7.1.tar.gz (18.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

requestsloginsession-0.7.1-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

Details for the file requestsloginsession-0.7.1.tar.gz.

File metadata

  • Download URL: requestsloginsession-0.7.1.tar.gz
  • Upload date:
  • Size: 18.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for requestsloginsession-0.7.1.tar.gz
Algorithm Hash digest
SHA256 b228d2828e7e91dc5aaa7adcd13d9c01968eba90deb27305e3084c2fce938738
MD5 98fa3bec5e69b21c1242faea6a700379
BLAKE2b-256 7f59717b66afca5b4f1d053abd87b068c60c5373326dc83ea53ee1c7de823f80

See more details on using hashes here.

File details

Details for the file requestsloginsession-0.7.1-py3-none-any.whl.

File metadata

File hashes

Hashes for requestsloginsession-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 67d9e243c2b356fd408aded9345e8befa1383841c0fed566b2f87c537db59ce1
MD5 0f5400c9f067aba598f69b156f51a6ea
BLAKE2b-256 cd6e3cb3e47b41c583db9ba5cf5329997efd5911aa0106002bdbb03efa08c69a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page