Skip to content
A php-proxy-vpnside script with https and post supported by
Branch: master
Clone or download
Avi Hayev
Avi Hayev init commit
Latest commit f2e44e9 Dec 18, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
phpunit.xml init commit Dec 18, 2019

PHP-Proxy Project on

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. The implementation of the script:


Install using composer:

composer require vpnside-proxy/proxy

Here is Example

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

use Proxy\Proxy;
use Proxy\Adapter\Guzzle\GuzzleAdapter;
use Proxy\Filter\RemoveEncodingFilter;
use Zend\Diactoros\ServerRequestFactory;

// Create a PSR7 request based on the current browser request.
$request = ServerRequestFactory::fromGlobals();

// Create a guzzle client
$guzzle = new GuzzleHttp\Client();

// Create the proxy instance
$proxy = new Proxy(new GuzzleAdapter($guzzle));

// Add a response filter that removes the encoding headers.
$proxy->filter(new RemoveEncodingFilter());

// Forward the request and get the response.
$response = $proxy->forward($request)->to('');

// Output response to the browser.
(new Zend\Diactoros\Response\SapiEmitter)->emit($response);

How to set Filters

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

$response = $proxy
	->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;
You can’t perform that action at this time.