fix: 修复代理问题
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
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
|
||||
|
||||
[](https://github.com/romis2012/httpx-socks/actions/workflows/ci.yml)
|
||||
[](https://codecov.io/gh/romis2012/httpx-socks)
|
||||
[](https://pypi.python.org/pypi/httpx-socks)
|
||||
<!--
|
||||
[](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
|
||||
```
|
||||
Reference in New Issue
Block a user