Name | uproxier JSON |
Version |
0.1.7
JSON |
| download |
home_page | None |
Summary | HTTP/HTTPS proxy with rules engine and web UI |
upload_time | 2025-09-11 15:31:50 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | None |
keywords |
proxy
mitmproxy
sse
rules
mock
http
https
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# UProxier · 代理服务器
基于 mitmproxy 的完整代理软件解决方案,支持 HTTP/HTTPS 代理、请求拦截、规则配置和 Web 界面。
## 功能特性
- 🔄 **HTTP/HTTPS 代理**: 完整代理,支持 HTTPS 解密开关
- 🛡️ **证书管理**: 自动生成/校验/安装 mitmproxy CA 证书
- 📋 **规则引擎**: 多动作叠加、优先级、命中短路
- mock_response / modify_headers / modify_content / redirect
- delay_response / conditional_response
- 💾 **持久化**: 可将抓到的请求以 JSONL 持久化
- 🌐 **Web 界面**: 实时流量、点击行查看详情、搜索、清空
- 🎯 **CLI 工具**: start/init/cert/version/examples & 静默模式
- 📊 **抓包控制**: 流媒体/大文件开关、阈值与二进制保存控制
- 🔧 **配置管理**: YAML 配置 + CLI 覆盖
## 安装
```bash
pip install uproxier
```
### 依赖要求
- Python 3.8+
- OpenSSL (用于证书生成)
## 快速开始
### 1. 启动代理
```bash
uproxier start
```
首次启动会自动在用户目录生成 `~/.uproxier/` CA 证书。
### 2. 安装证书
**Web 界面下载**:打开 Web 界面右上角"扫码下载证书",移动设备用浏览器访问下载链接安装。
**命令行安装**:
```bash
uproxier cert
# 选择安装到系统,或按提示手动安装
```
### 3. 配置代理
在浏览器/设备中配置代理设置:
- 代理地址: `<本机IP>`
- 端口: `8001`
## 使用说明
### 命令行工具
#### 主要命令
**启动代理服务器**
```bash
uproxier start \
--host 0.0.0.0 \ # 代理服务器监听地址
--port 8001 \ # 代理服务器端口
--web-port 8002 \ # Web 界面端口
--config <path> \ # 配置文件路径
--save ./logs/traffic.jsonl \ # 保存请求数据到文件
--save-format jsonl \ # 保存格式
--enable-https \ # 启用 HTTPS 解密
--disable-https \ # 禁用 HTTPS 解密
--silent # 静默模式
--daemon # 后台模式启动
```
**证书管理**
```bash
uproxier cert # 管理证书(生成、安装、清理)
```
**服务器控制**
```bash
uproxier status # 查看服务器状态
uproxier stop # 停止后台运行的服务器
```
**规则示例管理**
```bash
uproxier examples --list # 列出所有可用示例
uproxier examples --readme # 显示示例说明文档
uproxier examples --show <文件名> # 显示指定示例内容
uproxier examples --copy <文件名> # 复制示例到当前目录
```
**其他命令**
```bash
uproxier --verbose # 详细输出
uproxier --version # 显示版本信息
uproxier --help # 显示帮助信息
```
## API 使用
UProxier 提供了完整的 Python API,支持阻塞和非阻塞两种启动方式。
### 快速示例
**阻塞启动**:
```python
from proxy_server import ProxyServer
proxy = ProxyServer("config.yaml")
proxy.start("0.0.0.0", 8001, 8002) # 阻塞启动
```
**异步启动**:
```python
from proxy_server import ProxyServer
proxy = ProxyServer("config.yaml", silent=True)
proxy.start_async("0.0.0.0", 8001, 8002) # 非阻塞启动
# 继续执行其他代码...
proxy.stop()
```
### 详细文档
完整的 API 使用指南请参考:[API_USAGE.md](https://github.com/Huang-Jacky/UProxier/blob/main/API_USAGE.md)
包含:
- 阻塞启动 vs 异步启动的使用场景
- 完整的参数说明和示例
- 进程管理和状态检查
- 错误处理和最佳实践
- 测试和自动化场景示例
## 规则配置
项目支持在 `config.yaml` 中定义规则,包含请求/响应修改、Mock、延迟等。
### 基本规则结构
```yaml
- name: 规则名称
enabled: true
priority: 100
stop_after_match: false
match:
host: "^api\\.example\\.com$"
path: "^/v1/data$"
method: "GET"
request_pipeline: [] # 请求阶段动作
response_pipeline: # 响应阶段动作
- action: mock_response
params:
status_code: 200
content: '{"status": "success"}'
```
### 常用动作
**请求阶段 (request_pipeline)**
- `set_header`: 设置请求头
- `remove_header`: 删除请求头
- `rewrite_url`: URL 重写
- `redirect`: 重定向请求
**响应阶段 (response_pipeline)**
- `mock_response`: 完全替换响应
- `set_status`: 设置状态码
- `set_header`: 设置响应头
- `replace_body`: 响应体替换
- `delay`: 延迟响应
### 查看示例
```bash
uproxier examples --list # 列出所有示例
uproxier examples --readme # 查看示例说明
uproxier examples --copy 01_set_header.yaml # 复制示例
```
## Web 界面
访问 `http://<本机IP>:8002` 查看 Web 界面,功能包括:
- 📊 实时流量统计
- 📋 请求/响应详情
- 🔍 流量搜索
- 💾 数据导出
## 证书管理
### 自动安装
```bash
uproxier cert
# 选择 "安装证书到系统"
```
### 手动安装
⚠️ **重要提醒**:只安装证书文件,不要安装包含私钥的文件!
**证书文件位置**:`~/.uproxier/`
- `mitmproxy-ca-cert.pem` - PEM 格式证书(推荐)
- `mitmproxy-ca-cert.der` - DER 格式证书
**安装命令**:
```bash
# macOS
security add-trusted-cert -d -r trustRoot -k ~/Library/Keychains/login.keychain ~/.uproxier/mitmproxy-ca-cert.pem
# Windows
certutil -addstore -f ROOT ~/.uproxier/mitmproxy-ca-cert.der
# Linux
sudo cp ~/.uproxier/mitmproxy-ca-cert.pem /usr/local/share/ca-certificates/mitmproxy-ca.crt
sudo update-ca-certificates
```
## 故障排除
### 常见问题
1. **安装后 uproxier 命令不可用**
```bash
# 如果使用 pyenv,检查版本设置
pyenv global 3.10.6 # 替换为你的 Python 版本
# 确保 Python bin 目录在 PATH 中
export PATH="$(python3 -c "import sys; print(sys.executable.replace('python3', ''))"):$PATH"
```
2. **证书错误**
- 确保证书已正确安装到系统
- 重新生成证书:`uproxier cert`
3. **端口被占用**
- 使用不同的端口:`uproxier start --port 8003`
4. **规则不生效**
- 检查规则配置是否正确
- 确认规则已启用
- 查看日志输出
5. **HTTPS 连接失败**
- 确保证书已安装
- 检查浏览器代理设置
## 许可证
MIT License
## 参考
- [mitmproxy](https://mitmproxy.org/)
- [GitHub 仓库](https://github.com/Huang-Jacky/UProxier)
Raw data
{
"_id": null,
"home_page": null,
"name": "uproxier",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "proxy, mitmproxy, sse, rules, mock, http, https",
"author": null,
"author_email": "huangjincheng <your-email@example.com>",
"download_url": "https://files.pythonhosted.org/packages/cf/e8/6e77fa62b8a5417fd6702532bc63ff47380066d04c4c44311ac651460fa8/uproxier-0.1.7.tar.gz",
"platform": null,
"description": "# UProxier \u00b7 \u4ee3\u7406\u670d\u52a1\u5668\n\n\u57fa\u4e8e mitmproxy \u7684\u5b8c\u6574\u4ee3\u7406\u8f6f\u4ef6\u89e3\u51b3\u65b9\u6848\uff0c\u652f\u6301 HTTP/HTTPS \u4ee3\u7406\u3001\u8bf7\u6c42\u62e6\u622a\u3001\u89c4\u5219\u914d\u7f6e\u548c Web \u754c\u9762\u3002\n\n## \u529f\u80fd\u7279\u6027\n\n- \ud83d\udd04 **HTTP/HTTPS \u4ee3\u7406**: \u5b8c\u6574\u4ee3\u7406\uff0c\u652f\u6301 HTTPS \u89e3\u5bc6\u5f00\u5173\n- \ud83d\udee1\ufe0f **\u8bc1\u4e66\u7ba1\u7406**: \u81ea\u52a8\u751f\u6210/\u6821\u9a8c/\u5b89\u88c5 mitmproxy CA \u8bc1\u4e66\n- \ud83d\udccb **\u89c4\u5219\u5f15\u64ce**: \u591a\u52a8\u4f5c\u53e0\u52a0\u3001\u4f18\u5148\u7ea7\u3001\u547d\u4e2d\u77ed\u8def\n - mock_response / modify_headers / modify_content / redirect\n - delay_response / conditional_response\n- \ud83d\udcbe **\u6301\u4e45\u5316**: \u53ef\u5c06\u6293\u5230\u7684\u8bf7\u6c42\u4ee5 JSONL \u6301\u4e45\u5316\n- \ud83c\udf10 **Web \u754c\u9762**: \u5b9e\u65f6\u6d41\u91cf\u3001\u70b9\u51fb\u884c\u67e5\u770b\u8be6\u60c5\u3001\u641c\u7d22\u3001\u6e05\u7a7a\n- \ud83c\udfaf **CLI \u5de5\u5177**: start/init/cert/version/examples & \u9759\u9ed8\u6a21\u5f0f\n- \ud83d\udcca **\u6293\u5305\u63a7\u5236**: \u6d41\u5a92\u4f53/\u5927\u6587\u4ef6\u5f00\u5173\u3001\u9608\u503c\u4e0e\u4e8c\u8fdb\u5236\u4fdd\u5b58\u63a7\u5236\n- \ud83d\udd27 **\u914d\u7f6e\u7ba1\u7406**: YAML \u914d\u7f6e + CLI \u8986\u76d6\n\n## \u5b89\u88c5\n\n```bash\npip install uproxier\n```\n\n### \u4f9d\u8d56\u8981\u6c42\n\n- Python 3.8+\n- OpenSSL (\u7528\u4e8e\u8bc1\u4e66\u751f\u6210)\n\n## \u5feb\u901f\u5f00\u59cb\n\n### 1. \u542f\u52a8\u4ee3\u7406\n\n```bash\nuproxier start\n```\n\n\u9996\u6b21\u542f\u52a8\u4f1a\u81ea\u52a8\u5728\u7528\u6237\u76ee\u5f55\u751f\u6210 `~/.uproxier/` CA \u8bc1\u4e66\u3002\n\n### 2. \u5b89\u88c5\u8bc1\u4e66\n\n**Web \u754c\u9762\u4e0b\u8f7d**\uff1a\u6253\u5f00 Web \u754c\u9762\u53f3\u4e0a\u89d2\"\u626b\u7801\u4e0b\u8f7d\u8bc1\u4e66\"\uff0c\u79fb\u52a8\u8bbe\u5907\u7528\u6d4f\u89c8\u5668\u8bbf\u95ee\u4e0b\u8f7d\u94fe\u63a5\u5b89\u88c5\u3002\n\n**\u547d\u4ee4\u884c\u5b89\u88c5**\uff1a\n\n```bash\nuproxier cert\n# \u9009\u62e9\u5b89\u88c5\u5230\u7cfb\u7edf\uff0c\u6216\u6309\u63d0\u793a\u624b\u52a8\u5b89\u88c5\n```\n\n### 3. \u914d\u7f6e\u4ee3\u7406\n\n\u5728\u6d4f\u89c8\u5668/\u8bbe\u5907\u4e2d\u914d\u7f6e\u4ee3\u7406\u8bbe\u7f6e\uff1a\n\n- \u4ee3\u7406\u5730\u5740: `<\u672c\u673aIP>`\n- \u7aef\u53e3: `8001`\n\n## \u4f7f\u7528\u8bf4\u660e\n\n### \u547d\u4ee4\u884c\u5de5\u5177\n\n#### \u4e3b\u8981\u547d\u4ee4\n\n**\u542f\u52a8\u4ee3\u7406\u670d\u52a1\u5668**\n\n```bash\nuproxier start \\\n --host 0.0.0.0 \\ # \u4ee3\u7406\u670d\u52a1\u5668\u76d1\u542c\u5730\u5740\n --port 8001 \\ # \u4ee3\u7406\u670d\u52a1\u5668\u7aef\u53e3\n --web-port 8002 \\ # Web \u754c\u9762\u7aef\u53e3\n --config <path> \\ # \u914d\u7f6e\u6587\u4ef6\u8def\u5f84\n --save ./logs/traffic.jsonl \\ # \u4fdd\u5b58\u8bf7\u6c42\u6570\u636e\u5230\u6587\u4ef6\n --save-format jsonl \\ # \u4fdd\u5b58\u683c\u5f0f\n --enable-https \\ # \u542f\u7528 HTTPS \u89e3\u5bc6\n --disable-https \\ # \u7981\u7528 HTTPS \u89e3\u5bc6\n --silent # \u9759\u9ed8\u6a21\u5f0f\n --daemon # \u540e\u53f0\u6a21\u5f0f\u542f\u52a8\n```\n\n**\u8bc1\u4e66\u7ba1\u7406**\n\n```bash\nuproxier cert # \u7ba1\u7406\u8bc1\u4e66\uff08\u751f\u6210\u3001\u5b89\u88c5\u3001\u6e05\u7406\uff09\n```\n\n**\u670d\u52a1\u5668\u63a7\u5236**\n\n```bash\nuproxier status # \u67e5\u770b\u670d\u52a1\u5668\u72b6\u6001\nuproxier stop # \u505c\u6b62\u540e\u53f0\u8fd0\u884c\u7684\u670d\u52a1\u5668\n```\n\n**\u89c4\u5219\u793a\u4f8b\u7ba1\u7406**\n\n```bash\nuproxier examples --list # \u5217\u51fa\u6240\u6709\u53ef\u7528\u793a\u4f8b\nuproxier examples --readme # \u663e\u793a\u793a\u4f8b\u8bf4\u660e\u6587\u6863\nuproxier examples --show <\u6587\u4ef6\u540d> # \u663e\u793a\u6307\u5b9a\u793a\u4f8b\u5185\u5bb9\nuproxier examples --copy <\u6587\u4ef6\u540d> # \u590d\u5236\u793a\u4f8b\u5230\u5f53\u524d\u76ee\u5f55\n```\n\n**\u5176\u4ed6\u547d\u4ee4**\n\n```bash\nuproxier --verbose # \u8be6\u7ec6\u8f93\u51fa\nuproxier --version # \u663e\u793a\u7248\u672c\u4fe1\u606f\nuproxier --help # \u663e\u793a\u5e2e\u52a9\u4fe1\u606f\n```\n\n## API \u4f7f\u7528\n\nUProxier \u63d0\u4f9b\u4e86\u5b8c\u6574\u7684 Python API\uff0c\u652f\u6301\u963b\u585e\u548c\u975e\u963b\u585e\u4e24\u79cd\u542f\u52a8\u65b9\u5f0f\u3002\n\n### \u5feb\u901f\u793a\u4f8b\n\n**\u963b\u585e\u542f\u52a8**\uff1a\n```python\nfrom proxy_server import ProxyServer\n\nproxy = ProxyServer(\"config.yaml\")\nproxy.start(\"0.0.0.0\", 8001, 8002) # \u963b\u585e\u542f\u52a8\n```\n\n**\u5f02\u6b65\u542f\u52a8**\uff1a\n```python\nfrom proxy_server import ProxyServer\n\nproxy = ProxyServer(\"config.yaml\", silent=True)\nproxy.start_async(\"0.0.0.0\", 8001, 8002) # \u975e\u963b\u585e\u542f\u52a8\n# \u7ee7\u7eed\u6267\u884c\u5176\u4ed6\u4ee3\u7801...\nproxy.stop()\n```\n\n### \u8be6\u7ec6\u6587\u6863\n\n\u5b8c\u6574\u7684 API \u4f7f\u7528\u6307\u5357\u8bf7\u53c2\u8003\uff1a[API_USAGE.md](https://github.com/Huang-Jacky/UProxier/blob/main/API_USAGE.md)\n\n\u5305\u542b\uff1a\n- \u963b\u585e\u542f\u52a8 vs \u5f02\u6b65\u542f\u52a8\u7684\u4f7f\u7528\u573a\u666f\n- \u5b8c\u6574\u7684\u53c2\u6570\u8bf4\u660e\u548c\u793a\u4f8b\n- \u8fdb\u7a0b\u7ba1\u7406\u548c\u72b6\u6001\u68c0\u67e5\n- \u9519\u8bef\u5904\u7406\u548c\u6700\u4f73\u5b9e\u8df5\n- \u6d4b\u8bd5\u548c\u81ea\u52a8\u5316\u573a\u666f\u793a\u4f8b\n\n## \u89c4\u5219\u914d\u7f6e\n\n\u9879\u76ee\u652f\u6301\u5728 `config.yaml` \u4e2d\u5b9a\u4e49\u89c4\u5219\uff0c\u5305\u542b\u8bf7\u6c42/\u54cd\u5e94\u4fee\u6539\u3001Mock\u3001\u5ef6\u8fdf\u7b49\u3002\n\n### \u57fa\u672c\u89c4\u5219\u7ed3\u6784\n\n```yaml\n- name: \u89c4\u5219\u540d\u79f0\n enabled: true\n priority: 100\n stop_after_match: false\n match:\n host: \"^api\\\\.example\\\\.com$\"\n path: \"^/v1/data$\"\n method: \"GET\"\n request_pipeline: [] # \u8bf7\u6c42\u9636\u6bb5\u52a8\u4f5c\n response_pipeline: # \u54cd\u5e94\u9636\u6bb5\u52a8\u4f5c\n - action: mock_response\n params:\n status_code: 200\n content: '{\"status\": \"success\"}'\n```\n\n### \u5e38\u7528\u52a8\u4f5c\n\n**\u8bf7\u6c42\u9636\u6bb5 (request_pipeline)**\n\n- `set_header`: \u8bbe\u7f6e\u8bf7\u6c42\u5934\n- `remove_header`: \u5220\u9664\u8bf7\u6c42\u5934\n- `rewrite_url`: URL \u91cd\u5199\n- `redirect`: \u91cd\u5b9a\u5411\u8bf7\u6c42\n\n**\u54cd\u5e94\u9636\u6bb5 (response_pipeline)**\n\n- `mock_response`: \u5b8c\u5168\u66ff\u6362\u54cd\u5e94\n- `set_status`: \u8bbe\u7f6e\u72b6\u6001\u7801\n- `set_header`: \u8bbe\u7f6e\u54cd\u5e94\u5934\n- `replace_body`: \u54cd\u5e94\u4f53\u66ff\u6362\n- `delay`: \u5ef6\u8fdf\u54cd\u5e94\n\n### \u67e5\u770b\u793a\u4f8b\n\n```bash\nuproxier examples --list # \u5217\u51fa\u6240\u6709\u793a\u4f8b\nuproxier examples --readme # \u67e5\u770b\u793a\u4f8b\u8bf4\u660e\nuproxier examples --copy 01_set_header.yaml # \u590d\u5236\u793a\u4f8b\n```\n\n## Web \u754c\u9762\n\n\u8bbf\u95ee `http://<\u672c\u673aIP>:8002` \u67e5\u770b Web \u754c\u9762\uff0c\u529f\u80fd\u5305\u62ec\uff1a\n\n- \ud83d\udcca \u5b9e\u65f6\u6d41\u91cf\u7edf\u8ba1\n- \ud83d\udccb \u8bf7\u6c42/\u54cd\u5e94\u8be6\u60c5\n- \ud83d\udd0d \u6d41\u91cf\u641c\u7d22\n- \ud83d\udcbe \u6570\u636e\u5bfc\u51fa\n\n## \u8bc1\u4e66\u7ba1\u7406\n\n### \u81ea\u52a8\u5b89\u88c5\n\n```bash\nuproxier cert\n# \u9009\u62e9 \"\u5b89\u88c5\u8bc1\u4e66\u5230\u7cfb\u7edf\"\n```\n\n### \u624b\u52a8\u5b89\u88c5\n\n\u26a0\ufe0f **\u91cd\u8981\u63d0\u9192**\uff1a\u53ea\u5b89\u88c5\u8bc1\u4e66\u6587\u4ef6\uff0c\u4e0d\u8981\u5b89\u88c5\u5305\u542b\u79c1\u94a5\u7684\u6587\u4ef6\uff01\n\n**\u8bc1\u4e66\u6587\u4ef6\u4f4d\u7f6e**\uff1a`~/.uproxier/`\n\n- `mitmproxy-ca-cert.pem` - PEM \u683c\u5f0f\u8bc1\u4e66\uff08\u63a8\u8350\uff09\n- `mitmproxy-ca-cert.der` - DER \u683c\u5f0f\u8bc1\u4e66\n\n**\u5b89\u88c5\u547d\u4ee4**\uff1a\n\n```bash\n# macOS\nsecurity add-trusted-cert -d -r trustRoot -k ~/Library/Keychains/login.keychain ~/.uproxier/mitmproxy-ca-cert.pem\n\n# Windows\ncertutil -addstore -f ROOT ~/.uproxier/mitmproxy-ca-cert.der\n\n# Linux\nsudo cp ~/.uproxier/mitmproxy-ca-cert.pem /usr/local/share/ca-certificates/mitmproxy-ca.crt\nsudo update-ca-certificates\n```\n\n## \u6545\u969c\u6392\u9664\n\n### \u5e38\u89c1\u95ee\u9898\n\n1. **\u5b89\u88c5\u540e uproxier \u547d\u4ee4\u4e0d\u53ef\u7528**\n ```bash\n # \u5982\u679c\u4f7f\u7528 pyenv\uff0c\u68c0\u67e5\u7248\u672c\u8bbe\u7f6e\n pyenv global 3.10.6 # \u66ff\u6362\u4e3a\u4f60\u7684 Python \u7248\u672c\n \n # \u786e\u4fdd Python bin \u76ee\u5f55\u5728 PATH \u4e2d\n export PATH=\"$(python3 -c \"import sys; print(sys.executable.replace('python3', ''))\"):$PATH\"\n ```\n\n2. **\u8bc1\u4e66\u9519\u8bef**\n - \u786e\u4fdd\u8bc1\u4e66\u5df2\u6b63\u786e\u5b89\u88c5\u5230\u7cfb\u7edf\n - \u91cd\u65b0\u751f\u6210\u8bc1\u4e66\uff1a`uproxier cert`\n\n3. **\u7aef\u53e3\u88ab\u5360\u7528**\n - \u4f7f\u7528\u4e0d\u540c\u7684\u7aef\u53e3\uff1a`uproxier start --port 8003`\n\n4. **\u89c4\u5219\u4e0d\u751f\u6548**\n - \u68c0\u67e5\u89c4\u5219\u914d\u7f6e\u662f\u5426\u6b63\u786e\n - \u786e\u8ba4\u89c4\u5219\u5df2\u542f\u7528\n - \u67e5\u770b\u65e5\u5fd7\u8f93\u51fa\n\n5. **HTTPS \u8fde\u63a5\u5931\u8d25**\n - \u786e\u4fdd\u8bc1\u4e66\u5df2\u5b89\u88c5\n - \u68c0\u67e5\u6d4f\u89c8\u5668\u4ee3\u7406\u8bbe\u7f6e\n\n## \u8bb8\u53ef\u8bc1\n\nMIT License\n\n## \u53c2\u8003\n\n- [mitmproxy](https://mitmproxy.org/)\n- [GitHub \u4ed3\u5e93](https://github.com/Huang-Jacky/UProxier)\n",
"bugtrack_url": null,
"license": null,
"summary": "HTTP/HTTPS proxy with rules engine and web UI",
"version": "0.1.7",
"project_urls": null,
"split_keywords": [
"proxy",
" mitmproxy",
" sse",
" rules",
" mock",
" http",
" https"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "6e17383c767a8fca37ebca178bb463da3315b6964b22e1589eeb7a5843ff43ba",
"md5": "dc31d9b9aed19faa2569264a55f6614e",
"sha256": "78bdbd9c512e9debaa68632b6a49f2c1c111befa18f5bf79adf4f658f8a74dd9"
},
"downloads": -1,
"filename": "uproxier-0.1.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "dc31d9b9aed19faa2569264a55f6614e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 66727,
"upload_time": "2025-09-11T15:31:37",
"upload_time_iso_8601": "2025-09-11T15:31:37.996973Z",
"url": "https://files.pythonhosted.org/packages/6e/17/383c767a8fca37ebca178bb463da3315b6964b22e1589eeb7a5843ff43ba/uproxier-0.1.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cfe86e77fa62b8a5417fd6702532bc63ff47380066d04c4c44311ac651460fa8",
"md5": "6a3582fb18e192a6ccb55ce4baa5f93e",
"sha256": "79b46ec343f1cd2a6f74a158838e73ceb228bc18b8f1ac2a64b83f0c4f522a9a"
},
"downloads": -1,
"filename": "uproxier-0.1.7.tar.gz",
"has_sig": false,
"md5_digest": "6a3582fb18e192a6ccb55ce4baa5f93e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 65850,
"upload_time": "2025-09-11T15:31:50",
"upload_time_iso_8601": "2025-09-11T15:31:50.777700Z",
"url": "https://files.pythonhosted.org/packages/cf/e8/6e77fa62b8a5417fd6702532bc63ff47380066d04c4c44311ac651460fa8/uproxier-0.1.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-11 15:31:50",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "uproxier"
}