Skip to content

Instantly share code, notes, and snippets.

@rolandinsh
Forked from megaxorg/PHP-CURL-Tor-Tutorial.md
Last active August 11, 2023 18:44
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rolandinsh/c5823d0c9776166c87fa13bce48d6557 to your computer and use it in GitHub Desktop.
Save rolandinsh/c5823d0c9776166c87fa13bce48d6557 to your computer and use it in GitHub Desktop.
PHP: CURL Requests with Tor

#CURL Connections with Tor

Install Apache, PHP, CURL & Tor with apt-get

sudo apt-get install -y apache2 php php-curl tor

Tor creates a proxy on your mashine with port 9050 for SOCKS5 connections.

class Proxy {

	private $ch, $proxy;

	function __construct() {

		$torSocks5Proxy = "socks5://127.0.0.1:9050";

		$this->ch = curl_init();

		curl_setopt( $this->ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5 );
		curl_setopt( $this->ch, CURLOPT_PROXY, $torSocks5Proxy );
		curl_setopt( $this->ch, CURLOPT_SSL_VERIFYPEER, false );
		curl_setopt( $this->ch, CURLOPT_FOLLOWLOCATION, true );
		curl_setopt( $this->ch, CURLOPT_RETURNTRANSFER, false );
		curl_setopt( $this->ch, CURLOPT_HEADER, false );

	}

	public function curl( $url, $postParameter = null ) {

		if( sizeof( $postParameter ) > 0 )
			curl_setopt( $this->ch, CURLOPT_POSTFIELDS, $postParameter );

		curl_setopt( $this->ch, CURLOPT_URL, $url );
		return curl_exec( $this->ch );

	}

	function __destruct() {

		curl_close( $this->ch );

	}

}

Use the Proxy class for a GET request.

$proxy = new Proxy();
echo $proxy->curl( "http://check.torproject.org" );

Use the Proxy class for a POST request

$proxy = new Proxy();
$parameter = array(
	'parameter1' => 'value1',
	'parameter2' => 'value2'
	);
echo $proxy->curl( "http://check.torproject.org", $parameter );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment