perfocard / gate
A package for Laravel that globally configures a proxy for all outgoing Http Client requests.
v2.0.0
2025-08-21 13:28 UTC
Requires
- php: ^8.1
- illuminate/support: ^9.0|^10.0|^11.0|^12.0
README
A lightweight package for Laravel that globally configures the Laravel HTTP Client (Illuminate\Support\Facades\Http
) to use a proxy for all outgoing requests.
Features
- Globally injects the
proxy
option into all outgoing HTTP requests - Configurable via
config/gate.php
- Simple enable/disable switch
- Throws a clear exception if misconfigured
- Supports
http
,https
,socks5
, etc.
Installation
composer require perfocard/gate
Configuration
Publish the configuration file:
php artisan vendor:publish --provider="Perfocard\Gate\GateServiceProvider" --tag=config
This will create a file at config/gate.php
:
return [ 'enabled' => env('GATE_ENABLED', false), // You can specify a single URL or an array of URLs 'urls' => env('GATE_URLS'), // e.g., http://localhost:8080 or socks5://127.0.0.1:9050 ];
In your .env
file:
GATE_ENABLED=true
GATE_URLS=http://localhost:8080,http://proxy2:8080,socks5://127.0.0.1:9050
Usage
Once enabled, all HTTP requests using Laravel's HTTP client will automatically include the proxy
option:
use Illuminate\Support\Facades\Http; $response = Http::get('https://example.com');
No manual configuration per request is needed.
If you specify multiple URLs in GATE_URLS
, Gate will automatically select one of them at random for each application run.
Notes
- If
gate.enabled = true
but no valid proxy URLs are set, aGateNotConfigured
exception will be thrown. - You can specify multiple proxy URLs (comma-separated in the env file or as an array in the config file). One of them will be selected at random.
- Internally, this package uses
Http::globalOptions()
to apply the proxy globally.
License
This package is open-sourced software licensed under the MIT license.