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
Table of Contents
- 1. About the Project
- 2. Getting Started
- 3. Usage
- 4. Roadmap
- 5. License
- 6. Contact
- 7. Acknowledgements
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c2446bd357d629b3530e11877d51fb52c71ef494e78ed75aa0543158dc9ae33 |
|
MD5 | 7f11cbfec0f35782193d5226d0912ce7 |
|
BLAKE2b-256 | ae23ec90692cd5a949dec5f038f5e85b47b638679f3ff5f65b25a7a0c9c58f2e |
File details
Details for the file ak_requests-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: ak_requests-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.31.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 818deec8a6d72e81a7192cc6dd2067242d92fe1fe30de5b4e84a514bd55915a4 |
|
MD5 | 7bfadb49052b4f209b9c61ec979b4651 |
|
BLAKE2b-256 | ac8abef01afc7012e2a8826f89d03dcf0a241ffce3b1e368d37bc3d4d92752cc |