1. Go to this page and download the library: Download clue/socks-react library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
clue / socks-react example snippets
y = new Clue\React\Socks\Client('127.0.0.1:1080');
$connector = new React\Socket\Connector(array(
'tcp' => $proxy,
'dns' => false
));
$browser = new React\Http\Browser($connector);
$browser->get('https://google.com/')->then(function (Psr\Http\Message\ResponseInterface $response) {
var_dump($response->getHeaders(), (string) $response->getBody());
}, function (Exception $e) {
echo 'Error: ' . $e->getMessage() . PHP_EOL;
});
art a new SOCKS proxy server
$socks = new Clue\React\Socks\Server();
// listen on 127.0.0.1:1080
$socket = new React\Socket\SocketServer('127.0.0.1:1080');
$socks->listen($socket);
$proxy = new Clue\React\Socks\Client('127.0.0.1:1080');
$proxy = new Clue\React\Socks\Client('127.0.0.1');
$connector = new React\Socket\Connector(array(
'dns' => '127.0.0.1',
'tcp' => array(
'bindto' => '192.168.10.1:0'
)
));
$proxy = new Clue\React\Socks\Client('my-socks-server.local:1080', $connector);
$proxy = new Clue\React\Socks\Client('127.0.0.1:1080');
$proxy->connect('tcp://www.google.com:80')->then(function (React\Socket\ConnectionInterface $connection) {
echo 'connected to www.google.com:80';
$connection->write("GET / HTTP/1.0\r\n\r\n");
$connection->on('data', function ($chunk) {
echo $chunk;
});
});
$proxy = new Clue\React\Socks\Client('127.0.0.1:1080');
$connector = new React\Socket\Connector(array(
'tcp' => $proxy,
'dns' => false
));
$connector->connect('tcp://www.google.com:80')->then(function (React\Socket\ConnectionInterface $connection) {
echo 'connected to www.google.com:80';
$connection->write("GET / HTTP/1.0\r\n\r\n");
$connection->on('data', function ($chunk) {
echo $chunk;
});
});
$proxy = new Clue\React\Socks\Client('127.0.0.1:1080');
$connector = new React\Socket\Connector(array(
'tcp' => $proxy,
'dns' => false
));
$connector->connect('tls://www.google.com:443')->then(function (React\Socket\ConnectionInterface $connection) {
// proceed with just the plain text data
// everything is encrypted/decrypted automatically
echo 'connected to SSL encrypted www.google.com';
$connection->write("GET / HTTP/1.0\r\n\r\n");
$connection->on('data', function ($chunk) {
echo $chunk;
});
});
$proxy = new Clue\React\Socks\Client('127.0.0.1:1080');
$connector = new React\Socket\Connector(array(
'tcp' => $proxy,
'dns' => false
));
$browser = new React\Http\Browser($connector);
$browser->get('https://example.com/')->then(function (Psr\Http\Message\ResponseInterface $response) {
var_dump($response->getHeaders(), (string) $response->getBody());
}, function (Exception $e) {
echo 'Error: ' . $e->getMessage() . PHP_EOL;
});
// all three forms are equivalent
$proxy = new Clue\React\Socks\Client('127.0.0.1:1080');
$proxy = new Clue\React\Socks\Client('socks://127.0.0.1:1080');
$proxy = new Clue\React\Socks\Client('socks5://127.0.0.1:1080');
$proxy = new Clue\React\Socks\Client('socks4://127.0.0.1:1080');
$proxy = new Clue\React\Socks\Client('127.0.0.1:1080');
$connector = new React\Socket\Connector(array(
'tcp' => $proxy,
'dns' => false
));
$proxy = new Clue\React\Socks\Client('127.0.0.1:1080');
// set up Connector which uses Google's public DNS (8.8.8.8)
$connector = new React\Socket\Connector(array(
'tcp' => $proxy,
'dns' => '8.8.8.8'
));
$proxy = new Clue\React\Socks\Client('alice:[email protected]:1080');
// throws InvalidArgumentException
new Clue\React\Socks\Client('socks4://alice:[email protected]:1080');
// https via the proxy chain "MiddlemanSocksServer -> TargetSocksServer -> TargetHost"
// please note how the client uses TargetSocksServer (not MiddlemanSocksServer!),
// which in turn then uses MiddlemanSocksServer.
// this creates a TCP/IP connection to MiddlemanSocksServer, which then connects
// to TargetSocksServer, which then connects to the TargetHost
$middle = new Clue\React\Socks\Client('127.0.0.1:1080');
$target = new Clue\React\Socks\Client('example.com:1080', $middle);
$connector = new React\Socket\Connector(array(
'tcp' => $target,
'dns' => false
));
$connector->connect('tls://www.google.com:443')->then(function (React\Socket\ConnectionInterface $connection) {
// …
});
$proxy = new Clue\React\Socks\Client('127.0.0.1:1080');
$connector = new React\Socket\Connector(array(
'tcp' => $proxy,
'dns' => false,
'timeout' => 3.0
));
$connector->connect('tcp://google.com:80')->then(function (React\Socket\ConnectionInterface $connection) {
// connection succeeded within 3.0 seconds
});
$proxy = new Clue\React\Socks\Client('sockss://127.0.0.1:1080');
$proxy = new Clue\React\Socks\Client('socks4s://127.0.0.1:1080');
$proxy = new Clue\React\Socks\Client('sockss://alice:[email protected]:1080');
$proxy = new Clue\React\Socks\Client('socks+unix:///tmp/proxy.sock');
$proxy = new Clue\React\Socks\Client('socks4+unix:///tmp/proxy.sock');
$proxy = new Clue\React\Socks\Client('socks+unix://alice:password@/tmp/proxy.sock');
$socks = new Clue\React\Socks\Server();
// listen on 127.0.0.1:1080
$socket = new React\Socket\SocketServer('127.0.0.1:1080');
$socks->listen($socket);
$connector = new React\Socket\Connector(array(
'dns' => '127.0.0.1',
'tcp' => array(
'bindto' => '192.168.10.1:0'
)
));
$socks = new Clue\React\Socks\Server(null, $connector);
$socks = new Clue\React\Socks\Server(null, null, function ($username, $password, $remote) {
// $remote is a full URI à la socks://alice:[email protected]:1234
// or sockss://alice:[email protected]:1234 for SOCKS over TLS
// or may be null when remote is unknown (SOCKS over Unix Domain Sockets)
// useful for logging or extracting parts, such as the remote IP
$ip = parse_url($remote, PHP_URL_HOST);
return ($username === 'root' && $password === 'secret' && $ip === '127.0.0.1');
});
$socks = new Clue\React\Socks\Server(null, null, function ($username, $password) use ($db) {
// pseudo-code: query database for given authentication details
return $db->query(
'SELECT 1 FROM users WHERE name = ? AND password = ?',
array($username, $password)
)->then(function (QueryResult $result) {
// ensure we find exactly one match in the database
return count($result->resultRows) === 1;
});
});
// set next SOCKS server example.com:1080 as target
$proxy = new Clue\React\Socks\Client('alice:[email protected]:1080');
// start a new server which forwards all connections to the other SOCKS server
$socks = new Clue\React\Socks\Server(null, $proxy);
// listen on 127.0.0.1:1080
$socket = new React\Socket\SocketServer('127.0.0.1:1080');
$socks->listen($socket);
$socks = new Clue\React\Socks\Server();
// listen on tls://127.0.0.1:1080 with the given server certificate
$socket = new React\Socket\SocketServer('tls://127.0.0.1:1080', array(
'tls' => array(
'local_cert' => __DIR__ . '/localhost.pem',
)
));
$socks->listen($socket);
$socks = new Clue\React\Socks\Server();
// listen on /tmp/proxy.sock
$socket = new React\Socket\SocketServer('unix:///tmp/proxy.sock');
$socks->listen($socket);
$proxy = new Clue\React\Socks\Client('127.0.0.1:1080');
$proxy->connect('tcp://www.google.com:80')->then(function (React\Socket\ConnectionInterface $connection) {
$connection->write("GET / HTTP/1.0\r\n\r\n");
$connection->on('data', function ($chunk) {
echo $chunk;
});
});
$proxy = new Clue\React\Socks\Client('socks+unix:///tmp/proxy.sock');
$proxy->connect('tcp://www.google.com:80')->then(function (React\Socket\ConnectionInterface $connection) {
$connection->write("GET / HTTP/1.0\r\n\r\n");
$connection->on('data', function ($chunk) {
echo $chunk;
});
});
$proxy = new Clue\React\Socks\Client('127.0.0.1:9050');
$proxy->connect('tcp://www.google.com:80')->then(function (React\Socket\ConnectionInterface $connection) {
$connection->write("GET / HTTP/1.0\r\n\r\n");
$connection->on('data', function ($chunk) {
echo $chunk;
});
});
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.