Security News
Introducing the Socket Python SDK
The initial version of the Socket Python SDK is now on PyPI, enabling developers to more easily interact with the Socket REST API in Python projects.
A user-friendly wrapper for pycurl that simplifies HTTP requests (fork of request_curl with a few changes)
A user-friendly wrapper for pycurl that simplifies HTTP requests.
Use the package manager pip to install curlquest.
NOTE: You need Python and libcurl installed on your system to use or build pycurl. Some RPM distributions of curl/libcurl do not include everything necessary to build pycurl, in which case you need to install the developer specific RPM which is usually called curl-dev.
pip install curlquest
A curlquest session manages cookies, connection pooling, and configurations.
Basic Usage:
import curlquest
s = curlquest.Session()
s.get('https://httpbin.org/get') # returns <Response [200]>
s.request('GET', 'https://httpbin.org/get') # returns <Response [200]>
Using a Context Manager
import curlquest
with curlquest.Session() as session:
session.get('https://httpbin.org/get') # returns <Response [200]>
The response object is similar to that of the requests library.
import curlquest
s = curlquest.Session()
r = s.get("https://httpbin.org/get")
print(r) # prints response object
print(r.status_code) # prints status code
print(r.content) # prints response content in bytes
print(r.text) # prints response content as text
print(r.json) # prints response content as JSON
print(r.url) # prints response URL
print(r.headers) # prints response headers
Format the proxy as a string.
import curlquest
s = curlquest.Session()
# supports authentication: r = s.get("https://httpbin.org/get", proxies="ip:port:user:password")
r = s.get("https://httpbin.org/get", proxies="ip:port")
HTTP2 is disabled by default.
import curlquest
s = curlquest.Session(http2=True)
r = s.get("https://httpbin.org/get")
You can specify custom cipher suites as an array.
import curlquest
cipher_suite = [
"AES128-SHA256",
"AES256-SHA256",
"AES128-GCM-SHA256",
"AES256-GCM-SHA384"
]
s = curlquest.Session(cipher_suite=cipher_suite)
r = s.get("https://httpbin.org/get")
Set debug to True to print raw input and output headers.
import curlquest
s = curlquest.Session()
r = s.get("https://httpbin.org/get", debug=True)
Specify custom headers as a dictionary.
import curlquest
s = curlquest.Session()
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
}
r = s.get("https://httpbin.org/get", headers=headers)
import curlquest
s = curlquest.Session()
# sending form data
form_data = {"key": "value"}
response = s.post("https://httpbin.org/post", data=form_data)
# sending json data
json_data = {"key": "value"}
response = s.post("https://httpbin.org/post", json=json_data)
To use curlquest with curl-impersonate, opt for our custom Docker image by either pulling or building it. The image comes with curlquest and curl-impersonate pre-installed. Check below for a demonstration on impersonating firefox98 tls-fingerprint and curlquest with our custom Docker Image.
Note: This feature is still considered experimental. Only tested with firefox fingerprint
To pull the Docker image:
docker pull h3adex/request-curl-impersonate:latest
docker run --rm -it h3adex/request-curl-impersonate
Example Python code for a target website:
import curlquest
from curlquest import FIREFOX98_CIPHER_SUITE, FIREFOX98_HEADERS
# impersonates ff98
session = curlquest.Session(
http2=True,
cipher_suite=FIREFOX98_CIPHER_SUITE,
headers=FIREFOX98_HEADERS
)
response = session.get("https://tls.browserleaks.com/json")
# <Response [200]>
# "ja3_hash":"25e9b0dd5b8e9330b206eae87e885e19"
# same result as:
# docker run --rm lwthiker/curl-impersonate:0.5-ff curl_ff98 https://tls.browserleaks.com/json
We welcome contributions through pull requests. Before making major changes, please open an issue to discuss your intended changes. Also, ensure to update relevant tests.
Ennis Blank Ennis.Blank@fau.de, Mauritz Uphoff Mauritz.Uphoff@hs-osnabrueck.de
FAQs
A user-friendly wrapper for pycurl that simplifies HTTP requests (fork of request_curl with a few changes)
We found that curlquest demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The initial version of the Socket Python SDK is now on PyPI, enabling developers to more easily interact with the Socket REST API in Python projects.
Security News
Floating dependency ranges in npm can introduce instability and security risks into your project by allowing unverified or incompatible versions to be installed automatically, leading to unpredictable behavior and potential conflicts.
Security News
A new Rust RFC proposes "Trusted Publishing" for Crates.io, introducing short-lived access tokens via OIDC to improve security and reduce risks associated with long-lived API tokens.