Skip to content

Repository files navigation

PHP Proxy

Build StatusCoverage Status

This is a HTTP/HTTPS proxy script that forwards requests to a different server and returns the response. The Proxy class uses PSR7 request/response objects as input/output, and uses Guzzle to do the actual HTTP request.

Installation

Install using composer:

composer require jenssegers/proxy

Example

The following example creates a request object, based on the current browser request, and forwards it to example.com. The RemoveEncodingFilter removes the encoding headers from the original response so that the current webserver can set these correctly.

useProxy\Proxy;
useProxy\Adapter\Guzzle\GuzzleAdapter;
useProxy\Filter\RemoveEncodingFilter;
useLaminas\Diactoros\ServerRequestFactory;
// Create a PSR7 request based on the current browser request.$request = ServerRequestFactory::fromGlobals();
// Create a guzzle client$guzzle = newGuzzleHttp\Client();
// Create the proxy instance$proxy = newProxy(newGuzzleAdapter($guzzle));
// Add a response filter that removes the encoding headers.$proxy->filter(newRemoveEncodingFilter());
// Forward the request and get the response.$response = $proxy->forward($request)->to('http://example.com');
// Output response to the browser.
(newLaminas\HttpHandlerRunner\Emitter\SapiEmitter)->emit($response);

Filters

You can apply filters to the requests and responses using the middleware strategy:

$response = $proxy
->forward($request)
->filter(function ($request, $response, $next) {
// Manipulate the request object.$request = $request->withHeader('User-Agent', 'FishBot/1.0');
// Call the next item in the middleware.$response = $next($request, $response);
// Manipulate the response object.$response = $response->withHeader('X-Proxy-Foo', 'Bar');
return$response;
})
->to('http://example.com');

About

A PHP proxy script with https and post support

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages