Skip to main content

Requests package with QOL improvements and anti-bot detection measures

Project description

ak_requests

Requests package with QOL improvements and anti-bot detection measures

View Demo · Documentation · Report Bug · Request Feature


GitHub commit activity GitHub last commit tests

Table of Contents

1. About the Project

ak_requests is a Python package that provides an interface for automating requests tasks using requests package. It comes with quality of life improvements like retires, custom redirects, spacing out requests and shuffling requests to not trigger anti-bot measures

1.1. Features

  • Bulk requests handling
  • Built-in retries and timeouts
  • Can log processes to file
  • Handles downloads of files/videos
  • Implemented default rate-limiting checks and process
  • Session objects are serialized to be able to save/load sessions from file
  • Can choose to handle exceptions or skip it completely with RAISE_EXCEPTIONS attribute
  • Can support both basic .basic_auth() and OAuth .oauth2_auth() authentications.

2. Getting Started

2.1. Installation

2.1.1. Production

Download the repo and install with flit

pip install flit
flit install --deps production

Alternatively, you can use pip

pip install ak_requests

2.1.2. Development

Install with flit

  flit install --pth-file

3. Usage

from ak_requests import RequestsSession

# Initialize session
session = RequestsSession(log=False, retries=5, log_level='error') 

## Can update session level variables
session.MIN_REQUEST_GAP = 1.5   # seconds, Change min time bet. requests
session.RAISE_ERRORS = False    # raises RequestErrors, else returns None; defaults to True

# Update custom header
session.update_header({'Connection': 'keep-alive'})

# set cookies
session.update_cookies([{'name':'has_recent_activity', 'value':'1'}])

# Get requests
res = session.get('https://reqres.in/api/users?page=2', data={}, proxies = {} ) # Can accept any requests parameters

# Make bulk requests
urls = ['https://reqres.in/api/users?page=2', 'https://reqres.in/api/unknown']
responses = session.bulk_get(urls)

# use beautifulsoup
from ak_requests import soupify
res = session.get('https://reqres.in/api/users?page=2')
soup = soupify(res)

## or 
soup, res = session.soup('https://reqres.in/api/users?page=2')

## Also works for bulk requests
soups, ress = session.bulk_soup(urls)

# Download files
## Check if file is downloadble
session.downloadble('https://www.youtube.com/watch?v=9bZkp7q19f0')  #False

session.downloadble('http://google.com/favicon.ico') #True

session.download(
  url = 'http://google.com/favicon.ico',  #URL to download
  fifopath='C:\\', #Can be folderpath, filename or filepath. If existing folder specified - will extract filename from url contents
  confirm_downloadble = False #Will return `None`, if url not downloadble
)

# Download videos
from pathlib import Path
video_info = session.video(url='https://www.youtube.com/watch?v=BaW_jenozKc', 
              folderpath=Path('.'),
              audio_only=False) #Downloads the video to specified path and returns dict of video info

# Save/Restore session to/from file
## Save the session state to a file
session.save_session('session_state.pkl')

## Later, you can load the session state back
restored_session = RequestsSession.load_session('session_state.pkl')

# Authentication
session.basic_auth(username="johndoe", password="12345678") ## basic auth
session.oauth2_auth(token='x0-xxxxxxxxxxxxxxxxxxxxxxxx')    ## OAuth authentication

4. Roadmap

  • Proxy
  • Asynchronous Requests
  • Response Caching
  • Request Preprocessing and Postprocessing
  • File Upload Support

5. License

See LICENSE for more information.

6. Contact

Arun Kishore - @rpakishore

Project Link: https://github.com/rpakishore/ak_requests

7. Acknowledgements

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

ak_requests-0.1.0.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

ak_requests-0.1.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file ak_requests-0.1.0.tar.gz.

File metadata

  • Download URL: ak_requests-0.1.0.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.31.0

File hashes

Hashes for ak_requests-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5c2446bd357d629b3530e11877d51fb52c71ef494e78ed75aa0543158dc9ae33
MD5 7f11cbfec0f35782193d5226d0912ce7
BLAKE2b-256 ae23ec90692cd5a949dec5f038f5e85b47b638679f3ff5f65b25a7a0c9c58f2e

See more details on using hashes here.

File details

Details for the file ak_requests-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ak_requests-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 818deec8a6d72e81a7192cc6dd2067242d92fe1fe30de5b4e84a514bd55915a4
MD5 7bfadb49052b4f209b9c61ec979b4651
BLAKE2b-256 ac8abef01afc7012e2a8826f89d03dcf0a241ffce3b1e368d37bc3d4d92752cc

See more details on using hashes here.

Supported by

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