Skip to main content

Proxy (HTTP, SOCKS) transports for httpx

Project description

httpx-socks

CI Coverage Status PyPI version

The httpx-socks package provides proxy transports for httpx client. SOCKS4(a), SOCKS5(h), HTTP (tunneling) proxy supported. It uses python-socks for core proxy functionality.

Requirements

  • Python >= 3.6
  • httpx>=0.21.0
  • python-socks>=2.0.0
  • async-timeout>=3.0.1 (optional)
  • trio>=0.16.0 (optional)

Installation

only sync proxy support:

pip install httpx-socks

to include optional asyncio support (it requires async-timeout):

pip install httpx-socks[asyncio]

to include optional trio support:

pip install httpx-socks[trio]

Usage

sync transport

import httpx
from httpx_socks import SyncProxyTransport

def fetch(url):
    transport = SyncProxyTransport.from_url('socks5://user:password@127.0.0.1:1080')
    with httpx.Client(transport=transport) as client:
        res = client.get(url)
        return res.text

async transport (asyncio, trio)

import httpx
from httpx_socks import AsyncProxyTransport

async def fetch(url):
    transport = AsyncProxyTransport.from_url('socks5://user:password@127.0.0.1:1080')
    async with httpx.AsyncClient(transport=transport) as client:
        res = await client.get(url)
        return res.text

secure proxy connections (aka "HTTPS proxies", experimental feature, both sync and async support)

import ssl
import httpx
from httpx_socks import AsyncProxyTransport

async def fetch(url):
    proxy_ssl = ssl.SSLContext(ssl.PROTOCOL_TLS)
    proxy_ssl.verify_mode = ssl.CERT_REQUIRED
    proxy_ssl.load_verify_locations(...)
    
    transport = AsyncProxyTransport.from_url('http://user:password@127.0.0.1:8080', proxy_ssl=proxy_ssl)
    async with httpx.AsyncClient(transport=transport) as client:
        res = await client.get(url)
        return res.text

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

httpx-socks-0.8.1.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

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

httpx_socks-0.8.1-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file httpx-socks-0.8.1.tar.gz.

File metadata

  • Download URL: httpx-socks-0.8.1.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.31.0 setuptools/58.0.4 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.7.11

File hashes

Hashes for httpx-socks-0.8.1.tar.gz
Algorithm Hash digest
SHA256 7598b239daaabfceac5dfc4f708bd8db9f5cae763177cf449d6ac711e7666f32
MD5 bb8d90630c256893182ded2bd7927fd1
BLAKE2b-256 eecaea1539713e0b6ecba9a823cd6d8994e2f9d57e41f52da671fc99f1b6c5f1

See more details on using hashes here.

File details

Details for the file httpx_socks-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: httpx_socks-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 12.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.31.0 setuptools/58.0.4 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.7.11

File hashes

Hashes for httpx_socks-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 be631cdfd71a833fbae89fd3793adaae27e554618b5cbafc39635fdc0e98d48d
MD5 f921e3fe4ffdfc7d174aae303e75d73b
BLAKE2b-256 e369f6307f8fbd248f3da81163707ec11ab26727a50ce5fc79b46c0e4971f28a

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