Files
wechatAiclaw/.venv/lib/python3.9/site-packages/httpx_socks-0.9.2.dist-info/METADATA
2026-03-15 17:16:05 +08:00

102 lines
2.9 KiB
Plaintext

Metadata-Version: 2.1
Name: httpx-socks
Version: 0.9.2
Summary: Proxy (HTTP, SOCKS) transports for httpx
Home-page: https://github.com/romis2012/httpx-socks
Author: Roman Snegirev
Author-email: snegiryev@gmail.com
License: Apache 2
Keywords: httpx asyncio socks socks5 socks4 http proxy
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: httpx<0.28.0,>=0.21.0
Requires-Dist: httpcore<2.0,>=0.17.3
Requires-Dist: python-socks>=2.0.0
Provides-Extra: asyncio
Requires-Dist: async-timeout>=3.0.1; extra == "asyncio"
Provides-Extra: trio
Requires-Dist: trio>=0.16.0; extra == "trio"
# httpx-socks
[![CI](https://github.com/romis2012/httpx-socks/actions/workflows/ci.yml/badge.svg)](https://github.com/romis2012/httpx-socks/actions/workflows/ci.yml)
[![Coverage Status](https://codecov.io/gh/romis2012/httpx-socks/branch/master/graph/badge.svg)](https://codecov.io/gh/romis2012/httpx-socks)
[![PyPI version](https://badge.fury.io/py/httpx-socks.svg)](https://pypi.python.org/pypi/httpx-socks)
<!--
[![Downloads](https://pepy.tech/badge/httpx-socks/month)](https://pepy.tech/project/httpx-socks)
-->
The `httpx-socks` package provides proxy transports for [httpx](https://github.com/encode/httpx) client.
SOCKS4(a), SOCKS5(h), HTTP (tunneling) proxy supported.
It uses [python-socks](https://github.com/romis2012/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
```python
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)
```python
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)
```python
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
```