Advertisement
fascinated

websocket client via socks proxy

Dec 2nd, 2019
448
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.47 KB | None | 0 0
  1. #!/usr/bin/php
  2. <?php
  3.  
  4. require __DIR__ . '/vendor/autoload.php';
  5.  
  6. use Clue\React\Socks\Client;
  7. use React\Socket\Connector;
  8. use React\Stream\WritableResourceStream;
  9.  
  10. $loop = React\EventLoop\Factory::create();
  11.  
  12.  
  13. global $stdout;
  14. $stdout = new WritableResourceStream(STDOUT, $loop);
  15.  
  16.  
  17. $client = new Client('127.0.0.1:1080', new Connector($loop));
  18. $proxy_connector = new Connector($loop, array(
  19.     'tcp' => $client,
  20.     'timeout' => 3.0
  21. ));
  22.  
  23. $connector = new Ratchet\Client\Connector($loop, $proxy_connector);
  24.  
  25.  
  26. // connect directly
  27. //$connector = new Ratchet\Client\Connector($loop);  
  28.  
  29.  
  30. $app = function (Ratchet\Client\WebSocket $conn) use ($loop, $connector, &$app) {
  31.  
  32.     global $stdout;
  33.     $stdout->write("Connection is open\n");
  34.  
  35.     $conn->on('message', function (\Ratchet\RFC6455\Messaging\MessageInterface $msg) {
  36.         global $stdout;
  37.         $stdout->write($msg);
  38.     });
  39.  
  40.     $conn->on('close', function ($code = null, $reason = null) use ($loop, $connector, $app) {
  41.         global $stdout;
  42.         $stdout->write("connection closed ({$code} - {$reason})\n");
  43.     });
  44.  
  45. };
  46.  
  47.  
  48. function connect_socket($connector, $loop, $app) {
  49.    
  50.     $connector('wss://cooler.cloud/magic/')
  51.         ->then($app, function (\Exception $e) use ($loop) {
  52.             global $stdout;
  53.             $stdout->write("Could not connect: {$e->getMessage()}\n");
  54.             $loop->stop();
  55.     });
  56.  
  57. }
  58.  
  59. connect_socket($connector, $loop, $app);
  60.  
  61. $loop->run();
  62.  
  63. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement