weijiajia/http-proxy-manager
Composer 安装命令:
composer require weijiajia/http-proxy-manager
包简介
A Laravel package for managing HTTP proxies from various proxy service providers with a unified API
关键字:
README 文档
README
A Laravel package for managing HTTP proxies from various proxy service providers with a unified API.
简介
HTTP Proxy Manager 是一个用于管理多个代理服务提供商的 Laravel 包。它提供了一个统一的接口来处理不同代理服务商的 API,使您可以轻松切换和管理 HTTP 代理,而无需修改应用程序代码。
该包基于 Saloon PHP 构建,提供了一个流畅且一致的 API 来处理 HTTP 请求。
功能特点
- 统一的接口管理多个代理服务提供商
- 支持动态代理和账号密码认证代理
- 可配置的代理提供商设置
- 与 Laravel 框架无缝集成
- 基于驱动的设计,便于扩展
支持的代理服务提供商
- 华声代理 (HuaSheng)
- Storm Proxies
- 豌豆代理 (Wandou)
- IP Royal
- Smart 代理 (Smartdaili)
- Oxylabs
- Proxyscrape
安装
通过 Composer 安装:
composer require weijiajia/http-proxy-manager
配置
发布配置文件
首先,发布配置文件:
php artisan vendor:publish --provider="Weijiajia\HttpProxyManager\ProxyManagerServiceProvider"
这将在 config/http-proxy-manager.php 创建配置文件。
环境变量
在您的 .env 文件中设置默认的代理驱动:
PROXY_DRIVER=huashengdaili
配置文件
配置文件 http-proxy-manager.php 包含了所有支持的代理服务提供商的设置。您可以根据需要修改这些设置:
return [ 'name' => 'proxyManager', 'default' => env('PROXY_DRIVER', 'huashengdaili'), 'providers' => [ 'huashengdaili' => [ 'default_mode' => 'dynamic', 'connector' => \Weijiajia\HttpProxyManager\Drivers\HuaSheng\HuaShengConnector::class, 'mode' => [ 'dynamic' => [ 'request' => \Weijiajia\HttpProxyManager\Drivers\HuaSheng\Request\Dynamic::class, 'dto' => \Weijiajia\HttpProxyManager\Drivers\HuaSheng\Data\Dynamic::class, 'default_config' => [ // 默认配置项... ], ], ], ], // 其他代理服务提供商配置... ], ];
使用方法
基本用法
use Weijiajia\HttpProxyManager\ProxyManager; // 使用默认驱动获取代理 $proxyManager = new ProxyManager(app()); $proxy = $proxyManager->connector()->default(); // 或使用特定驱动 $proxy = $proxyManager->connector('huashengdaili')->default();
获取动态代理
// 获取动态代理 $proxies = $proxyManager->connector()->dynamic(); // 获取代理信息 foreach ($proxies as $proxy) { echo $proxy->getIp(); // 代理 IP echo $proxy->getPort(); // 代理端口 echo $proxy->getProtocol(); // 代理协议 }
获取账号密码认证代理
// 获取账号密码认证代理 $proxy = $proxyManager->connector()->accountPassword(); echo $proxy->getIp(); // 代理 IP echo $proxy->getPort(); // 代理端口 echo $proxy->getUsername(); // 用户名 echo $proxy->getPassword(); // 密码 echo $proxy->getProtocol(); // 代理协议
不使用 Laravel 框架的用法
本包也可以在非 Laravel 项目中使用。以下示例展示了如何直接使用连接器发送请求。
使用花生代理连接器
use Weijiajia\HttpProxyManager\Drivers\HuaSheng\HuaShengConnector; use Weijiajia\HttpProxyManager\Drivers\HuaSheng\Request\Dynamic; use Weijiajia\HttpProxyManager\Drivers\HuaSheng\Data\Dynamic as DynamicData; // 创建数据对象 $data = new DynamicData([ 'time' => 10, // IP 有效时长(分钟) 'count' => 1, // 提取的 IP 数量 'protocol' => 'HTTP', // IP 协议 'type' => 'json' // 返回类型 ]); // 创建请求对象 $request = new Dynamic(['data' => $data]); // 创建连接器 $connector = new HuaShengConnector($request); // 发送请求并获取动态代理 $proxies = $connector->dynamic(); // 使用代理 foreach ($proxies as $proxy) { echo "代理 IP: " . $proxy->getIp() . "\n"; echo "代理端口: " . $proxy->getPort() . "\n"; echo "代理协议: " . $proxy->getProtocol() . "\n"; }
使用 IP Royal 账号密码认证代理
use Weijiajia\HttpProxyManager\Drivers\IpRoyal\IpRoyalConnector; use Weijiajia\HttpProxyManager\Drivers\IpRoyal\Request\Residential; use Weijiajia\HttpProxyManager\Drivers\IpRoyal\Data\Residential as ResidentialData; // 创建数据对象 $data = new ResidentialData([ 'protocol' => 'http', 'sticky_session' => false, 'session_duration' => 10, 'endpoint' => 'geo.iproyal.com' ]); // 创建请求对象 $request = new Residential(['data' => $data]); // 创建连接器 $connector = new IpRoyalConnector($request); // 发送请求并获取账号密码认证代理 $proxy = $connector->accountPassword(); // 使用代理 echo "代理 IP: " . $proxy->getIp() . "\n"; echo "代理端口: " . $proxy->getPort() . "\n"; echo "用户名: " . $proxy->getUsername() . "\n"; echo "密码: " . $proxy->getPassword() . "\n"; echo "代理 URL: " . $proxy->getUrl() . "\n";
在 HTTP 客户端中使用代理
use GuzzleHttp\Client; // 假设我们已经获取了代理信息 $proxy = $connector->default(); // 使用 Guzzle HTTP 客户端发送请求 $client = new Client([ 'proxy' => $proxy->getUrl(), 'auth' => [ $proxy->getUsername(), $proxy->getPassword() ] ]); // 通过代理发送请求 $response = $client->get('https://api.ipify.org?format=json'); $ipInfo = json_decode($response->getBody(), true); echo "通过代理显示的 IP: " . $ipInfo['ip'] . "\n";
代理模式
该包支持两种主要的代理模式:
- 动态代理 (
dynamic): 提供动态变化的 IP 地址 - 账号密码代理 (
flow): 提供需要用户名和密码认证的代理
自定义代理提供商
您可以通过扩展基类来添加自己的代理提供商:
- 创建 Connector 类扩展
ProxyConnector - 创建 Request 类扩展
ProxyRequest并实现DynamicInterface或AccountPasswordInterface - 创建 DTO 类扩展
Proxy或Proxys - 在配置文件中添加您的新代理提供商
贡献
欢迎对此项目做出贡献!请随时提交问题或拉取请求。
许可证
本项目使用 MIT 许可证 - 详情请查看 LICENSE 文件。
weijiajia/http-proxy-manager 适用场景与选型建议
weijiajia/http-proxy-manager 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 40 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 03 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「http」 「proxy」 「laravel」 「stormproxies」 「proxy-manager」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 weijiajia/http-proxy-manager 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 weijiajia/http-proxy-manager 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 weijiajia/http-proxy-manager 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Lazy loading for middleware and request handlers
repository php library
http客户端
Easily add Excepct-CT header to your project
Build mini web servers in PHP for testing
Get working public proxy list for free by PubProxy (No API key required).
统计信息
- 总下载量: 40
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 23
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-03-08