megahertz / guzzle-tor
This Guzzle middleware allows to use Tor client as a proxy
Installs: 64 374
Dependents: 1
Suggesters: 0
Security: 0
Stars: 68
Watchers: 5
Forks: 11
Open Issues: 1
Requires
- guzzlehttp/guzzle: >=6.2
Requires (Dev)
- phpunit/phpunit: 9.*
This package is auto-updated.
Last update: 2024-10-24 22:06:41 UTC
README
This Guzzle middleware allows to use Tor client as a proxy
function get_tor_ip() { $stack = new HandlerStack(); $stack->setHandler(new CurlHandler()); $stack->push(Middleware::tor()); $client = new Client(['handler' => $stack]); $response = $client->get('https://check.torproject.org/'); if (preg_match('/<strong>([\d.]+)<\/strong>/', $response->getBody(), $matches)) { return $matches[1]; } else { return null; } }
Get started
- Install composer
Follow the instruction at https://getcomposer.org/download/
- Install guzzle-tor
php composer.phar require megahertz/guzzle-tor
- (optional) Copy an example and run
cp vendor/megahertz/guzzle-tor/example.php example.php php example.php
Symfony 3/4 config DI
services: GuzzleHttp\HandlerStack: ~ app.client.tor: class: GuzzleTor\Middleware factory: ['GuzzleTor\Middleware', tor] app.client.handler_stack: factory: GuzzleHttp\HandlerStack:create class: GuzzleHttp\HandlerStack calls: - [ push, ['@app.client.tor'] ] app.client: class: GuzzleHttp\Client arguments: - {handler: '@app.client.handler_stack'} #Aliases GuzzleHttp\Client: '@app.client'
Options
General
Middleware::tor($proxy, $torControl)
- $proxy is tor socks5 port, by default '127.0.0.1:9050'
- $torControl is Tor control port, by default '127.0.0.1:9051'. Set if you want to change ip (clean circuits)
Request options
$client->get('https://check.torproject.org/', [ 'tor_new_identity' => true, 'tor_new_identity_sleep' => 15, 'tor_new_identity_timeout' => 3, 'tor_new_identity_exception' => true, 'tor_control_password' => 'password' ]);